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