Agregar la constante del nuevo tipo en ConstantesFormInputType.php, para este caso de ejemplo agregamos el tipo color
class ConstantesFormInputType{ const ID = "id"; ... const NUMBER = "number"; const TEXT = "text"; const COLOR = "color"; ... }
En InputBaseFactory, agregar el nuevo método del nuevo tipo de input
public function mColor($model_input,$note=null,$required=null,$css = null){ return $this->inputModelBase($model_input,$note,$this->requiredDefault($required),ConstantesFormInputType::COLOR,$css); }
Dependiendo del caso, si es necesario crear otro tipo modelBase, en este caso varía bastante, así que creamos un nueva función inputColorModelBase para model que llamara a una nueva función inputColorBase del tipo mas primitivo
En este caso también necesitaremos un nuevo view, agregamos el nuevo view viewInputColor, la clase InputBaseFactory quedaría así ( solo muestro lo que cambiaría)
<?php ... class InputBaseFactory{ ... public $viewInputColor ; ... public function mColor($model_input,$note=null,$required=null,$css = null){ return $this->inputColorModelBase($model_input,$note,$this->requiredDefault($required),ConstantesFormInputType::COLOR,$css); } ... protected function inputColorModelBase($model_input,$note,$required,$type_form,$css){ return $this->inputColorBase( ... ); } .... protected function inputColorBase($id,$label,$maxlength,$note,$required,$type_form,$type_column,$css,$config_origin){ $label = $this->getLabel($label,$id); array_push($this->arrayInputs, [ $this->viewInputColor, ... ]); .... return $buildInputForm; }
Luego dependiendo quien use el Factory, debe indicar de donde tomar las view, para la librería por defecto lo usa InputModalFactory
class InputModalFactory extends InputBaseFactory { ... public $viewInputColor = 'ruta.al.input_color_modal'; ... }
Agregar el archivo blade junto a los otros input y quitar los parámetros que no aplicaría a esta vista.