mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-14 13:25:23 +08:00
Validator::clientValidateAttribute() now accepts third parameter: a view.
punycode.js asset bundle registering moved from ActiveField to validators.
This commit is contained in:
@@ -79,9 +79,11 @@ class BooleanValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$options = array(
|
$options = array(
|
||||||
'trueValue' => $this->trueValue,
|
'trueValue' => $this->trueValue,
|
||||||
|
|||||||
@@ -91,9 +91,11 @@ class CaptchaValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$captcha = $this->getCaptchaAction();
|
$captcha = $this->getCaptchaAction();
|
||||||
$code = $captcha->getVerifyCode(false);
|
$code = $captcha->getVerifyCode(false);
|
||||||
|
|||||||
@@ -178,9 +178,11 @@ class CompareValidator extends Validator
|
|||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated
|
* @param string $attribute the name of the attribute to be validated
|
||||||
* @return string the client-side validation script
|
* @return string the client-side validation script
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @throws InvalidConfigException if CompareValidator::operator is invalid
|
* @throws InvalidConfigException if CompareValidator::operator is invalid
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$options = array('operator' => $this->operator);
|
$options = array('operator' => $this->operator);
|
||||||
|
|
||||||
|
|||||||
@@ -113,10 +113,16 @@ class EmailValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
|
if ($this->enableIDN) {
|
||||||
|
$view->registerAssetBundle('punycode');
|
||||||
|
}
|
||||||
|
|
||||||
$options = array(
|
$options = array(
|
||||||
'pattern' => new JsExpression($this->pattern),
|
'pattern' => new JsExpression($this->pattern),
|
||||||
'fullPattern' => new JsExpression($this->fullPattern),
|
'fullPattern' => new JsExpression($this->fullPattern),
|
||||||
|
|||||||
@@ -79,12 +79,14 @@ class InlineValidator extends Validator
|
|||||||
*
|
*
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script. Null if the validator does not support
|
* @return string the client-side validation script. Null if the validator does not support
|
||||||
* client-side validation.
|
* client-side validation.
|
||||||
* @see enableClientValidation
|
* @see enableClientValidation
|
||||||
* @see \yii\web\ActiveForm::enableClientValidation
|
* @see \yii\web\ActiveForm::enableClientValidation
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
if ($this->clientValidate !== null) {
|
if ($this->clientValidate !== null) {
|
||||||
$method = $this->clientValidate;
|
$method = $this->clientValidate;
|
||||||
|
|||||||
@@ -114,9 +114,11 @@ class NumberValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$label = $object->getAttributeLabel($attribute);
|
$label = $object->getAttributeLabel($attribute);
|
||||||
$value = $object->$attribute;
|
$value = $object->$attribute;
|
||||||
|
|||||||
@@ -81,9 +81,11 @@ class RangeValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$range = array();
|
$range = array();
|
||||||
foreach ($this->range as $value) {
|
foreach ($this->range as $value) {
|
||||||
|
|||||||
@@ -79,10 +79,12 @@ class RegularExpressionValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
* @throws InvalidConfigException if the "pattern" is not a valid regular expression
|
* @throws InvalidConfigException if the "pattern" is not a valid regular expression
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$pattern = $this->pattern;
|
$pattern = $this->pattern;
|
||||||
$pattern = preg_replace('/\\\\x\{?([0-9a-fA-F]+)\}?/', '\u$1', $pattern);
|
$pattern = preg_replace('/\\\\x\{?([0-9a-fA-F]+)\}?/', '\u$1', $pattern);
|
||||||
|
|||||||
@@ -102,9 +102,11 @@ class RequiredValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$options = array();
|
$options = array();
|
||||||
if ($this->requiredValue !== null) {
|
if ($this->requiredValue !== null) {
|
||||||
|
|||||||
@@ -126,9 +126,11 @@ class StringValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
$label = $object->getAttributeLabel($attribute);
|
$label = $object->getAttributeLabel($attribute);
|
||||||
$value = $object->$attribute;
|
$value = $object->$attribute;
|
||||||
|
|||||||
@@ -110,11 +110,17 @@ class UrlValidator extends Validator
|
|||||||
* Returns the JavaScript needed for performing client-side validation.
|
* Returns the JavaScript needed for performing client-side validation.
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script.
|
* @return string the client-side validation script.
|
||||||
* @see \yii\Web\ActiveForm::enableClientValidation
|
* @see \yii\Web\ActiveForm::enableClientValidation
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
|
if ($this->enableIDN) {
|
||||||
|
$view->registerAssetBundle('punycode');
|
||||||
|
}
|
||||||
|
|
||||||
if (strpos($this->pattern, '{schemes}') !== false) {
|
if (strpos($this->pattern, '{schemes}') !== false) {
|
||||||
$pattern = str_replace('{schemes}', '(' . implode('|', $this->validSchemes) . ')', $this->pattern);
|
$pattern = str_replace('{schemes}', '(' . implode('|', $this->validSchemes) . ')', $this->pattern);
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -211,11 +211,13 @@ abstract class Validator extends Component
|
|||||||
*
|
*
|
||||||
* @param \yii\base\Model $object the data object being validated
|
* @param \yii\base\Model $object the data object being validated
|
||||||
* @param string $attribute the name of the attribute to be validated.
|
* @param string $attribute the name of the attribute to be validated.
|
||||||
|
* @param \yii\base\View $view the view object that is going to be used to render views or view files
|
||||||
|
* containing a model form with this validator applied.
|
||||||
* @return string the client-side validation script. Null if the validator does not support
|
* @return string the client-side validation script. Null if the validator does not support
|
||||||
* client-side validation.
|
* client-side validation.
|
||||||
* @see \yii\web\ActiveForm::enableClientValidation
|
* @see \yii\web\ActiveForm::enableClientValidation
|
||||||
*/
|
*/
|
||||||
public function clientValidateAttribute($object, $attribute)
|
public function clientValidateAttribute($object, $attribute, $view)
|
||||||
{
|
{
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,8 +11,6 @@ use yii\db\ActiveRecord;
|
|||||||
use yii\helpers\Html;
|
use yii\helpers\Html;
|
||||||
use yii\base\Model;
|
use yii\base\Model;
|
||||||
use yii\web\JsExpression;
|
use yii\web\JsExpression;
|
||||||
use yii\validators\EmailValidator;
|
|
||||||
use yii\validators\UrlValidator;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Qiang Xue <qiang.xue@gmail.com>
|
* @author Qiang Xue <qiang.xue@gmail.com>
|
||||||
@@ -123,13 +121,6 @@ class ActiveField extends Component
|
|||||||
}
|
}
|
||||||
$options['class'] = implode(' ', $class);
|
$options['class'] = implode(' ', $class);
|
||||||
|
|
||||||
foreach ($this->model->getActiveValidators($attribute) as $validator) {
|
|
||||||
if (($validator instanceof EmailValidator || $validator instanceof UrlValidator) && $validator->enableIDN) {
|
|
||||||
$this->form->view->registerAssetBundle('punycode');
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return Html::beginTag($this->tag, $options);
|
return Html::beginTag($this->tag, $options);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -147,7 +138,7 @@ class ActiveField extends Component
|
|||||||
$validators = array();
|
$validators = array();
|
||||||
foreach ($this->model->getActiveValidators($attribute) as $validator) {
|
foreach ($this->model->getActiveValidators($attribute) as $validator) {
|
||||||
/** @var \yii\validators\Validator $validator */
|
/** @var \yii\validators\Validator $validator */
|
||||||
$js = $validator->clientValidateAttribute($this->model, $attribute);
|
$js = $validator->clientValidateAttribute($this->model, $attribute, $this->form->getView());
|
||||||
if ($validator->enableClientValidation && $js != '') {
|
if ($validator->enableClientValidation && $js != '') {
|
||||||
$validators[] = $js;
|
$validators[] = $js;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user