27 parent::__construct(
$identifier, null,$modelInstance);
33 return $this->identifier.
"-{$name}-".$this->_instanceViewer->getIdentifier();
37 if(!$this->_generated){
38 $this->_instanceViewer->setInstance($this->_modelInstance);
40 $form=$this->content[
'form'];
43 if(isset($this->_toolbar)){
48 $this->content[
'form']->setInverted(
true);
50 $this->_generated=
true;
52 return parent::compile($js,$view);
59 $values= $this->_instanceViewer->getValues();
60 $count=$this->_instanceViewer->count();
61 $separators=$this->_instanceViewer->getSeparators();
62 $headers=$this->_instanceViewer->getHeaders();
63 $wrappers=$this->_instanceViewer->getWrappers();
64 $names=$this->_instanceViewer->getProperties();
70 foreach ($values as $k=>$v){
71 $this->
_generateFields($form, [$v], $headers, $i, $wrappers,$nb++,$names[$k]??
'');
76 for($i=0;$i<$size;$i++){
77 $fields=\array_slice($values, $separators[$i]+1,$separators[$i+1]-$separators[$i]);
78 $this->
_generateFields($form, $fields, $headers, $separators[$i], $wrappers,$nb++,$names[$i]??
'');
81 if($this->_hasRules && !$this->
getForm()->hasValidationParams()){
86 protected function _generateFields($form, $values, $headers, $sepFirst, $wrappers, $nb, $name){
88 if(isset($headers[$sepFirst+1]))
89 $form->addHeader($headers[$sepFirst+1],4,
true);
90 if(isset($wrappers[$sepFirst+1])){
91 $wrapper=$wrappers[$sepFirst+1];
95 $added=$form->addField($values[0]);
97 $added=$form->addFields($values);
101 $added->wrap($wrapper[0],$wrapper[1]);
103 $this->
execHook(
'onGenerateFields',$added,$nb,$name);
112 $this->
addHook(
'onGenerateFields',$callback);
119 return $this->content[
'form'];
124 $this->_instanceViewer->addSeparatorAfter($fieldNum);
129 return $this->_instanceViewer->getSeparators();
133 $this->_instanceViewer->setSeparators($separators);
138 return $this->
_fieldAs(
function($id,$name,$value) use ($cssStyle){
140 $button->setProperty(
'type',
'reset');
142 }, $index,$attributes);
151 return $this->content[
'form'];
163 $this->_instanceViewer->addHeaderDividerBefore($index, $title);
167 public function addWrapper($index,$contentBefore,$contentAfter=null){
169 $this->_instanceViewer->addWrapper($index, $contentBefore,$contentAfter);
178 $this->setInvertedTrait($recursive);
179 $this->_inverted=$recursive;
execHook($hookKey,... $variables)
Executes the hook with key $hookKey.
addHook($hookKey, $callable)
Adds a new Hook.
static sortAssociative($array, $sortedKeys=array())