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:
|
||||
// function ($form, attribute, messages) { ...return false to cancel the validation...}
|
||||
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
|
||||
ajaxVar: 'ajax'
|
||||
};
|
||||
@@ -333,6 +336,9 @@
|
||||
$input = findInput($form, attribute),
|
||||
hasError = false;
|
||||
|
||||
if (data.settings.afterValidate) {
|
||||
data.settings.afterValidate($form, attribute, messages);
|
||||
}
|
||||
attribute.status = 1;
|
||||
if ($input.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\helpers\Html;
|
||||
use yii\helpers\Json;
|
||||
use yii\web\JsExpression;
|
||||
|
||||
/**
|
||||
* 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.
|
||||
*/
|
||||
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
|
||||
* represents the validation options for a particular attribute.
|
||||
@@ -157,6 +190,11 @@ class ActiveForm extends Widget
|
||||
if ($this->validationUrl !== null) {
|
||||
$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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user