Skip to content

Commit 28f925e

Browse files
committed
Fix async bug + Add extra validation in Forms
1 parent 21fb759 commit 28f925e

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

Ajax/common/traits/JsUtilsAjaxTrait.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ protected function _ajax($method,$url,$responseElement="",$parameters=[]) {
4040
$this->addLoading($retour, $responseElement,$ajaxLoader);
4141
}
4242
$ajaxParameters=["url"=>"url","method"=>"'".\strtoupper($method)."'"];
43-
if(!$async){
44-
$ajaxParameters["async"]="false";
45-
}
43+
44+
$ajaxParameters["async"]=($async?"true":"false");
45+
4646
if(isset($params)){
4747
$ajaxParameters["data"]=self::_correctParams($params);
4848
}

Ajax/semantic/html/collections/form/HtmlForm.php

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
use Ajax\semantic\components\Form;
1414
use Ajax\common\html\BaseHtml;
1515
use Ajax\common\html\HtmlDoubleElement;
16+
use Ajax\semantic\components\validation\FieldValidation;
1617

1718
/**
1819
* Semantic Form component
@@ -32,6 +33,8 @@ class HtmlForm extends HtmlSemCollection {
3233
* @var array
3334
*/
3435
protected $_validationParams;
36+
37+
protected $_extraFieldRules;
3538

3639
public function __construct($identifier, $elements=array()) {
3740
parent::__construct($identifier, "form", "ui form");
@@ -40,6 +43,7 @@ public function __construct($identifier, $elements=array()) {
4043
$this->_fields=array ();
4144
$this->addItems($elements);
4245
$this->_validationParams=[];
46+
$this->_extraFieldRules=[];
4347
}
4448

4549
protected function getForm(){
@@ -186,9 +190,19 @@ public function run(JsUtils $js) {
186190
}
187191
}
188192
}
193+
foreach ($this->_extraFieldRules as $field=>$fieldValidation){
194+
$compo=$this->addExtraCompoValidation($compo, $fieldValidation);
195+
}
189196
$this->_runValidationParams($compo,$js);
190197
return $this->_bsComponent;
191198
}
199+
200+
public function getExtraFieldValidation($fieldname){
201+
if(!isset($this->_extraFieldRules[$fieldname])){
202+
$this->_extraFieldRules[$fieldname]=new FieldValidation($fieldname);
203+
}
204+
return $this->_extraFieldRules[$fieldname];
205+
}
192206

193207
public function addValidationParam($paramName,$paramValue,$before="",$after=""){
194208
$this->addBehavior($this->_validationParams, $paramName, $paramValue,$before,$after);

Ajax/semantic/html/collections/form/traits/FormTrait.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
use Ajax\common\html\BaseHtml;
99
use Ajax\semantic\components\Form;
1010
use Ajax\semantic\html\collections\form\HtmlFormField;
11+
use Ajax\semantic\components\validation\FieldValidation;
1112

1213
/**
1314
* trait used in Widget and HtmlForm
@@ -29,6 +30,11 @@ protected function addCompoValidation(Form $compo,HtmlFormField $field){
2930
}
3031
return $compo;
3132
}
33+
34+
protected function addExtraCompoValidation(Form $compo,FieldValidation $validation){
35+
$compo->addFieldValidation($validation);
36+
return $compo;
37+
}
3238

3339
protected function _runValidationParams(Form &$compo,JsUtils $js=NULL){
3440
$form=$this->getForm();
@@ -155,4 +161,18 @@ public function onSuccess($jsCode){
155161
$form->addValidationParam("onSuccess", $jsCode,"%function(event,fields){","}%");
156162
return $form;
157163
}
164+
165+
public function addExtraFieldRules($fieldname,$rules){
166+
$form=$this->getForm();
167+
$fv=$form->getExtraFieldValidation($fieldname);
168+
foreach ($rules as $rule){
169+
$fv->addRule($rule);
170+
}
171+
}
172+
173+
public function addExtraFieldRule($fieldname,$type,$prompt=NULL,$value=NULL){
174+
$form=$this->getForm();
175+
$fv=$form->getExtraFieldValidation($fieldname);
176+
$fv->addRule($type,$prompt,$value);
177+
}
158178
}

0 commit comments

Comments
 (0)