mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-19 16:01:57 +08:00
Fixes issue #588: Added afterValidate to ActiveForm.
This commit is contained in:
@@ -41,6 +41,9 @@
|
|||||||
// a callback that is called before validating each attribute. The signature of the callback should be:
|
// a callback that is called before validating each attribute. The signature of the callback should be:
|
||||||
// function ($form, attribute, messages) { ...return false to cancel the validation...}
|
// function ($form, attribute, messages) { ...return false to cancel the validation...}
|
||||||
beforeValidate: undefined,
|
beforeValidate: undefined,
|
||||||
|
// a callback that is called after an attribute is validated. The signature of the callback should be:
|
||||||
|
// function ($form, attribute, messages)
|
||||||
|
afterValidate: undefined,
|
||||||
// the GET parameter name indicating an AJAX-based validation
|
// the GET parameter name indicating an AJAX-based validation
|
||||||
ajaxVar: 'ajax'
|
ajaxVar: 'ajax'
|
||||||
};
|
};
|
||||||
@@ -333,6 +336,9 @@
|
|||||||
$input = findInput($form, attribute),
|
$input = findInput($form, attribute),
|
||||||
hasError = false;
|
hasError = false;
|
||||||
|
|
||||||
|
if (data.settings.afterValidate) {
|
||||||
|
data.settings.afterValidate($form, attribute, messages);
|
||||||
|
}
|
||||||
attribute.status = 1;
|
attribute.status = 1;
|
||||||
if ($input.length) {
|
if ($input.length) {
|
||||||
hasError = messages && $.isArray(messages[attribute.name]) && messages[attribute.name].length;
|
hasError = messages && $.isArray(messages[attribute.name]) && messages[attribute.name].length;
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ use yii\base\Widget;
|
|||||||
use yii\base\Model;
|
use yii\base\Model;
|
||||||
use yii\helpers\Html;
|
use yii\helpers\Html;
|
||||||
use yii\helpers\Json;
|
use yii\helpers\Json;
|
||||||
|
use yii\web\JsExpression;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* ActiveForm ...
|
* ActiveForm ...
|
||||||
@@ -102,6 +103,38 @@ class ActiveForm extends Widget
|
|||||||
* @var string the name of the GET parameter indicating the validation request is an AJAX request.
|
* @var string the name of the GET parameter indicating the validation request is an AJAX request.
|
||||||
*/
|
*/
|
||||||
public $ajaxVar = 'ajax';
|
public $ajaxVar = 'ajax';
|
||||||
|
/**
|
||||||
|
* @var string|JsExpression a JS callback that will be called when the form is being submitted.
|
||||||
|
* The signature of the callback should be:
|
||||||
|
*
|
||||||
|
* ~~~
|
||||||
|
* function ($form) {
|
||||||
|
* ...return false to cancel submission...
|
||||||
|
* }
|
||||||
|
* ~~~
|
||||||
|
*/
|
||||||
|
public $beforeSubmit;
|
||||||
|
/**
|
||||||
|
* @var string|JsExpression a JS callback that is called before validating an attribute.
|
||||||
|
* The signature of the callback should be:
|
||||||
|
*
|
||||||
|
* ~~~
|
||||||
|
* function ($form, attribute, messages) {
|
||||||
|
* ...return false to cancel the validation...
|
||||||
|
* }
|
||||||
|
* ~~~
|
||||||
|
*/
|
||||||
|
public $beforeValidate;
|
||||||
|
/**
|
||||||
|
* @var string|JsExpression a JS callback that is called after validating an attribute.
|
||||||
|
* The signature of the callback should be:
|
||||||
|
*
|
||||||
|
* ~~~
|
||||||
|
* function ($form, attribute, messages) {
|
||||||
|
* }
|
||||||
|
* ~~~
|
||||||
|
*/
|
||||||
|
public $afterValidate;
|
||||||
/**
|
/**
|
||||||
* @var array the client validation options for individual attributes. Each element of the array
|
* @var array the client validation options for individual attributes. Each element of the array
|
||||||
* represents the validation options for a particular attribute.
|
* represents the validation options for a particular attribute.
|
||||||
@@ -157,6 +190,11 @@ class ActiveForm extends Widget
|
|||||||
if ($this->validationUrl !== null) {
|
if ($this->validationUrl !== null) {
|
||||||
$options['validationUrl'] = Html::url($this->validationUrl);
|
$options['validationUrl'] = Html::url($this->validationUrl);
|
||||||
}
|
}
|
||||||
|
foreach (array('beforeSubmit', 'beforeValidate', 'afterValidate') as $name) {
|
||||||
|
if (($value = $this->$name) !== null) {
|
||||||
|
$options[$name] = $value instanceof JsExpression ? $value : new JsExpression($value);
|
||||||
|
}
|
||||||
|
}
|
||||||
return $options;
|
return $options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user