50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\v\bs3\fo;
 | |
| 
 | |
| use nur\b\ValueException;
 | |
| 
 | |
| class FormManager {
 | |
|   const TYPE_BASIC = "basic";
 | |
|   const TYPE_HORIZONTAL = "horizontal";
 | |
|   const TYPE_INLINE = "inline";
 | |
|   const TYPE_NAVBAR = "navbar";
 | |
|   const TYPE_NAKED = "naked";
 | |
| 
 | |
|   private $inNavbar = false;
 | |
| 
 | |
|   function isInNavbar(): bool {
 | |
|     return $this->inNavbar;
 | |
|   }
 | |
| 
 | |
|   function setInNavbar(bool $inNavbar=true): void {
 | |
|     $this->inNavbar = $inNavbar;
 | |
|   }
 | |
| 
 | |
|   function get(?string $type=null, ?array $params=null): Form {
 | |
|     if ($type === null) {
 | |
|       $type = $this->inNavbar? self::TYPE_NAVBAR: self::TYPE_HORIZONTAL;
 | |
|     }
 | |
|     switch ($type) {
 | |
|     case self::TYPE_BASIC:
 | |
|     case "form":
 | |
|     case "b":
 | |
|     case "f":
 | |
|       return new FormBasic($params);
 | |
|     case self::TYPE_HORIZONTAL:
 | |
|     case "horiz":
 | |
|     case "h":
 | |
|       return new FormHorizontal($params);
 | |
|     case self::TYPE_INLINE:
 | |
|     case "i":
 | |
|       return new FormInline($params);
 | |
|     case self::TYPE_NAVBAR:
 | |
|     case "n":
 | |
|       return new FormNavbar($params);
 | |
|     case self::TYPE_NAKED:
 | |
|       return new FormNaked($params);
 | |
|     default:
 | |
|       throw ValueException::invalid_value($type, "form type");
 | |
|     }
 | |
|   }
 | |
| }
 |