55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\v\bs3\fo;
 | |
| 
 | |
| use nur\A;
 | |
| use nur\b\params\IParametrable;
 | |
| use nur\b\params\Tparametrable1;
 | |
| use nur\base;
 | |
| use nur\v\base\ComponentPrintable;
 | |
| use nur\v\vo;
 | |
| 
 | |
| abstract class Control extends ComponentPrintable implements IParametrable {
 | |
|   use Tparametrable1;
 | |
| 
 | |
|   /** @var bool faut-il automatiquement créer l'id à partir de name? */
 | |
|   const AUTOID = true;
 | |
| 
 | |
|   const PARAMETRABLE_PARAMS_SCHEMA = [
 | |
|     "id" => ["?string", null, "identifiant"],
 | |
|     "name" => ["?string", null, "nom de l'élément"],
 | |
|     "value" => ["?string", null, "valeur de l'élément"],
 | |
|     "attrs" => ["?array", null, "attributs HTML génériques"],
 | |
|   ];
 | |
| 
 | |
|   function __construct(Form $form, ?array $params=null) {
 | |
|     $this->form = $form;
 | |
|     [$params, $attrs] = $this->splitParametrableParams($params);
 | |
|     if ($attrs) A::merge($params["attrs"], $attrs);
 | |
|     $this->initParametrableParams($params);
 | |
|     if (static::AUTOID) {
 | |
|       base::update_n($this->ppId, $this->ppName);
 | |
|     }
 | |
|   }
 | |
| 
 | |
|   /** @var Form */
 | |
|   protected $form;
 | |
| 
 | |
|   /** @var ?string */
 | |
|   protected $ppId;
 | |
| 
 | |
|   /** @var ?string */
 | |
|   protected $ppName;
 | |
| 
 | |
|   /** @var array|string */
 | |
|   protected $ppValue;
 | |
| 
 | |
|   /** @var ?array */
 | |
|   protected $ppAttrs;
 | |
| 
 | |
|   abstract function getControl(): array;
 | |
| 
 | |
|   function print(): void {
 | |
|     vo::write($this->getControl());
 | |
|   }
 | |
| }
 |