74 lines
1.8 KiB
PHP
74 lines
1.8 KiB
PHP
|
<?php
|
||
|
namespace nur\v\bs3\fo;
|
||
|
|
||
|
use nur\b\params\Tparametrable;
|
||
|
use nur\b\ValueException;
|
||
|
use nur\v\v;
|
||
|
|
||
|
class ControlSubmit extends ControlVisual {
|
||
|
use Tparametrable;
|
||
|
|
||
|
/** @var string type de champ input */
|
||
|
const INPUT_TYPE = null;
|
||
|
const AUTOID = false;
|
||
|
|
||
|
const PARAMETRABLE_PARAMS_SCHEMA = [
|
||
|
"submit" => ["?content", null, "libellé du bouton"],
|
||
|
"type" => ["?string", "button", "type de submit: button, link"],
|
||
|
"href" => "?string", # pour le type link
|
||
|
"target" => "?string", # pour le type link
|
||
|
"class" => ["?array", "btn-default"],
|
||
|
#XXX ajouter type pour contrôler le type de bouton (default, primary, etc.)
|
||
|
];
|
||
|
|
||
|
/** @var array|string */
|
||
|
protected $ppSubmit;
|
||
|
|
||
|
protected $tag, $tagAttrs;
|
||
|
|
||
|
function pp_setType(?string $type="button"): void {
|
||
|
switch ($type) {
|
||
|
case "link":
|
||
|
case "a":
|
||
|
$this->tag = "a";
|
||
|
$this->tagAttrs = null;
|
||
|
break;
|
||
|
case "button":
|
||
|
case "submit":
|
||
|
case "b":
|
||
|
$this->tag = "button";
|
||
|
$this->tagAttrs = ["type" => "submit"];
|
||
|
break;
|
||
|
default:
|
||
|
throw ValueException::invalid_value($type, "submit type");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/** @var ?string */
|
||
|
protected $ppHref;
|
||
|
|
||
|
/** @var ?string */
|
||
|
protected $ppTarget;
|
||
|
|
||
|
function getLayout(array $control): array {
|
||
|
return $this->getFgsLayout($control, true);
|
||
|
}
|
||
|
|
||
|
function getControl(): array {
|
||
|
$control = v::tag($this->tag, [
|
||
|
$this->tagAttrs,
|
||
|
"id" => $this->ppId,
|
||
|
"name" => $this->ppName,
|
||
|
"value" => $this->ppValue,
|
||
|
"href" => $this->ppHref,
|
||
|
"target" => $this->ppTarget,
|
||
|
"class" => ["btn", $this->ppClass],
|
||
|
"style" => $this->ppStyle,
|
||
|
$this->ppAttrs,
|
||
|
q($this->ppSubmit),
|
||
|
]);
|
||
|
if ($this->ppNaked) return $control;
|
||
|
else return $this->getLayout($control);
|
||
|
}
|
||
|
}
|