diff --git a/docs/guide-zh-CN/input-validation.md b/docs/guide-zh-CN/input-validation.md
index 90c22b3775..52ad2df098 100644
--- a/docs/guide-zh-CN/input-validation.md
+++ b/docs/guide-zh-CN/input-validation.md
@@ -96,7 +96,7 @@ public function rules()
方法里的激活特性,且它还必须与一或多个声明自
`rules()` 里的激活规则相关联才会被验证。
-> Note: It is handy to give names to rules i.e.
+> Note: 可以方便地给规则命名比如:
>
> ```php
> public function rules()
@@ -108,7 +108,7 @@ public function rules()
> }
> ```
>
-> You can use it in a child model:
+> 你可以在子模型中使用:
>
> ```php
> public function rules()
@@ -285,7 +285,7 @@ if ($validator->validate($email, $error)) {
}
```
-> Note: 不是所有的验证器都支持这种形式的验证。比如 [unique(唯一性)](tutorial-core-validators.md#unique)核心验证器就就是一个例子,
+> Note: 不是所有的验证器都支持这种形式的验证。比如 [unique(唯一性)](tutorial-core-validators.md#unique) 核心验证器就就是一个例子,
它的设计初衷就是只作用于模型类内部的。
若你需要针对一系列值执行多项验证,你可以使用 [[yii\base\DynamicModel]]
@@ -309,7 +309,7 @@ public function actionSearch($name, $email)
[[yii\base\DynamicModel::validateData()]] 方法会创建一个 `DynamicModel` 的实例对象,
并通过给定数据定义模型特性(以 `name` 和 `email` 为例),
-之后用给定规则调用[[yii\base\Model::validate()]] 方法。
+之后用给定规则调用 [[yii\base\Model::validate()]] 方法。
除此之外呢,你也可以用如下的更加“传统”的语法来执行临时数据验证:
@@ -394,10 +394,10 @@ class MyForm extends Model
}
```
-> Note: Since version 2.0.11 you can use [[yii\validators\InlineValidator::addError()]] for adding errors instead. That way the error
-> message can be formatted using [[yii\i18n\I18N::format()]] right away. Use `{attribute}` and `{value}` in the error
-> message to refer to an attribute label (no need to get it manually) and attribute value accordingly:
->
+> Note: 从 2.0.11 版本开始,你可以用 [[yii\validators\InlineValidator::addError()]] 方法添加错误信息到模型里。用这种方法
+> 的话,错误信息可以通过 [[yii\i18n\I18N::format()]] 格式化。 你还可以在错误信息里分别用 `{attribute}` 和 `{value}` 来引用
+> 属性的名字(不必手动去写)和属性的值:
+
> ```php
> $validator->addError($this, $attribute, 'The value "{value}" is not acceptable for {attribute}.');
> ```
@@ -422,8 +422,8 @@ class MyForm extends Model
操作与 [inline validators](#inline-validators) 所需操作完全一样。比如,
-For example the inline validator above could be moved into new [[components/validators/CountryValidator]] class.
-In this case we can use [[yii\validators\Validator::addError()]] to set customized message for the model.
+比如上述行内验证器也可以转移到新的验证类 [[components/validators/CountryValidator]]。
+这种情况下,我们可以用 [[yii\validators\Validator::addError()]] 来给模型设置自定义的错误信息。
```php
namespace app\components;
@@ -444,9 +444,9 @@ class CountryValidator extends Validator
若你想要验证器支持不使用 model 的数据验证,你还应该重写[[yii\validators\Validator::validate()]] 方法。
你也可以通过重写[[yii\validators\Validator::validateValue()]] 方法替代
`validateAttribute()` 和 `validate()`,因为默认状态下,
-后两者的实现使用过调用`validateValue()`实现的。
+后两者的实现是通过调用 `validateValue()` 实现的。
-Below is an example of how you could use the above validator class within your model.
+下面就是一个怎样把自定义验证器在模型中使用的例子。
```php
namespace app\models;
@@ -473,19 +473,19 @@ class EntryForm extends Model
```
-## Multiple Attributes Validation
+## 多属性验证
-Sometimes validators involve multiple attributes. Consider the following form:
+某些情况下验证器可以包含多个属性。考虑下面的情况:
```php
class MigrationForm extends \yii\base\Model
{
/**
- * Minimal funds amount for one adult person
+ * 一个成年人的最少花销
*/
const MIN_ADULT_FUNDS = 3000;
/**
- * Minimal funds amount for one child
+ * 一个孩子的最小花销
*/
const MIN_CHILD_FUNDS = 1500;
@@ -507,16 +507,16 @@ class MigrationForm extends \yii\base\Model
}
```
-### Creating validator
+### 创建验证器
-Let's say we need to check if the family income is enough for children. We can create inline validator
-`validateChildrenFunds` for that which will run only when `childrenCount` is more than 0.
+比如我们需要检查下家庭收入是否足够给孩子们花销。此时我们可以创建一个行内验证器
+`validateChildrenFunds` 来解决这个问题,它仅仅在 `childrenCount` 大于 0 的时候才去检查。
-Note that we can't use all validated attributes (`['personalSalary', 'spouseSalary', 'childrenCount']`) when attaching
-validator. This is because the same validator will run for each attribute (3 times in total) and we only need to run it
-once for the whole attribute set.
+请注意,我们不要把所有需要验证的属性 (`['personalSalary', 'spouseSalary', 'childrenCount']`) 都附加到
+验证器上。因为这样做同一个验证器将会对每个属性都执行一遍验证(总共三次),但是实际上我们只需要对整个属性集
+执行一次验证而已。
-You can use any of these attributes instead (or use what you think is the most relevant):
+你可以使用属性集合里的任何一个(或者使用你认为最相关的那个属性):
```php
['childrenCount', 'validateChildrenFunds', 'when' => function ($model) {
@@ -524,7 +524,7 @@ You can use any of these attributes instead (or use what you think is the most r
}],
```
-Implementation of `validateChildrenFunds` can be like this:
+`validateChildrenFunds` 的实现可以是下面这样的:
```php
public function validateChildrenFunds($attribute, $params)
@@ -539,21 +539,21 @@ public function validateChildrenFunds($attribute, $params)
}
```
-You can ignore `$attribute` parameter because validation is not related to just one attribute.
+你可以忽略 `$attribute` 参数,因为这个验证过程不仅仅关联一个属性。
-### Adding errors
+### 添加错误信息
-Adding error in case of multiple attributes can vary depending on desired form design:
+在添加错误信息的时候,如果是多个属性,可以根据自己想要的格式使用多种情况:
-- Select the most relevant field in your opinion and add error to it's attribute:
+- 选择一个你认为最相关的字段把错误信息添加到它的属性里:
```php
$this->addError('childrenCount', 'Your salary is not enough for children.');
```
-- Select multiple important relevant attributes or all attributes and add the same error message to them. We can store
-message in separate variable before passing it to `addError` to keep code DRY.
+- 选择多个相关的属性乃至所有属性给它们添加同样的错误信息。在使用 `addError` 之前我们可以先把错误信息存储到
+一个独立的变量里,这样可以减少代码重复性。
```php
$message = 'Your salary is not enough for children.';
@@ -562,7 +562,7 @@ $this->addError('wifeSalary', $message);
$this->addError('childrenCount', $message);
```
-Or use a loop:
+或者使用循环:
```php
$attributes = ['personalSalary', 'wifeSalary', 'childrenCount'];
@@ -571,20 +571,20 @@ foreach ($attributes as $attribute) {
}
```
-- Add a common error (not related to particular attribute). We can use the not existing attribute name for adding
-error, for example `*`, because attribute existence is not checked at that point.
+- 添加通用错误信息(不相关于特定的属性)。我们可以用一个不存在的属性名添加错误信息
+比如 `*`,因为这时是不检查属性的存在性的。
```php
$this->addError('*', 'Your salary is not enough for children.');
```
-As a result, we will not see error message near form fields. To display it, we can include the error summary in view:
+这种情况下,我们不会在表单域里看到错误信息。为了展示这个错误信息,我们可以在视图里使用错误汇总:
```php
= $form->errorSummary($model) ?>
```
-> Note: Creating validator which validates multiple attributes at once is well described in the [community cookbook](https://github.com/samdark/yii2-cookbook/blob/master/book/forms-validator-multiple-attributes.md).
+> Note: 创建一次验证多个属性的验证器的参考说明在这里 [community cookbook](https://github.com/samdark/yii2-cookbook/blob/master/book/forms-validator-multiple-attributes.md).
## Client-Side Validation