Commit 8c8a3898 by Qiang Xue

Fixes #3772: Behaviors adding validation rules do not work as expected

parent a252622d
...@@ -44,6 +44,7 @@ Yii Framework 2 Change Log ...@@ -44,6 +44,7 @@ Yii Framework 2 Change Log
- Bug #3751: Fixed postgreSQL schema data for enum values, do not add values if there are none (makroxyz) - Bug #3751: Fixed postgreSQL schema data for enum values, do not add values if there are none (makroxyz)
- Bug #3752: `QueryBuilder::batchInsert()` does not typecast input values (qiangxue) - Bug #3752: `QueryBuilder::batchInsert()` does not typecast input values (qiangxue)
- Bug #3756: Fix number formatting error for `\yii\base\Formatter` by converting strings to float (kartik-v) - Bug #3756: Fix number formatting error for `\yii\base\Formatter` by converting strings to float (kartik-v)
- Bug #3772: Behaviors adding validation rules do not work as expected (qiangxue)
- Bug #3817: `yii\rbac\PhpManager::getChildren()` returns null instead of expected empty array (qiangxue) - Bug #3817: `yii\rbac\PhpManager::getChildren()` returns null instead of expected empty array (qiangxue)
- Bug #3843: Fixed Menu bug when using `template` with `encodeLabel` => false (creocoder, umneeq) - Bug #3843: Fixed Menu bug when using `template` with `encodeLabel` => false (creocoder, umneeq)
- Bug #3863: Fixed incorrect js selector for `\yii\widgets\ActiveForm::errorSummaryCssClass` when it contains multiple classes (creocoder, umneeq) - Bug #3863: Fixed incorrect js selector for `\yii\widgets\ActiveForm::errorSummaryCssClass` when it contains multiple classes (creocoder, umneeq)
......
...@@ -310,19 +310,24 @@ class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayab ...@@ -310,19 +310,24 @@ class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayab
*/ */
public function validate($attributeNames = null, $clearErrors = true) public function validate($attributeNames = null, $clearErrors = true)
{ {
if ($clearErrors) {
$this->clearErrors();
}
if (!$this->beforeValidate()) {
return false;
}
$scenarios = $this->scenarios(); $scenarios = $this->scenarios();
$scenario = $this->getScenario(); $scenario = $this->getScenario();
if (!isset($scenarios[$scenario])) { if (!isset($scenarios[$scenario])) {
throw new InvalidParamException("Unknown scenario: $scenario"); throw new InvalidParamException("Unknown scenario: $scenario");
} }
if ($clearErrors) {
$this->clearErrors();
}
if ($attributeNames === null) { if ($attributeNames === null) {
$attributeNames = $this->activeAttributes(); $attributeNames = $this->activeAttributes();
} }
if ($this->beforeValidate()) {
foreach ($this->getActiveValidators() as $validator) { foreach ($this->getActiveValidators() as $validator) {
$validator->validateAttributes($this, $attributeNames); $validator->validateAttributes($this, $attributeNames);
} }
...@@ -331,9 +336,6 @@ class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayab ...@@ -331,9 +336,6 @@ class Model extends Component implements IteratorAggregate, ArrayAccess, Arrayab
return !$this->hasErrors(); return !$this->hasErrors();
} }
return false;
}
/** /**
* This method is invoked before validation starts. * This method is invoked before validation starts.
* The default implementation raises a `beforeValidate` event. * The default implementation raises a `beforeValidate` event.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment