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