135 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			135 lines
		
	
	
		
			4.7 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| namespace nur\v;
 | |
| 
 | |
| use nur\co;
 | |
| use nur\str;
 | |
| use nur\v\html5\Html5FormManager;
 | |
| use nur\v\model\IFormManager;
 | |
| 
 | |
| /**
 | |
|  * Class fo: gestion globale des formulaires
 | |
|  */
 | |
| class fo {
 | |
|   const MANAGER_CLASS = Html5FormManager::class;
 | |
| 
 | |
|   protected static $manager_class;
 | |
| 
 | |
|   /**
 | |
|    * spécifier la classe à utiliser pour instancier le gestionnaire de
 | |
|    * formulaires
 | |
|    *
 | |
|    * cette méthode *doit* être appelée avant d'appeler la méthode
 | |
|    * {@link manager()}
 | |
|    */
 | |
|   static final function set_manager_class(string $manager_class) {
 | |
|     self::$manager_class = $manager_class;
 | |
|   }
 | |
| 
 | |
|   /** @var IFormManager */
 | |
|   protected static $manager;
 | |
| 
 | |
|   static final function set_manager(IFormManager $manager) {
 | |
|     self::$manager = $manager;
 | |
|   }
 | |
| 
 | |
|   /** obtenir l'instance globale de gestionnaire de formulaire */
 | |
|   static final function manager(): IFormManager {
 | |
|     if (self::$manager === null) {
 | |
|       $manager_class = self::$manager_class;
 | |
|       if ($manager_class === null) $manager_class = static::MANAGER_CLASS;
 | |
|       self::$manager = new $manager_class();
 | |
|     }
 | |
|     return self::$manager;
 | |
|   }
 | |
| 
 | |
|   static final function __callStatic($name, $args) {
 | |
|     $name = str::us2camel($name);
 | |
|     return call_user_func_array([self::manager(), $name], $args);
 | |
|   }
 | |
| 
 | |
|   #############################################################################
 | |
| 
 | |
|   static final function reset_manager($options=null, ?array $schema=null): void { self::manager()->resetManager($options, $schema);}
 | |
| 
 | |
|   static final function push($options=null, ?array $schema=null): void { self::manager()->push($options, $schema); }
 | |
|   static final function pop(): void { self::manager()->pop(); }
 | |
| 
 | |
|   static final function started(): bool { return self::manager()->started(); }
 | |
|   static final function start($options=null, ?array $schema=null): void {
 | |
|     co::_write(self::manager()->start($options, $schema));
 | |
|   }
 | |
|   static final function end(): void {
 | |
|     co::_print(self::manager()->end());
 | |
|   }
 | |
| 
 | |
|   static final function section($options=null): void {
 | |
|     co::_write(self::manager()->section($options));
 | |
|   }
 | |
|   static final function end_section(): void {
 | |
|     co::_write(self::manager()->endSection());
 | |
|   }
 | |
| 
 | |
|   static final function group($options=null): void {
 | |
|     co::_write(self::manager()->group($options));
 | |
|   }
 | |
|   static final function end_group(): void {
 | |
|     co::_write(self::manager()->endGroup());
 | |
|   }
 | |
| 
 | |
|   static final function fixed($label, string $name, $value, ?array $options=null): void {
 | |
|     co::_write(self::manager()->fixed($label, $name, $value, $options));
 | |
|   }
 | |
| 
 | |
|   static final function hidden(string $name, $value, ?array $options=null): void {
 | |
|     co::_write(self::manager()->hidden($name, $value, $options));
 | |
|   }
 | |
|   static final function hiddens(array $values, string ...$names): void {
 | |
|     co::_write(self::manager()->hiddens($values, ...$names));
 | |
|   }
 | |
| 
 | |
|   static final function text($label, string $name, $value, ?array $options=null): void {
 | |
|     co::_write(self::manager()->text($label, $name, $value, $options));
 | |
|   }
 | |
|   static final function texts($label, array $values, string ...$names): void {
 | |
|     co::_write(self::manager()->texts($label, $values, ...$names));
 | |
|   }
 | |
| 
 | |
|   static final function password($label, string $name, $value, ?array $options=null): void {
 | |
|     co::_write(self::manager()->password($label, $name, $value, $options));
 | |
|   }
 | |
| 
 | |
|   static final function select($label, string $name, $value, ?array $options=null): void {
 | |
|     co::_write(self::manager()->select($label, $name, $value, $options));
 | |
|   }
 | |
| 
 | |
|   static final function checkbox($text, string $name, $value, ?bool $checked=null, ?array $options=null): void {
 | |
|     co::_write(self::manager()->checkbox($text, $name, $value, $checked, $options));
 | |
|   }
 | |
|   static final function checkboxes($label, string $name, $values, ?array $options=null): void {
 | |
|     co::_write(self::manager()->checkboxes($label, $name, $values, $options));
 | |
|   }
 | |
| 
 | |
|   static final function radiobutton($text, string $name, $value, ?bool $checked=null, ?array $options=null): void {
 | |
|     co::_write(self::manager()->radiobutton($text, $name, $value, $checked, $options));
 | |
|   }
 | |
|   static final function radiobuttons($label, string $name, $value, ?array $options=null): void {
 | |
|     co::_write(self::manager()->radiobuttons($label, $name, $value, $options));
 | |
|   }
 | |
| 
 | |
|   static final function textarea($label, string $name, $value, ?array $options=null): void {
 | |
|     co::_write(self::manager()->textarea($label, $name, $value, $options));
 | |
|   }
 | |
| 
 | |
|   static final function file($label, string $name, ?array $options=null): void {
 | |
|     co::_write(self::manager()->file($label, $name, $options));
 | |
|   }
 | |
| 
 | |
|   static final function submit($options=null): void {
 | |
|     co::_write(self::manager()->submit($options));
 | |
|   }
 | |
| 
 | |
|   static final function reset($options=null): void {
 | |
|     co::_write(self::manager()->reset($options));
 | |
|   }
 | |
| }
 |