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");
 | 
						|
    }
 | 
						|
  }
 | 
						|
}
 |