Browse Source

fix chinese guide (#16061)

tags/2.0.16
Carsten Brandt 7 years ago committed by GitHub
parent
commit
e59cb3806e
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 6
      docs/guide-zh-CN/blocktypes.json
  2. 12
      docs/guide-zh-CN/caching-data.md
  3. 2
      docs/guide-zh-CN/caching-http.md
  4. 4
      docs/guide-zh-CN/concept-aliases.md
  5. 2
      docs/guide-zh-CN/concept-autoloading.md
  6. 6
      docs/guide-zh-CN/concept-behaviors.md
  7. 8
      docs/guide-zh-CN/concept-di-container.md
  8. 4
      docs/guide-zh-CN/concept-events.md
  9. 50
      docs/guide-zh-CN/db-active-record.md
  10. 12
      docs/guide-zh-CN/db-dao.md
  11. 26
      docs/guide-zh-CN/db-migrations.md
  12. 16
      docs/guide-zh-CN/db-query-builder.md
  13. 4
      docs/guide-zh-CN/helper-html.md
  14. 4
      docs/guide-zh-CN/helper-overview.md
  15. 4
      docs/guide-zh-CN/input-file-upload.md
  16. 10
      docs/guide-zh-CN/input-forms.md
  17. 2
      docs/guide-zh-CN/input-tabular-input.md
  18. 16
      docs/guide-zh-CN/input-validation.md
  19. 2
      docs/guide-zh-CN/output-client-scripts.md
  20. 4
      docs/guide-zh-CN/output-data-providers.md
  21. 6
      docs/guide-zh-CN/output-data-widgets.md
  22. 4
      docs/guide-zh-CN/output-formatting.md
  23. 2
      docs/guide-zh-CN/output-pagination.md
  24. 2
      docs/guide-zh-CN/rest-authentication.md
  25. 2
      docs/guide-zh-CN/rest-controllers.md
  26. 4
      docs/guide-zh-CN/rest-quick-start.md
  27. 2
      docs/guide-zh-CN/rest-resources.md
  28. 2
      docs/guide-zh-CN/rest-versioning.md
  29. 4
      docs/guide-zh-CN/runtime-handling-errors.md
  30. 14
      docs/guide-zh-CN/runtime-logging.md
  31. 2
      docs/guide-zh-CN/runtime-requests.md
  32. 2
      docs/guide-zh-CN/runtime-responses.md
  33. 12
      docs/guide-zh-CN/runtime-routing.md
  34. 14
      docs/guide-zh-CN/runtime-sessions-cookies.md
  35. 2
      docs/guide-zh-CN/security-authentication.md
  36. 4
      docs/guide-zh-CN/security-authorization.md
  37. 4
      docs/guide-zh-CN/start-forms.md
  38. 8
      docs/guide-zh-CN/start-installation.md
  39. 12
      docs/guide-zh-CN/structure-assets.md
  40. 2
      docs/guide-zh-CN/structure-controllers.md
  41. 2
      docs/guide-zh-CN/structure-filters.md
  42. 2
      docs/guide-zh-CN/structure-models.md
  43. 2
      docs/guide-zh-CN/structure-views.md
  44. 2
      docs/guide-zh-CN/structure-widgets.md
  45. 6
      docs/guide-zh-CN/test-fixtures.md
  46. 2
      docs/guide-zh-CN/test-functional.md
  47. 2
      docs/guide-zh-CN/test-overview.md
  48. 2
      docs/guide-zh-CN/tutorial-console.md
  49. 6
      docs/guide-zh-CN/tutorial-core-validators.md
  50. 14
      docs/guide-zh-CN/tutorial-i18n.md
  51. 8
      docs/guide-zh-CN/tutorial-mailing.md
  52. 2
      docs/guide-zh-CN/tutorial-performance-tuning.md
  53. 2
      docs/guide-zh-CN/tutorial-start-from-scratch.md
  54. 2
      docs/guide-zh-CN/tutorial-yii-as-micro-framework.md
  55. 2
      docs/guide-zh-CN/tutorial-yii-integration.md

6
docs/guide-zh-CN/blocktypes.json

@ -0,0 +1,6 @@
{
"Warning:": "警告:",
"Note:": "注意:",
"Info:": "补充:",
"Tip:": "提示:"
}

12
docs/guide-zh-CN/caching-data.md

@ -40,7 +40,7 @@ $data = $cache->getOrSet($key, function () use ($user_id) {
});
```
> 注意:[[yii\caching\Cache::getOrSet()|getOrSet()]] 方法也支持缓存持续性和缓存依赖。请看[缓存过期](#cache-expiration) 和 [缓存依赖](#cache-dependencies) 来了解详细信息。
> Note: [[yii\caching\Cache::getOrSet()|getOrSet()]] 方法也支持缓存持续性和缓存依赖。请看[缓存过期](#cache-expiration) 和 [缓存依赖](#cache-dependencies) 来了解详细信息。
## 缓存组件 <span id="cache-components"></span>
@ -88,7 +88,7 @@ $data = $cache->getOrSet($key, function () use ($user_id) {
],
```
> 提示:你可以注册多个缓存组件,很多依赖缓存的类默认调用
> Tip: 你可以注册多个缓存组件,很多依赖缓存的类默认调用
名为 `cache` 的组件(例如 [[yii\web\UrlManager]])。
@ -124,7 +124,7 @@ Yii 支持一系列缓存存储器,概况如下:
作为底层缓存媒介。
> 提示:你可以在同一个应用程序中使用不同的缓存存储器。一个常见的策略是使用基于内存的缓存存储器
> Tip: 你可以在同一个应用程序中使用不同的缓存存储器。一个常见的策略是使用基于内存的缓存存储器
存储小而常用的数据(例如:统计数据),使用基于文件或数据库的缓存存储器
存储大而不太常用的数据(例如:网页内容)。
@ -145,7 +145,7 @@ Yii 支持一系列缓存存储器,概况如下:
* [[yii\caching\Cache::delete()|delete()]]:通过一个键,删除缓存中对应的值。
* [[yii\caching\Cache::flush()|flush()]]:删除缓存中的所有数据。
> 注意:千万别直接用`false`布尔值当做数据项缓存,因为[[yii\caching\Cache::get()|get()]]方法用
> Note: 千万别直接用`false`布尔值当做数据项缓存,因为[[yii\caching\Cache::get()|get()]]方法用
`false`作为返回值来表名对应的缓存项不存在。你可以把`false`放到一个数组里然后缓存这个数组来避免上述的混淆问题。
有些缓存存储器如 MemCache,APC 支持以批量模式取回缓存值,这样可以节省取回缓存数据的开支。
@ -185,7 +185,7 @@ $value2 = $cache['var2']; // 等价于: $value2 = $cache->get('var2');
如你所见,该键包含了可唯一指定一个数据库表所需的所有必要信息。
> 注意:通过[[yii\caching\Cache::multiSet()|multiSet()]]或者[[yii\caching\Cache::multiAdd()|multiAdd()]]方法缓存的数据项的键,它的类型只能是字符串或整型,
> Note: 通过[[yii\caching\Cache::multiSet()|multiSet()]]或者[[yii\caching\Cache::multiAdd()|multiAdd()]]方法缓存的数据项的键,它的类型只能是字符串或整型,
如果你想使用较为复杂的键,可以通过
[[yii\caching\Cache::set()|set()]]或者[[yii\caching\Cache::add()|add()]]方法来存储。
@ -265,7 +265,7 @@ $data = $cache->get($key);
- [[yii\caching\TagDependency]]: associates a cached data item with one or multiple tags. You may invalidate
the cached data items with the specified tag(s) by calling [[yii\caching\TagDependency::invalidate()]].
> 注意:避免对带有缓存依赖的缓存项使用 [[yii\caching\Cache::exists()|exists()]] 方法,因为它不检测缓存依赖(如果有的话)是否有效,所以调用[[yii\caching\Cache::get()|get()]]可能返回`false`而调用[[yii\caching\Cache::exists()|exists()]]却返回`true`。
> Note: 避免对带有缓存依赖的缓存项使用 [[yii\caching\Cache::exists()|exists()]] 方法,因为它不检测缓存依赖(如果有的话)是否有效,所以调用[[yii\caching\Cache::get()|get()]]可能返回`false`而调用[[yii\caching\Cache::exists()|exists()]]却返回`true`。
## 查询缓存 <span id="query-caching"></span>

2
docs/guide-zh-CN/caching-http.md

@ -107,7 +107,7 @@ ETag 相比 `Last-Modified` 能实现更复杂和更精确的缓存策略。
因为响应每一次请求都需要重新计算 Etag。
请试着找出一个最简单的表达式去触发 Etag 失效。
> 注意:为了遵循 [RFC 7232(HTTP 1.1 协议)](http://tools.ietf.org/html/rfc7232#section-2.4),
> Note: 为了遵循 [RFC 7232(HTTP 1.1 协议)](http://tools.ietf.org/html/rfc7232#section-2.4),
如果同时配置了 `ETag``Last-Modified` 头,`HttpCache` 将会同时发送它们。
并且如果客户端同时发送 `If-None-Match` 头和 `If-Modified-Since` 头,
则只有前者会被接受。

4
docs/guide-zh-CN/concept-aliases.md

@ -18,7 +18,7 @@ Yii::setAlias('@foo', '/path/to/foo');
Yii::setAlias('@bar', 'http://www.example.com');
```
> 注意:别名所指向的文件路径或 URL 不一定是真实存在的文件或资源。
> Note: 别名所指向的文件路径或 URL 不一定是真实存在的文件或资源。
可以通过在一个别名后面加斜杠 `/` 和一至多个路径分段生成新别名(无需调用 [[Yii::setAlias()]])。
们把通过 [[Yii::setAlias()]] 定义的别名称为**根别名**,
@ -62,7 +62,7 @@ echo Yii::getAlias('@foo/bar/file.php'); // 输出:/path/to/foo/bar/file.php
由衍生别名所解析出的文件路径和 URL
是通过替换掉衍生别名中的根别名部分得到的。
> 注意:[[Yii::getAlias()]] 并不检查结果路径/URL 所指向的资源是否真实存在。
> Note: [[Yii::getAlias()]] 并不检查结果路径/URL 所指向的资源是否真实存在。
根别名可能也会包含斜杠 `/`

2
docs/guide-zh-CN/concept-autoloading.md

@ -6,7 +6,7 @@ Yii 依靠[类自动加载机制](http://www.php.net/manual/en/language.oop5.aut
([中文汉化](https://github.com/hfcorriez/fig-standards/blob/zh_CN/%E6%8E%A5%E5%8F%97/PSR-4-autoloader.md))的自动加载器。
该自动加载器会在引入框架文件 `Yii.php` 时安装好。
> 注意:为了简化叙述,本篇文档中我们只会提及类的自动加载。
> Note: 为了简化叙述,本篇文档中我们只会提及类的自动加载。
不过,要记得文中的描述同样也适用于接口和Trait(特质)的自动加载哦。

6
docs/guide-zh-CN/concept-behaviors.md

@ -48,9 +48,9 @@ class MyBehavior extends Behavior
因为这是一个行为类,当它附加到一个组件时,该组件也将具有 `prop1``prop2` 属性和 `foo()` 方法。
> 提示:在行为内部可以通过 [[yii\base\Behavior::owner]] 属性访问行为已附加的组件。
> Tip: 在行为内部可以通过 [[yii\base\Behavior::owner]] 属性访问行为已附加的组件。
> 注意:In case [[yii\base\Behavior::__get()]] and/or [[yii\base\Behavior::__set()]] method of behavior is overridden you
> Note: In case [[yii\base\Behavior::__get()]] and/or [[yii\base\Behavior::__set()]] method of behavior is overridden you
need to override [[yii\base\Behavior::canGetProperty()]] and/or [[yii\base\Behavior::canSetProperty()]] as well.
处理事件
@ -291,7 +291,7 @@ class User extends ActiveRecord
`created_at``updated_at` 属性;
* 当记录更新时,行为将当前时间戳赋值给 `updated_at` 属性。
> 注意:For the above implementation to work with MySQL database, please declare the columns(`created_at`, `updated_at`) as int(11) for being UNIX timestamp.
> Note: For the above implementation to work with MySQL database, please declare the columns(`created_at`, `updated_at`) as int(11) for being UNIX timestamp.
With that code in place, if you have a `User` object and try to save it, you will find its `created_at` and `updated_at` are automatically
filled with the current UNIX timestamp:

8
docs/guide-zh-CN/concept-di-container.md

@ -199,7 +199,7 @@ $container->set('db', function ($container, $params, $config) {
$container->set('pageCache', new FileCache);
```
> 提示:如果依赖关系名称和依赖关系的定义相同,
> Tip: 如果依赖关系名称和依赖关系的定义相同,
则不需要通过 DI 容器注册该依赖关系。
通过 `set()` 注册的依赖关系,在每次使用时都会产生一个新实例。
@ -336,7 +336,7 @@ echo \yii\widgets\LinkPager::widget();
echo \yii\widgets\LinkPager::widget(['maxButtonCount' => 20]);
```
> 注意:Properties given in the widget call will always override the definition in the DI container.
> Note: Properties given in the widget call will always override the definition in the DI container.
> Even if you specify an array, e.g. `'options' => ['id' => 'mypager']` these will not be merged
> with other options but replace them.
@ -431,7 +431,7 @@ $reader = $container->get('app\storage\DocumentsReader);
// Will create DocumentReader object with its dependencies as described in the config
```
> 提示:Container may be configured in declarative style using application configuration since version 2.0.11.
> Tip: Container may be configured in declarative style using application configuration since version 2.0.11.
Check out the [Application Configurations](concept-configurations.md#application-configurations) subsection of
the [Configurations](concept-configurations.md) guide article.
@ -473,7 +473,7 @@ You might notice `Instance::of('tempFileStorage')` notation. It means, that the
will implicitly provide a dependency registered with the name of `tempFileStorage` and pass it as the first argument
of `app\storage\DocumentsWriter` constructor.
> 注意:[[yii\di\Container::setDefinitions()|setDefinitions()]] and [[yii\di\Container::setSingletons()|setSingletons()]]
> Note: [[yii\di\Container::setDefinitions()|setDefinitions()]] and [[yii\di\Container::setSingletons()|setSingletons()]]
methods are available since version 2.0.11.
Another step on configuration optimization is to register some dependencies as singletons.

4
docs/guide-zh-CN/concept-events.md

@ -124,7 +124,7 @@ class Foo extends Component
以上代码当调用 `bar()` ,它将触发名为 `hello` 的事件。
> 提示:推荐使用类常量来表示事件名。上例中,常量 `EVENT_HELLO` 用来表示 `hello`
> Tip: 推荐使用类常量来表示事件名。上例中,常量 `EVENT_HELLO` 用来表示 `hello`
这有两个好处。第一,它可以防止拼写错误并支持 IDE 的自动完成。
第二,只要简单检查常量声明就能了解一个类支持哪些事件。
@ -238,7 +238,7 @@ Event::trigger(Foo::className(), Foo::EVENT_HELLO);
注意这种情况下 `$event->sender` 指向触发事件的类名而不是对象实例。
> 注意:因为类级别的处理器响应类和其子类的所有实例触发的事件,
> Note: 因为类级别的处理器响应类和其子类的所有实例触发的事件,
必须谨慎使用,尤其是底层的基类,如 [[yii\base\Object]]。
移除类级别的事件处理器只需调用[[yii\base\Event::off()]],如:

50
docs/guide-zh-CN/db-active-record.md

@ -177,7 +177,7 @@ $customers = Customer::find()
上述代码中,`$customer` 是个 `Customer` 对象,而 `$customers` 是个以 `Customer` 对象为元素的数组。
它们两都是以 `customer` 表中取回的数据结果集填充的。
> 提示:由于 [[yii\db\ActiveQuery]] 继承 [[yii\db\Query]],你可以使用 [查询生成器](db-query-builder.md) 章节里所描述的所有查询方法。
> Tip: 由于 [[yii\db\ActiveQuery]] 继承 [[yii\db\Query]],你可以使用 [查询生成器](db-query-builder.md) 章节里所描述的所有查询方法。
根据主键获取数据行是比较常见的操作,所以 Yii
@ -219,7 +219,7 @@ $customers = Customer::findAll([
]);
```
> 提示:[[yii\db\ActiveRecord::findOne()]] 和 [[yii\db\ActiveQuery::one()]] 都不会添加 `LIMIT 1`
> Tip: [[yii\db\ActiveRecord::findOne()]] 和 [[yii\db\ActiveQuery::one()]] 都不会添加 `LIMIT 1`
生成的 SQL 语句中。如果你的查询会返回很多行的数据,
你明确的应该加上 `limit(1)` 来提高性能,比如 `Customer::find()->limit(1)->one()`
@ -249,7 +249,7 @@ $id = $customer->id;
$email = $customer->email;
```
> 提示:AR 的属性以区分大小写的方式为相关联的表列命名的。
> Tip: AR 的属性以区分大小写的方式为相关联的表列命名的。
Yii 会自动为关联表的每一列定义 AR 中的一个属性。
您不应该重新声明任何属性。
@ -287,7 +287,7 @@ class Customer extends ActiveRecord
现在你的 PHP 代码中,你可以访问 `$ customer-> birthdayText`
来以 `'YYYY/MM/DD'` 的格式输入和显示客户生日,而不是访问`$ customer-> birthday`。
> 提示:上述示例显示了以不同格式转换数据的通用方法。如果你正在使用
> Tip: 上述示例显示了以不同格式转换数据的通用方法。如果你正在使用
> 日期值,您可以使用 [DateValidator](tutorial-core-validators.md#date) 和 [[yii\jui\DatePicker|DatePicker]] 来操作,
> 这将更易用,更强大。
@ -306,7 +306,7 @@ $customers = Customer::find()
->all();
```
> 提示:虽然这种方法可以节省内存并提高性能,但它更靠近较低的 DB 抽象层
> Tip: 虽然这种方法可以节省内存并提高性能,但它更靠近较低的 DB 抽象层
你将失去大部分的 AR 提供的功能。 一个非常重要的区别在于列值的数据类型。
当您在 AR 实例中返回数据时,列值将根据实际列类型,自动类型转换;
然而,当您以数组返回数据时,列值将为
@ -379,7 +379,7 @@ public function save($runValidation = true, $attributeNames = null)
}
```
> 提示:你可以直接调用 [[yii\db\ActiveRecord::insert()|insert()]] 或者 [[yii\db\ActiveRecord::update()|update()]]
> Tip: 你可以直接调用 [[yii\db\ActiveRecord::insert()|insert()]] 或者 [[yii\db\ActiveRecord::update()|update()]]
方法来插入或更新一条记录。
@ -393,7 +393,7 @@ public function save($runValidation = true, $attributeNames = null)
只有当验证通过时,它才会真正地保存数据; 否则将简单地返回`false`,
您可以检查 [[yii\db\ActiveRecord::errors|errors]] 属性来获取验证过程的错误消息。
> 提示:如果你确定你的数据不需要验证(比如说数据来自可信的场景),
> Tip: 如果你确定你的数据不需要验证(比如说数据来自可信的场景),
你可以调用 `save(false)` 来跳过验证过程。
@ -488,7 +488,7 @@ $customer->loadDefaultValues();
值绑定到具有正确类型的。但是,ActiveRecord 实例的属性值不会
在保存过程中转换。
> 提示: 你可以使用 [[yii\behaviors\AttributeTypecastBehavior]] 来简化属性的类型转换
> Tip: 你可以使用 [[yii\behaviors\AttributeTypecastBehavior]] 来简化属性的类型转换
在 ActiveRecord 验证或者保存过程中。
@ -528,7 +528,7 @@ $customer->delete();
Customer::deleteAll(['status' => Customer::STATUS_INACTIVE]);
```
> 提示:不要随意使用 [[yii\db\ActiveRecord::deleteAll()|deleteAll()]] 它真的会
> Tip: 不要随意使用 [[yii\db\ActiveRecord::deleteAll()|deleteAll()]] 它真的会
清空你表里的数据,因为你指不定啥时候犯二。
@ -596,7 +596,7 @@ Customer::deleteAll(['status' => Customer::STATUS_INACTIVE]);
[[yii\db\ActiveRecord::EVENT_AFTER_DELETE|EVENT_AFTER_DELETE]] 事件。
> 提示:调用以下方法则不会启动上述的任何生命周期,
> Tip: 调用以下方法则不会启动上述的任何生命周期,
> 因为这些方法直接操作数据库,而不是基于 AR 模型:
>
> - [[yii\db\ActiveRecord::updateAll()]]
@ -642,7 +642,7 @@ try {
}
```
> 提示:在上面的代码中,我们有两个catch块用于兼容
> Tip: 在上面的代码中,我们有两个catch块用于兼容
> PHP 5.x 和 PHP 7.x。 `\Exception` 继承于 [`\Throwable` interface](http://php.net/manual/en/class.throwable.php)
> 由于 PHP 7.0 的改动,如果您的应用程序仅使用 PHP 7.0 及更高版本,您可以跳过 `\Exception` 部分。
@ -812,7 +812,7 @@ $customer = Customer::findOne(123);
$orders = $customer->orders;
```
> 提示:当你通过 getter 方法 `getXyz()` 声明了一个叫 `xyz` 的关联属性,你就可以像
> Tip: 当你通过 getter 方法 `getXyz()` 声明了一个叫 `xyz` 的关联属性,你就可以像
[属性](concept-properties.md) 那样访问 `xyz`。注意这个命名是区分大小写的。
如果使用 [[yii\db\ActiveRecord::hasMany()|hasMany()]] 声明关联关系,则访问此关联属性
@ -825,7 +825,7 @@ $orders = $customer->orders;
SQL 语句。要强制重新执行 SQL 语句,你应该先 unset 这个关联属性,
如:`unset($ customer-> orders)`。
> 提示:虽然这个概念跟 这个 [属性](concept-properties.md) 特性很像,
> Tip: 虽然这个概念跟 这个 [属性](concept-properties.md) 特性很像,
> 但是还是有一个很重要的区别。普通对象属性的属性值与其定义的 getter 方法的类型是相同的。
> 而关联方法返回的是一个 [[yii\db\ActiveQuery]] 活动查询生成器的实例。只有当访问关联属性的的时候,
> 才会返回 [[yii\db\ActiveRecord]] AR 实例,或者 AR 实例组成的数组。
@ -1020,7 +1020,7 @@ $items = $customers[0]->orders[0]->items;
那就是, 当你调用 [[yii\db\ActiveQuery::with()|with()]] 来 with `a.b.c.d`, 你将即时加载
`a`, `a.b`, `a.b.c` and `a.b.c.d`
> 提示:一般来说,当即时加载 `N` 个关联,另有 `M` 个关联
> Tip: 一般来说,当即时加载 `N` 个关联,另有 `M` 个关联
通过 [连接表](#junction-table) 声明,则会有 `N+M+1` 条 SQL 语句被执行。
请注意这样的的嵌套关联 `a.b.c.d` 算四个关联。
@ -1045,7 +1045,7 @@ $customers = Customer::find()->with([
它用于表示这个自定义的关联执行关联查询的 [[yii\db\ActiveQuery]] 对象。
在上面的代码示例中,我们通过附加一个关于订单状态的附加条件来修改关联查询。
> 提示:如果你在即时加载的关联中调用 [[yii\db\Query::select()|select()]] 方法,你要确保
> Tip: 如果你在即时加载的关联中调用 [[yii\db\Query::select()|select()]] 方法,你要确保
> 在关联声明中引用的列必须被 select。否则,相应的模型(Models)可能
> 无法加载。例如,
>
@ -1058,7 +1058,7 @@ $customers = Customer::find()->with([
### 关联关系的 JOIN 查询 <span id="joining-with-relations"></span>
> 提示:这小节的内容仅仅适用于关系数据库,
> Tip: 这小节的内容仅仅适用于关系数据库,
比如 MySQL,PostgreSQL 等等。
到目前为止,我们所介绍的关联查询,仅仅是使用主表列
@ -1080,7 +1080,7 @@ $customers = Customer::find()
->all();
```
> 提示:在构建涉及 JOIN SQL 语句的连接查询时,清除列名的歧义很重要。
> Tip: 在构建涉及 JOIN SQL 语句的连接查询时,清除列名的歧义很重要。
通常的做法是将表名称作为前缀加到对应的列名称前。
但是,更好的方法是通过调用 [[yii\db\ActiveQuery::joinWith()]] 来利用已存在的关联声明:
@ -1132,7 +1132,7 @@ $customers = Customer::find()->joinWith([
以上查询取出 *所有* 客户,并为每个客户取回所有活跃订单。
港真,这与我们之前的例子不同,后者仅取出至少有一个活跃订单的客户。
> 提示:当通过 [[yii\db\ActiveQuery::onCondition()|onCondition()]] 修改 [[yii\db\ActiveQuery]] 时,
> Tip: 当通过 [[yii\db\ActiveQuery::onCondition()|onCondition()]] 修改 [[yii\db\ActiveQuery]] 时,
如果查询涉及到 JOIN 查询,那么条件将被放在 `ON` 部分。如果查询不涉及
JOIN ,条件将自动附加到查询的 `WHERE` 部分。
因此,它可以只包含 包含了关联表的列 的条件。(译者注:意思是 onCondition() 中可以只写关联表的列,主表的列写不写都行)
@ -1242,7 +1242,7 @@ $customer2 = $order->customer;
echo $customer2 === $customer ? 'same' : 'not the same';
```
> 提示:反向关联不能用在有 [连接表](#junction-table) 关联声明中。
> Tip: 反向关联不能用在有 [连接表](#junction-table) 关联声明中。
也就是说,如果一个关联关系通过 [[yii\db\ActiveQuery::via()|via()]] 或 [[yii\db\ActiveQuery::viaTable()|viaTable()]] 声明,
你就不能再调用 [[yii\db\ActiveQuery::inverseOf()|inverseOf()]] 了。
@ -1281,7 +1281,7 @@ $order->link('customer', $customer);
`Customer` 实例的 `id` 属性的值,然后保存
到数据库。
> 提示:你不能 link() 两个新的 AR 实例。(译者注:其中的一个必须是数据库中查询出来的)
> Tip: 你不能 link() 两个新的 AR 实例。(译者注:其中的一个必须是数据库中查询出来的)
当一个关联关系通过 [连接表](#junction-table) 定义时,此 [[yii\db\ActiveRecord::link()|link()]] 方法更能体现在党的领导下的中国特色社会主义的优越性。
例如,你可以使用以下代码 link() `Order` 实例
@ -1293,7 +1293,7 @@ $order->link('items', $item);
上述代码会自动在 `order_item` 关联表中插入一行,以关联 order 和 item 这两个数据记录。
> 提示:[[yii\db\ActiveRecord::link()|link()]] 方法在保存相应的 AR 实例时,
> Tip: [[yii\db\ActiveRecord::link()|link()]] 方法在保存相应的 AR 实例时,
将不会执行任何数据验证。在调用此方法之前,
您应当验证所有的输入数据。
@ -1356,7 +1356,7 @@ $customers = Customer::find()->with('comments')->all();
本节中描述的大多数关联查询功能,你都可以抄一抄。
> 提示:[[yii\db\ActiveQuery::joinWith()|joinWith()]] 这个功能限制于某些数据库是否支持跨数据库 JOIN 查询。
> Tip: [[yii\db\ActiveQuery::joinWith()|joinWith()]] 这个功能限制于某些数据库是否支持跨数据库 JOIN 查询。
因此,你再上述的代码里就不能用此方法了,因为 MongoDB 不知道 JOIN 查询。
@ -1410,7 +1410,7 @@ class CommentQuery extends ActiveQuery
}
```
> 提示:作为 [[yii\db\ActiveQuery::onCondition()|onCondition()]] 方法的替代方案,你应当
> Tip: 作为 [[yii\db\ActiveQuery::onCondition()|onCondition()]] 方法的替代方案,你应当
调用 [[yii\db\ActiveQuery::andOnCondition()|andOnCondition()]] 或 [[yii\db\ActiveQuery::orOnCondition()|orOnCondition()]] 方法来附加新增的条件,不然在一个新定义的查询方法,已存在的条件可能会被覆盖。
然后你就可以先下面这样构建你的查询了:
@ -1420,7 +1420,7 @@ $comments = Comment::find()->active()->all();
$inactiveComments = Comment::find()->active(false)->all();
```
> 提示:在大型项目中,建议您使用自定义查询类来容纳大多数与查询相关的代码,
> Tip: 在大型项目中,建议您使用自定义查询类来容纳大多数与查询相关的代码,
以使 AR 类保持简洁。
您还可以在 `Comment` 关联关系的定义中或在执行关联查询时,使用刚刚新建查询构建方法:
@ -1452,7 +1452,7 @@ $customers = Customer::find()->joinWith([
])->all();
```
> 提示:在 Yii 1.1 中,有个概念叫做 *命名范围*。命名范围在 Yii 2.0 中不再支持,
> Tip: 在 Yii 1.1 中,有个概念叫做 *命名范围*。命名范围在 Yii 2.0 中不再支持,
你依然可以使用自定义查询类、查询方法来达到一样的效果。

12
docs/guide-zh-CN/db-dao.md

@ -60,7 +60,7 @@ return [
之后你就可以通过语句 `Yii::$app->db` 来使用数据库连接了。
> 提示:如果你的应用需要访问多个数据库,你可以配置多个 DB 应用组件。
> Tip: 如果你的应用需要访问多个数据库,你可以配置多个 DB 应用组件。
配置数据库连接时, 你应该总是通过 [[yii\db\Connection::dsn|dsn]] 属性来指明它的数据源名称 (DSN) 。
不同的数据库有着不同的 DSN 格式。
@ -99,7 +99,7 @@ return [
直到你第一次执行 SQL 或者你明确地调用 [[yii\db\Connection::open()|open()]] 方法时,
才建立起实际的数据库连接。
> 提示:有时你可能想要在建立起数据库连接时立即执行一些语句来初始化一些环境变量 (比如设置时区或者字符集),
> Tip: 有时你可能想要在建立起数据库连接时立即执行一些语句来初始化一些环境变量 (比如设置时区或者字符集),
> 你可以通过为数据库连接的 [[yii\db\Connection::EVENT_AFTER_OPEN|afterOpen]] 事件注册一个事件处理器来达到目的。
> 你可以像这样直接在应用配置中注册处理器:
>
@ -147,7 +147,7 @@ $count = Yii::$app->db->createCommand('SELECT COUNT(*) FROM post')
->queryScalar();
```
> 注意:为了保持精度,
> Note: 为了保持精度,
> 即使对应的数据库列类型为数值型,
> 所有从数据库取得的数据都被表现为字符串。
@ -428,12 +428,12 @@ Yii 提供了以下常量作为常用的隔离级别
在本文写作之时,
只有 MSSQL 和 SQLite 受这些限制的影响。
> 注意:SQLite 只支持两种隔离级别,
> Note: SQLite 只支持两种隔离级别,
所以你只能使用 `READ UNCOMMITTED``SERIALIZABLE`
使用其他级别将导致异常的抛出。
> 注意:PostgreSQL 不支持在事务开启前设定隔离级别,
> Note: PostgreSQL 不支持在事务开启前设定隔离级别,
因此,你不能在开启事务时直接指定隔离级别。
你必须在事务开始后再调用 [[yii\db\Transaction::setIsolationLevel()]]。
@ -604,7 +604,7 @@ Yii::$app->db->createCommand("UPDATE user SET username='demo' WHERE id=1")->exec
唯一的差别是,
如果没有主库可用,将抛出一个异常。
> 注意: 当你使用 [[yii\db\Connection::masters|masters]] 属性来配置一个或多个主库时,
> Note: 当你使用 [[yii\db\Connection::masters|masters]] 属性来配置一个或多个主库时,
所有其他指定数据库连接的属性 (例如 `dsn`, `username`, `password`) 与 `Connection` 对象本身将被忽略。
默认情况下,

26
docs/guide-zh-CN/db-migrations.md

@ -35,7 +35,7 @@ Yii 提供了一整套的迁移命令行工具,通过这些工具你可以:
在这一章节,我们将详细的介绍如何使用这些工具来完成各种各样的任务。
你也可以通过 `yii help migrate` 命令来获取每一种工具的具体使用方法。
> 注意:迁移不仅仅只作用于数据库表,
> Note: 迁移不仅仅只作用于数据库表,
它同样会调整现有的数据来适应新的表单、创建 RBAC 分层、又或者是清除缓存。
@ -55,7 +55,7 @@ yii migrate/create <name>
yii migrate/create create_news_table
```
> 注意:因为 `name` 参数会被用来生成迁移的类名的一部分,
> Note: 因为 `name` 参数会被用来生成迁移的类名的一部分,
所以该参数应当只包含字母、数字和下划线。
如上命令将会在 `@app/migrations` 目录下创建一个新的名为 `m150101_185401_create_news_table.php` 的 PHP 类文件。
@ -129,7 +129,7 @@ class m150101_185401_create_news_table extends \yii\db\Migration
}
```
> 注意:并不是所有迁移都是可恢复的。例如,如果 `up()` 方法删除了表中的一行数据,
> Note: 并不是所有迁移都是可恢复的。例如,如果 `up()` 方法删除了表中的一行数据,
这将无法通过 `down()` 方法来恢复这条数据。有时候,你也许只是懒得去执行 `down()` 方法了,
因为它在恢复数据库迁移方面并不是那么的通用。在这种情况下,
你应当在 `down()` 方法中返回 `false` 来表明这个 migration 是无法恢复的。
@ -149,7 +149,7 @@ migration 的基类 [[yii\db\Migration]] 通过 [[yii\db\Migration::db|db]] 属
在使用抽象类型的时候,你可以添加额外的约束条件。在上面的例子当中,
`NOT NULL` 被添加到 `Schema::TYPE_STRING` 当中来指定该字段不能为空。
> 提示:抽象类型和实体类型之间的映射关系是由每个具体的 `QueryBuilder`
> Tip: 抽象类型和实体类型之间的映射关系是由每个具体的 `QueryBuilder`
类当中的 [[yii\db\QueryBuilder::$typeMap|$typeMap]] 属性所指定的。
Since version 2.0.6, you can make use of the newly introduced schema builder which provides more convenient way of defining column schema.
@ -296,7 +296,7 @@ class m150811_220037_create_post extends Migration
}
```
> 注意:primary key is added automatically and is named `id` by default. If you want to use another name you may
> Note: primary key is added automatically and is named `id` by default. If you want to use another name you may
> specify it explicitly like `--fields="name:primaryKey"`.
#### Foreign keys
@ -647,7 +647,7 @@ class m150101_185401_create_news_table extends Migration
在上面的例子当中,我们在 `safeUp()` 方法当中首先创建了一张表,然后插入了一条数据;而在 `safeDown()` 方法当中,
我们首先删除那一行数据,然后才删除那张表。
> 注意:并不是所有的数据库都支持事务。有些数据库查询也是不能被放倒事务里面的。
> Note: 并不是所有的数据库都支持事务。有些数据库查询也是不能被放倒事务里面的。
在 [implicit commit](http://dev.mysql.com/doc/refman/5.1/en/implicit-commit.html) 章节当中有相关的例子可以参考。
如果遇到这种情况的话,那么你应该使用 `up()``down()` 方法进行替代。
@ -689,11 +689,11 @@ class m150101_185401_create_news_table extends Migration
* [[yii\db\Migration::addCommentOnTable()|addCommentOnTable()]]: adding comment to table
* [[yii\db\Migration::dropCommentFromTable()|dropCommentFromTable()]]: dropping comment from table
> 提示:[[yii\db\Migration]] 并没有提供数据库的查询方法。
> Tip: [[yii\db\Migration]] 并没有提供数据库的查询方法。
这是因为通常你是不需要去数据库把数据一行一行查出来再显示出来的。
另外一个原因是你完全可以使用强大的 [Query Builder 查询构建器](db-query-builder.md) 来构建和查询。
> 注意:When manipulating data using a migration you may find that using your [Active Record](db-active-record.md) classes
> Note: When manipulating data using a migration you may find that using your [Active Record](db-active-record.md) classes
> for this might be useful because some of the logic is already implemented there. Keep in mind however, that in contrast
> to code written in the migrations, who's nature is to stay constant forever, application logic is subject to change.
> So when using Active Record in migration code, changes to the logic in the Active Record layer may accidentally break
@ -714,14 +714,14 @@ yii migrate
如果其中任意一个迁移提交失败了,
那么这条命令将会退出并停止剩下的那些还未执行的迁移。
> 提示:In case you don't have command line at your server you may try [web shell](https://github.com/samdark/yii2-webshell)
> Tip: In case you don't have command line at your server you may try [web shell](https://github.com/samdark/yii2-webshell)
> extension.
对于每一个成功提交的迁移,这条命令都会在一个叫做 `migration`
的数据库表中插入一条包含应用程序成功提交迁移的记录,
该记录将帮助迁移工具判断哪些迁移已经提交,哪些还没有提交。
> 提示:迁移工具将会自动在数据库当中创建 `migration` 表,
> Tip: 迁移工具将会自动在数据库当中创建 `migration` 表,
该数据库是在该命令的 [[yii\console\controllers\MigrateController::db|db]] 选项当中指定的。
默认情况下,是由 `db` [application component](structure-application-components.md) 指定的。
@ -758,7 +758,7 @@ yii migrate/down # revert the most recently applied migration 还原最近
yii migrate/down 3 # revert the most 3 recently applied migrations 还原最近三次提交的迁移
```
> 注意:并不是所有的迁移都能被还原。
> Note: 并不是所有的迁移都能被还原。
尝试还原这类迁移将可能导致报错甚至是终止所有的还原进程。
@ -772,7 +772,7 @@ yii migrate/redo # redo the last applied migration 重做最近一次提
yii migrate/redo 3 # redo the last 3 applied migrations 重做最近三次提交的迁移
```
> 注意:如果一个迁移是不能被还原的,那么你将无法对它进行重做。
> Note: 如果一个迁移是不能被还原的,那么你将无法对它进行重做。
## 列出迁移 <span id="listing-migrations"></span>
@ -919,7 +919,7 @@ class m150101_185401_create_news_table extends Migration
如果有多个迁移都使用到了同一个数据库,那么建议你创建一个迁移的基类,里面包含上述的 `init()` 代码。
然后每个迁移类都继承这个基类就可以了。
> 提示:除了在 [[yii\db\Migration::db|db]] 参数当中进行设置以外,
> Tip: 除了在 [[yii\db\Migration::db|db]] 参数当中进行设置以外,
你还可以通过在迁移类中创建新的数据库连接来操作不同的数据库。
然后通过这些连接再使用 [DAO 方法](db-dao.md) 来操作不同的数据库。

16
docs/guide-zh-CN/db-query-builder.md

@ -31,7 +31,7 @@ WHERE `last_name` = :last_name
LIMIT 10
```
> 提示:你平时更多的时候会使用 [[yii\db\Query]] 而不是 [yii\db\QueryBuilder]]。
> Tip: 你平时更多的时候会使用 [[yii\db\Query]] 而不是 [yii\db\QueryBuilder]]。
当你调用其中一个查询方法时,后者将会被前者隐式的调用。[[yii\db\QueryBuilder]]主要负责将
DBMS 不相关的 [[yii\db\Query]] 对象转换成 DBMS 相关的 SQL 语句(例如,
以不同的方式引用表或字段名称)。
@ -278,7 +278,7 @@ you do not have to add parameters manually.
当使用转义映射(又或者没有提供第三个操作数的时候),第二个操作数的值的前后
将会被加上百分号。
> 注意:当使用 PostgreSQL 的时候你还可以使用 [`ilike`](http://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE),
> Note: 当使用 PostgreSQL 的时候你还可以使用 [`ilike`](http://www.postgresql.org/docs/8.3/static/functions-matching.html#FUNCTIONS-LIKE),
> 该方法对大小写不敏感。
- `or like`: 用法和 `like` 操作符类似,区别在于当第二个操作数为数组时,
@ -345,7 +345,7 @@ $query->filterWhere([
将忽略在条件当中的[hash format](#hash-format)的空值。所以如果 `$email` 为空而 `$username`
不为空,那么上面的代码最终将生产如下 SQL `...WHERE username=:username`
> 提示:当一个值为 null、空数组、空字符串或者一个只包含空白字符时,那么它将被判定为空值。
> Tip: 当一个值为 null、空数组、空字符串或者一个只包含空白字符时,那么它将被判定为空值。
类似于 [yii\db\Query::andWhere()|andWhere()]] 和 [[yii\db\Query::orWhere()|orWhere()]],
你可以使用 [[yii\db\Query::andFilterWhere()|andFilterWhere()]] 和 [[yii\db\Query::orFilterWhere()|orFilterWhere()]] 方法
@ -388,7 +388,7 @@ PHP 的常量 `SORT_ASC` 指的是升序排列,`SORT_DESC` 指的则是降序
$query->orderBy('id ASC, name DESC');
```
> 注意:`ORDER BY` 语句包含一些 DB 表达式的时候,你应该使用数组的格式。
> Note: `ORDER BY` 语句包含一些 DB 表达式的时候,你应该使用数组的格式。
你可以调用 [yii\db\Query::addOrderBy()|addOrderBy()]] 来为 `ORDER BY` 片断添加额外的子句。
例如,
@ -415,7 +415,7 @@ $query->groupBy(['id', 'status']);
$query->groupBy('id, status');
```
> 注意:`GROUP BY` 语句包含一些 DB 表达式的时候,你应该使用数组的格式。
> Note: `GROUP BY` 语句包含一些 DB 表达式的时候,你应该使用数组的格式。
你可以调用 [yii\db\Query::addOrderBy()|addOrderBy()]] 来为 `GROUP BY`
子句添加额外的字段。例如,
@ -460,7 +460,7 @@ $query->limit(10)->offset(20);
如果你指定了一个无效的 limit 或者 offset(例如,一个负数),那么它将会被忽略掉。
> 提示:在不支持 `LIMIT``OFFSET` 的 DBMS 中(例如,MSSQL),
> Tip: 在不支持 `LIMIT``OFFSET` 的 DBMS 中(例如,MSSQL),
查询构建器将生成一条模拟 `LIMIT`/`OFFSET` 行为的 SQL 语句。
@ -560,7 +560,7 @@ $row = (new \yii\db\Query())
->one();
```
> 注意:[[yii\db\Query::one()|one()]] 方法只返回查询结果当中的第一条数据,
> Note: [[yii\db\Query::one()|one()]] 方法只返回查询结果当中的第一条数据,
条件语句中不会加上 `LIMIT 1` 条件。如果你清楚的知道查询将会只返回一行或几行数据
(例如, 如果你是通过某些主键来查询的),这很好也提倡这样做。但是,如果查询结果
有机会返回大量的数据时,那么你应该显示调用 `limit(1)` 方法,以改善性能。
@ -634,7 +634,7 @@ $query = (new \yii\db\Query())
该匿名函数将带有一个包含了当前行的数据的 `$row` 参数,并且返回用作当前行索引的
标量值(译者注:就是简单的数值或者字符串,而不是其他复杂结构,例如数组)。
> 注意:In contrast to query methods like [[yii\db\Query::groupBy()|groupBy()]] or [[yii\db\Query::orderBy()|orderBy()]]
> Note: In contrast to query methods like [[yii\db\Query::groupBy()|groupBy()]] or [[yii\db\Query::orderBy()|orderBy()]]
> which are converted to SQL and are part of the query, this method works after the data has been fetched from the database.
> That means that only those column names can be used that have been part of SELECT in your query.
> Also if you selected a column with table prefix, e.g. `customer.id`, the result set will only contain `id` so you have to call

4
docs/guide-zh-CN/helper-html.md

@ -6,7 +6,7 @@ Html 帮助类
这种做法是非常高效的。但是,如果这些超文本标记是动态生成的,那么如果没有额外的辅助工具,这个过程将会变得复杂。
Yii 通过 HTML 帮助类来提供生成超文本标记的方法。这个帮助类包含有一系列的用于处理通用的 HTML 标签和其属性以及内容的静态方法。
> 注意:如果你的超文本标记接近静态的,那么最好是直接使用 HTML。
> Note: 如果你的超文本标记接近静态的,那么最好是直接使用 HTML。
没有必要把所有的超文本标记都用 HTML 辅助类来生成。
@ -166,7 +166,7 @@ $decodedUserName = Html::decode($userName);
处理表单标签是大量的重复性劳动并且易错。因此,
Yii 也提供了一系列的方法来辅助处理表单标签。
> 注意: 考虑在处理 models 以及需要验证的情形下,使用 [[yii\widgets\ActiveForm|ActiveForm]] 组件。
> Note: 考虑在处理 models 以及需要验证的情形下,使用 [[yii\widgets\ActiveForm|ActiveForm]] 组件。
### 创建表单 <span id="creating-forms"></span>

4
docs/guide-zh-CN/helper-overview.md

@ -1,7 +1,7 @@
助手类
=======
> 注意:这部分正在开发中。
> Note: 这部分正在开发中。
Yii 提供许多类来简化常见编码,如对字条串或数组的操作,
HTML 代码生成,等等。这些助手类被编写在命名空间 `yii\helpers` 下,并且
@ -15,7 +15,7 @@ use yii\helpers\Html;
echo Html::encode('Test > test');
```
> 注意:为了支持 [自定义助手类](#customizing-helper-classes),Yii 将每一个助手类
> Note: 为了支持 [自定义助手类](#customizing-helper-classes),Yii 将每一个助手类
分隔成两个类:一个基类 (例如 `BaseArrayHelper`) 和一个具体的类 (例如 `ArrayHelper`)。
当使用助手类时,应该仅使用具体的类版本而不使用基类。

4
docs/guide-zh-CN/input-file-upload.md

@ -51,7 +51,7 @@ class UploadForm extends Model
通过 `file` 验证器,你可以检查文件的扩展名,大小,MIME类型等等。详情请查阅
[Core Validatators](tutorial-core-validators.md#file) 章节。
> 提示:如果你要上传的是一张图片,可以考虑使用`image`验证器。
> Tip: 如果你要上传的是一张图片,可以考虑使用`image`验证器。
`image` 验证器是通过[[yii\validators\ImageValidator]]实现验证的,确保对应的模型属性
收到的文件是有效的图片文件,然后才保存,或者使用扩展类[Imagine Extension](https://github.com/yiisoft/yii2-imagine)进行处理.
@ -77,7 +77,7 @@ use yii\widgets\ActiveForm;
需要注意的是要记得在表单选项里加入 `enctype` 属性以确保文件能被正常上传。
`fileInput()` 方法会渲染一个 `<input type="file">` 标签,让用户可以选择一个文件上传。
> 提示:since version 2.0.8, [[yii\web\widgets\ActiveField::fileInput|fileInput]] adds `enctype` option to the form
> Tip: since version 2.0.8, [[yii\web\widgets\ActiveField::fileInput|fileInput]] adds `enctype` option to the form
automatically when file input field is used.
## 视图和模型的连接 <span id="wiring-up"></span>

10
docs/guide-zh-CN/input-forms.md

@ -19,7 +19,7 @@
在客户端显示的表单,大多数情况下都有一个相应的[模型](structure-models.md),用来在服务器上验证其输入的数据(可在[输入验证](input-validation.md)一节获取关于验证的细节)。当创建一个基于模型的表单时,第一步是定义模型本身。该模型可以是一个基于[活动记录](db-active-record.md)的类,表示数据库中的数据,也可以是一个基于通用模型的类(继承自[[yii\base\Model]]),来获取任意的输入数据,如登录表单。
> Tip: 如果一个表单的输入域与数据库的字段不匹配,或者它存在只适用于它的特殊的格式或者方法,则最好为它创建一个单独的继承自[[yii\base\Model]]的模型。
> Tip: 如果一个表单的输入域与数据库的字段不匹配,或者它存在只适用于它的特殊的格式或者方法,则最好为它创建一个单独的继承自[[yii\base\Model]]的模型。
在接下来的例子中,我们展示了通用模型如何用于登录表单:
@ -89,7 +89,7 @@ input 输入框的 name 属性会自动地根据 [[yii\base\Model::formName()|fo
例如,对于在上面的例子中 `username` 输入字段的 name 属性将是 `LoginForm[username]`
这种命名规则使所有属性的数组的登录表单在服务器端的 `$_POST['LoginForm']` 数组中是可用的。
> 提示:If you have only one model in a form and want to simplify the input names you may skip the array part by
> Tip: If you have only one model in a form and want to simplify the input names you may skip the array part by
> overriding the [[yii\base\Model::formName()|formName()]] method of the model to return an empty string.
> This can be useful for filter models used in the [GridView](output-data-widgets.md#grid-view) to create nicer URLs.
@ -116,12 +116,12 @@ echo $form->field($model, 'items[]')->checkboxList(['a' => 'Item A', 'b' => 'Ite
[[yii\helpers\Html::submitButton()|Html::submitButton()]]。
> 提示:如果你正在你的应用程序中使用 Twitter Bootstrap CSS 你可以使用[[yii\bootstrap\ActiveForm]]
> Tip: 如果你正在你的应用程序中使用 Twitter Bootstrap CSS 你可以使用[[yii\bootstrap\ActiveForm]]
> 来代替 [[yii\widgets\ActiveForm]]。
> 前者继承自后者并在生成表单字段时使用 Bootstrap 特有的样式。
> 提示:为了设计带星号的表单字段,你可以使用下面的 CSS:
> Tip: 为了设计带星号的表单字段,你可以使用下面的 CSS:
>
> ```css
> div.required label:after {
@ -179,7 +179,7 @@ Pjax::begin([
ActiveForm::end();
Pjax::end();
```
> 提示:Be careful with the links inside the [[yii\widgets\Pjax|Pjax]] widget since
> Tip: Be careful with the links inside the [[yii\widgets\Pjax|Pjax]] widget since
> the response will also be rendered inside the widget. To prevent this, use the
> `data-pjax="0"` HTML attribute.

2
docs/guide-zh-CN/input-tabular-input.md

@ -105,7 +105,7 @@ public function actionCreate()
### 把更新,创建和删除结合在一个页面上
> 注意:此章节正在开发中。
> Note: 此章节正在开发中。
>
> 还没有内容。

16
docs/guide-zh-CN/input-validation.md

@ -96,7 +96,7 @@ public function rules()
方法里的激活特性,且它还必须与一或多个声明自
`rules()` 里的激活规则相关联才会被验证。
> 注意:It is handy to give names to rules i.e.
> Note: It is handy to give names to rules i.e.
> ```php
> public function rules()
> {
@ -255,7 +255,7 @@ return [
}]
```
> 注意:对于绝大多数验证器而言,若其 [[yii\base\Validator::skipOnEmpty]] 属性为默认值
> Note: 对于绝大多数验证器而言,若其 [[yii\base\Validator::skipOnEmpty]] 属性为默认值
true,则它们不会对空值进行任何处理。也就是当他们的关联特性接收到空值时,相关验证会被直接略过。在
[核心验证器](tutorial-core-validators.md) 之中,只有 `captcha`(验证码),`default`(默认值),
`filter`(滤镜),`required`(必填),以及 `trim`(去首尾空格),这几个验证器会处理空输入。
@ -279,7 +279,7 @@ if ($validator->validate($email, $error)) {
}
```
> 注意:不是所有的验证器都支持这种形式的验证。比如 [unique(唯一性)](tutorial-core-validators.md#unique)核心验证器就就是一个例子,
> Note: 不是所有的验证器都支持这种形式的验证。比如 [unique(唯一性)](tutorial-core-validators.md#unique)核心验证器就就是一个例子,
它的设计初衷就是只作用于模型类内部的。
若你需要针对一系列值执行多项验证,你可以使用 [[yii\base\DynamicModel]]
@ -386,7 +386,7 @@ class MyForm extends Model
}
```
> 注意:缺省状态下,行内验证器不会在关联特性的输入值为空或该特性已经在其他验证中失败的情况下起效。
> Note: 缺省状态下,行内验证器不会在关联特性的输入值为空或该特性已经在其他验证中失败的情况下起效。
若你想要确保该验证器始终启用的话,你可以在定义规则时,酌情将
[[yii\validators\Validator::skipOnEmpty|skipOnEmpty]] 以及
[[yii\validators\Validator::skipOnError|skipOnError]]属性设为 false,比如,
@ -582,7 +582,7 @@ JS;
}
```
> 提示:上述代码主要是演示了如何支持客户端验证。在具体实践中,
> Tip: 上述代码主要是演示了如何支持客户端验证。在具体实践中,
> 你可以使用 [in](tutorial-core-validators.md#in) 核心验证器来达到同样的目的。
> 比如这样的验证规则:
>
@ -592,7 +592,7 @@ JS;
> ]
> ```
> 提示:If you need to work with client validation manually i.e. dynamically add fields or do some custom UI logic, refer
> Tip: If you need to work with client validation manually i.e. dynamically add fields or do some custom UI logic, refer
> to [Working with ActiveForm via JavaScript](https://github.com/samdark/yii2-cookbook/blob/master/book/forms-activeform-js.md)
> in Yii 2.0 Cookbook.
@ -643,7 +643,7 @@ JS;
}
```
> 注意:The `resolve()` method must be called after the attribute has been validated. Otherwise the main form
> Note: The `resolve()` method must be called after the attribute has been validated. Otherwise the main form
validation will not complete.
For simplicity, the `deferred` array is equipped with a shortcut method `add()` which automatically creates a Deferred
@ -706,7 +706,7 @@ $form = ActiveForm::begin([
]);
```
> 注意:When the `enableAjaxValidation` property is configured at both the input field level and the form level,
> Note: When the `enableAjaxValidation` property is configured at both the input field level and the form level,
the former will take precedence.
You also need to prepare the server so that it can handle the AJAX validation requests.

2
docs/guide-zh-CN/output-client-scripts.md

@ -1,7 +1,7 @@
客户端脚本使用
===========================
> 注意:此部分应用于开发环境
> Note: 此部分应用于开发环境
### 注册脚本

4
docs/guide-zh-CN/output-data-providers.md

@ -91,7 +91,7 @@ use yii\db\Query;
$query = (new Query())->from('post')->where(['status' => 1]);
```
> 注意:假如查询已经指定了 `orderBy` 从句,则终端用户给定的新的排序说明(通过 `sort` 来配置的)
> Note: 假如查询已经指定了 `orderBy` 从句,则终端用户给定的新的排序说明(通过 `sort` 来配置的)
将被添加到已经存在的从句中。任何已经存在的 `limit``offset` 从句都将被终端用户所请求的分页
(通过 `pagination` 所配置的)所重写。
@ -175,7 +175,7 @@ $provider = new ArrayDataProvider([
$rows = $provider->getModels();
```
> 注意:数组数据提供者与 [Active Data Provider](#active-data-provider) 和 [SQL Data Provider](#sql-data-provider) 这两者进行比较的话,
> Note: 数组数据提供者与 [Active Data Provider](#active-data-provider) 和 [SQL Data Provider](#sql-data-provider) 这两者进行比较的话,
会发现数组数据提供者没有后面那两个高效,这是因为数组数据提供者需要加载*所有*的数据到内存中。

6
docs/guide-zh-CN/output-data-widgets.md

@ -333,7 +333,7 @@ echo GridView::widget([
### 数据排序
> 注意:这部分正在开发中。
> Note: 这部分正在开发中。
>
> - https://github.com/yiisoft/yii2/issues/1576
@ -397,7 +397,7 @@ class PostSearch extends Post
}
```
> 提示:See [Query Builder](db-query-builder.md) and especially [Filter Conditions](db-query-builder.md#filter-conditions)
> Tip: See [Query Builder](db-query-builder.md) and especially [Filter Conditions](db-query-builder.md#filter-conditions)
> to learn how to build filtering query.
你可以在控制器中使用如下方法为网格视图获取数据提供者:
@ -465,7 +465,7 @@ and include it in `index.php` view like so:
<?= $this->render('_search', ['model' => $searchModel]) ?>
```
> 注意:if you use Gii to generate CRUD code, the separate filter form (`_search.php`) is generated by default,
> Note: if you use Gii to generate CRUD code, the separate filter form (`_search.php`) is generated by default,
but is commented in `index.php` view. Uncomment it and it's ready to use!
Separate filter form is useful when you need to filter by fields, that are not displayed in GridView

4
docs/guide-zh-CN/output-formatting.md

@ -40,7 +40,7 @@ echo Yii::$app->formatter->format('2014-01-01', 'date');
echo Yii::$app->formatter->format(0.125, ['percent', 2]);
```
> 注意:`formatter` 组件用来格式化最终展示给用户的数据.
> Note: `formatter` 组件用来格式化最终展示给用户的数据.
> 如果你想要将用户的输入进行格式化或者只是将一些别的日期数据进行格式化(这里的格式化说的是机器可读的格式化),不要使用这个组件,
> 而应该使用 [[yii\validators\DateValidator]] 和 [[yii\validators\NumberValidator]] 进行用户输入格式化
> 关于日期格式化,戳这里 [date()](http://php.net/manual/en/function.date.php)
@ -193,7 +193,7 @@ echo Yii::$app->formatter->asDate('2014-01-01'); // output: 1 января 2014
默认配置下,当前 [[yii\i18n\Formatter::locale|locale]] 决定于 [[yii\base\Application::language]].
你可以覆盖 [[yii\i18n\Formatter::locale]] 属性来满足不同的需要。
> 注意:Yii formatter 依赖 [PHP intl extension](http://php.net/manual/en/book.intl.php) 来进行本地数据格式化
> Note: Yii formatter 依赖 [PHP intl extension](http://php.net/manual/en/book.intl.php) 来进行本地数据格式化
> 因为不同的 ICU 库可能会导致不同的输出,所以请在你的所有机器上保持 ICU 库的一致性.
> 请戳 [Setting up your PHP environment for internationalization](tutorial-i18n.md#setup-environment).
>

2
docs/guide-zh-CN/output-pagination.md

@ -72,4 +72,4 @@ echo $pagination->createUrl(100);
echo $pagination->createUrl(101);
```
> 提示:创建分页对象时,你可以通过配置 [[yii\data\Pagination::pageParam|pageParam]] 属性来自定义查询参数 `page` 的名字。
> Tip: 创建分页对象时,你可以通过配置 [[yii\data\Pagination::pageParam|pageParam]] 属性来自定义查询参数 `page` 的名字。

2
docs/guide-zh-CN/rest-authentication.md

@ -36,7 +36,7 @@ Yii 支持上述的认证方式,你也可很方便的创建新的认证方式
当[[yii\web\User::enableSession|enableSession]]为false,
请求中的用户认证状态就不能通过session来保持,每个请求的认证通过步骤2和3来实现。
> 提示:如果你将RESTful APIs作为应用开发,可以设置应用配置中 `user` 组件的
> Tip: 如果你将RESTful APIs作为应用开发,可以设置应用配置中 `user` 组件的
> [[yii\web\User::enableSession|enableSession]],
> 如果将RESTful APIs作为模块开发,可以在模块的 `init()` 方法中增加如下代码,如下所示:

2
docs/guide-zh-CN/rest-controllers.md

@ -188,4 +188,4 @@ public function checkAccess($action, $model = null, $params = [])
`checkAccess()` 方法默认会被[[yii\rest\ActiveController]]默认动作所调用,如果创建新的操作并想执行权限检查,
应在新的动作中明确调用该方法。
> 提示:可使用[Role-Based Access Control (RBAC) 基于角色权限控制组件](security-authorization.md)实现`checkAccess()`。
> Tip: 可使用[Role-Based Access Control (RBAC) 基于角色权限控制组件](security-authorization.md)实现`checkAccess()`。

4
docs/guide-zh-CN/rest-quick-start.md

@ -60,7 +60,7 @@ class UserController extends ActiveController
上面的配置主要是为`user`控制器增加一个 URL 规则。这样,
用户的数据就能通过美化的 URL 和有意义的 http 动词进行访问和操作。
> 注意:Yii will automatically pluralize controller names for use in endpoints (see [Trying it Out](#trying-it-out) section below).
> Note: Yii will automatically pluralize controller names for use in endpoints (see [Trying it Out](#trying-it-out) section below).
> You can configure this using the [[yii\rest\UrlRule::$pluralize]] property.
@ -172,7 +172,7 @@ Content-Type: application/json; charset=UTF-8
{"id":1,"username":"example","email":"user@example.com","created_at":1414674789,"updated_at":1414674789}
```
> 提示:你还可以通过 Web 浏览器中输入 URL `http://localhost/users` 来访问你的 API。
> Tip: 你还可以通过 Web 浏览器中输入 URL `http://localhost/users` 来访问你的 API。
尽管如此,你可能需要一些浏览器插件来发送特定的 headers 请求。
如你所见,在 headers 响应,有关于总数,页数的信息,等等。

2
docs/guide-zh-CN/rest-resources.md

@ -90,7 +90,7 @@ public function fields()
}
```
> 警告:模型的所有属性默认会被包含到API结果中,
> Warning: 模型的所有属性默认会被包含到API结果中,
> 应检查数据确保没包含敏感数据,如果有敏感数据,
> 应覆盖`fields()`过滤掉,在上述例子中,我们选择过滤掉 `auth_key`,
> `password_hash``password_reset_token`.

2
docs/guide-zh-CN/rest-versioning.md

@ -5,7 +5,7 @@
代码,APIs 是为了给超出控制的客户端使用。因此,
应该尽可能的保持向后兼容性,如果有一些变化不能向后兼容,你应该在新版本的 API 中采用它同时增加版本号。现有客户端可以继续使用旧版本的API;新的或升级的客户端可以在新的API版本中获得新的功能。
> 提示:可以参考 [Semantic Versioning](http://semver.org/)
> Tip: 可以参考 [Semantic Versioning](http://semver.org/)
来获取更多关于设计 API 版本号的信息
关于如何实现 API 版本,一个常见的做法是在 API 的 URL 中嵌入版本号。例如,

4
docs/guide-zh-CN/runtime-handling-errors.md

@ -144,10 +144,10 @@ public function actionError()
* `exception`: 更多详细信息的异常对象,如HTTP 状态码,
错误码,错误调用栈等。
> 注意:如果你使用 [基础应用模板](start-installation.md) 或 [高级应用模板](tutorial-advanced-app.md),
> Note: 如果你使用 [基础应用模板](start-installation.md) 或 [高级应用模板](tutorial-advanced-app.md),
错误动作和错误视图已经定义好了。
> 注意:如果您需要在错误处理程序中重定向,请执行以下操作:
> Note: 如果您需要在错误处理程序中重定向,请执行以下操作:
>
> ```php
> Yii::$app->getResponse()->redirect($url)->send();

14
docs/guide-zh-CN/runtime-logging.md

@ -32,7 +32,7 @@ Yii提供了一个强大的日志框架,这个框架具有高度的可定制
Yii::trace('start calculating average revenue');
```
> 注意:日志消息可以是字符串,也可以是复杂的数据,诸如数组或者对象。
> Note: 日志消息可以是字符串,也可以是复杂的数据,诸如数组或者对象。
[log targets](#log-targets) 的义务是正确处理日志消息。默认情况下,
假如一条日志消息不是一个字符串,它将被导出为一个字符串,通过调用 [[yii\helpers\VarDumper::export()]]。
@ -50,7 +50,7 @@ Yii::trace('start calculating average revenue', __METHOD__);
例如,假如上面那行代码在这个方法内被调用,则它将等于字符串
`'app\controllers\RevenueController::calculate'`
> 注意:上面所描述的日志方法实际上是 [[yii\log\Logger|logger object]] 对象(一个通过表达式 `Yii::getLogger()` 可访问的单例)
> Note: 上面所描述的日志方法实际上是 [[yii\log\Logger|logger object]] 对象(一个通过表达式 `Yii::getLogger()` 可访问的单例)
的方法 [[yii\log\Logger::log()|log()]] 的一个快捷方式。当足够的消息被记录或者当应用结束时,
日志对象将会调用一个 [[yii\log\Dispatcher|message dispatcher]]
调度对象将已经记录的日志消息发送到已注册的 [log targets](#log-targets) 目标中。
@ -94,7 +94,7 @@ return [
];
```
> 注意:`log` 组件必须在 [bootstrapping](runtime-bootstrapping.md) 期间就被加载,以便于它能够及时调度日志消息到目标里。
> Note: `log` 组件必须在 [bootstrapping](runtime-bootstrapping.md) 期间就被加载,以便于它能够及时调度日志消息到目标里。
这是为什么在上面的代码中,它被列在 `bootstrap` 数组中的原因。
在上面的代码中,在 [[yii\log\Dispatcher::targets]] 属性里有两个日志目标被注册:
@ -162,7 +162,7 @@ Yii配备了以下的内建日志目标。请参考关于这些类的API文档
]
```
> 注意:当一个HTTP异常通过 [error handler](runtime-handling-errors.md) 被捕获的时候,一个错误消息将以 `yii\web\HttpException:ErrorCode`
> Note: 当一个HTTP异常通过 [error handler](runtime-handling-errors.md) 被捕获的时候,一个错误消息将以 `yii\web\HttpException:ErrorCode`
这样的格式的分类名被记录下来。例如,[[yii\web\NotFoundHttpException]] 将会引发一个分类是 `yii\web\HttpException:404`
错误消息。
@ -238,7 +238,7 @@ return [
将被追加最多3个调用堆栈层级;假如 `YII_DEBUG` 关闭,
那么将没有调用堆栈信息被包含。
> 注意:获得调用堆栈信息并不是不重要。因此,
> Note: 获得调用堆栈信息并不是不重要。因此,
你应该只在开发或者调试一个应用的时候使用这个特性。
@ -262,7 +262,7 @@ return [
];
```
> 注意:当应用结束的时候,消息刷新也会发生,这样才能确保日志目标能够接收完整的日志消息。
> Note: 当应用结束的时候,消息刷新也会发生,这样才能确保日志目标能够接收完整的日志消息。
当 [[yii\log\Logger|logger object]] 对象刷新日志消息到 [log targets](#log-targets) 的时候,它们并
不能立即获取导出的消息。相反,消息导出仅仅在一个日志目标累积了一定数量的过滤消息的时候才会发生。你可以通过配置
@ -299,7 +299,7 @@ return [
];
```
> 注意:频繁的消息刷新和导出将降低你到应用性能。
> Note: 频繁的消息刷新和导出将降低你到应用性能。
### 切换日志目标 <span id="toggling-log-targets"></span>

2
docs/guide-zh-CN/runtime-requests.md

@ -123,7 +123,7 @@ if ($headers->has('User-Agent')) { /* 这是一个 User-Agent 头 */ }
这个方法通过 [[yii\web\Request::acceptableLanguages|acceptableLanguages]]
在你的应用中所支持的语言列表里进行比较筛选,返回最适合的语言。
> 提示:你也可以使用 [[yii\filters\ContentNegotiator|ContentNegotiator]]
> Tip: 你也可以使用 [[yii\filters\ContentNegotiator|ContentNegotiator]]
过滤器进行动态确定哪些内容类型和语言应该在响应中使用。
这个过滤器实现了上面介绍的内容协商的属性和方法。

2
docs/guide-zh-CN/runtime-responses.md

@ -152,7 +152,7 @@ public function actionInfo()
}
```
> 注意:如果创建你自己的响应对象,将不能在应用配置中设置 `response` 组件,尽管如此,
> Note: 如果创建你自己的响应对象,将不能在应用配置中设置 `response` 组件,尽管如此,
可使用 [依赖注入](concept-di-container.md)
应用通用配置到你新的响应对象。

12
docs/guide-zh-CN/runtime-routing.md

@ -266,7 +266,7 @@ The rest of the properties are optional. However, their configuration shown abov
URLs. It is the main property that you should work with in order to create URLs whose format satisfies your
particular application requirement.
> 注意:In order to hide the entry script name in the created URLs, besides setting
> Note: In order to hide the entry script name in the created URLs, besides setting
[[yii\web\UrlManager::showScriptName|showScriptName]] to be false, you may also need to configure your Web server
so that it can correctly identify which PHP script should be executed when a requested URL does not explicitly
specify one. If you are using Apache Web server, you may refer to the recommended configuration as described in the
@ -331,7 +331,7 @@ of `<ParamName:RegExp>`, where `ParamName` specifies the parameter name and `Reg
expression used to match parameter values. If `RegExp` is not specified, it means the parameter value should be
a string without any slash.
> 注意:You can only specify regular expressions for parameters. The rest part of a pattern is considered as plain text.
> Note: You can only specify regular expressions for parameters. The rest part of a pattern is considered as plain text.
When a rule is used to parse a URL, it will fill the associated parameters with values matching the corresponding
parts of the URL, and these parameters will be made available in `$_GET` later by the `request` application component.
@ -474,9 +474,9 @@ the following in the application configuration:
The above configuration will allow the [[yii\web\UrlManager|URL manager]] to recognize requested URLs and also create
URLs with `.html` as their suffix.
> 提示:You may set `/` as the URL suffix so that the URLs all end with a slash.
> Tip: You may set `/` as the URL suffix so that the URLs all end with a slash.
> 注意:When you configure a URL suffix, if a requested URL does not have the suffix, it will be considered as
> Note: When you configure a URL suffix, if a requested URL does not have the suffix, it will be considered as
an unrecognized URL. This is a recommended practice for SEO (search engine optimization).
Sometimes you may want to use different suffixes for different URLs. This can be achieved by configuring the
@ -522,10 +522,10 @@ be parsed into `post/create`, while a request for `GET post/100` will be parsed
]
```
> 注意:If a URL rule contains HTTP method(s) in its pattern, the rule will only be used for parsing purpose.
> Note: If a URL rule contains HTTP method(s) in its pattern, the rule will only be used for parsing purpose.
It will be skipped when the [[yii\web\UrlManager|URL manager]] is called to create URLs.
> 提示:To simplify the routing of RESTful APIs, Yii provides a special URL rule class [[yii\rest\UrlRule]]
> Tip: To simplify the routing of RESTful APIs, Yii provides a special URL rule class [[yii\rest\UrlRule]]
which is very efficient and supports some fancy features such as automatic pluralization of controller IDs.
For more details, please refer to the [Routing](rest-routing.md) section about developing RESTful APIs.

14
docs/guide-zh-CN/runtime-sessions-cookies.md

@ -137,7 +137,7 @@ Yii 提供以下 session 类实现不同的 session 存储方式:
所有这些session类支持相同的API方法集,因此,
切换到不同的session存储介质不需要修改项目使用session的代码。
> 注意:如果通过`$_SESSION`访问使用自定义存储介质的session,
> Note: 如果通过`$_SESSION`访问使用自定义存储介质的session,
需要确保session已经用[[yii\web\Session::open()]] 开启,
这是因为在该方法中注册自定义session存储处理器。
@ -174,7 +174,7 @@ CREATE TABLE session
- PostgreSQL: BYTEA
- MSSQL: BLOB
> 注意:根据 php.ini 设置的 `session.hash_function`,你需要调整 `id` 列的长度,
> Note: 根据 php.ini 设置的 `session.hash_function`,你需要调整 `id` 列的长度,
例如,如果 `session.hash_function=sha256`
应使用长度为 64 而不是 40 的 char 类型。
@ -249,13 +249,13 @@ $session->addFlash('alerts', 'You are promoted.');
$alerts = $session->getFlash('alerts');
```
> 注意:不要在相同名称的 flash 数据中使用 [[yii\web\Session::setFlash()]] 的同时也使用 [[yii\web\Session::addFlash()]],
> Note: 不要在相同名称的 flash 数据中使用 [[yii\web\Session::setFlash()]] 的同时也使用 [[yii\web\Session::addFlash()]],
因为后一个防范会自动将 flash 信息转换为数组以使新的 flash 数据可追加进来,因此,
当你调用 [[yii\web\Session::getFlash()]] 时,
会发现有时获取到一个数组,有时获取到一个字符串,
取决于你调用这两个方法的顺序。
> 提示:For displaying Flash messages you can use [[yii\bootstrap\Alert|bootstrap Alert]] widget in the following way:
> Tip: For displaying Flash messages you can use [[yii\bootstrap\Alert|bootstrap Alert]] widget in the following way:
>
> ```php
> echo Alert::widget([
@ -327,7 +327,7 @@ unset($cookies['language']);
[[yii\web\Cookie::domain|domain]],[[yii\web\Cookie::expire|expire]]
可配置这些属性到 cookie 中并添加到响应的 cookie 集合中。
> 注意:为安全起见 [[yii\web\Cookie::httpOnly]] 被设置为 true,
> Note: 为安全起见 [[yii\web\Cookie::httpOnly]] 被设置为 true,
这可减少客户端脚本访问受保护 cookie(如果浏览器支持)的风险,
更多详情可阅读 [httpOnly wiki article](https://www.owasp.org/index.php/HttpOnly)。
@ -340,14 +340,14 @@ unset($cookies['language']);
如果被修改,通过 `request` 组件的
[[yii\web\Request::cookies|cookie collection]] cookie 集合访问不到该 cookie。
> 注意:Cookie验证只保护 cookie 值被修改,如果一个 cookie 验证失败,
> Note: Cookie验证只保护 cookie 值被修改,如果一个 cookie 验证失败,
仍然可以通过 `$_COOKIE` 来访问该 cookie,
因为这是第三方库对未通过 cookie 验证自定义的操作方式。
Cookie 验证默认启用,可以设置 [[yii\web\Request::enableCookieValidation]] 属性为 false 来禁用它,
尽管如此,我们强烈建议启用它。
> 注意:直接通过 `$_COOKIE``setcookie()` 读取和发送的 Cookie 不会被验证。
> Note: 直接通过 `$_COOKIE``setcookie()` 读取和发送的 Cookie 不会被验证。
当使用 cookie 验证时,必须指定 [[yii\web\Request::cookieValidationKey]],它是用来生成上述的哈希值,
可通过在应用配置中配置 `request` 组件。

2
docs/guide-zh-CN/security-authentication.md

@ -139,7 +139,7 @@ class User extends ActiveRecord implements IdentityInterface
}
```
> 注意:不要混淆 `user` 认证类和用户组件 [[yii\web\User]]。前者是实现
> Note: 不要混淆 `user` 认证类和用户组件 [[yii\web\User]]。前者是实现
认证逻辑的类,通常用关联了
持久性存储的用户信息的AR模型 [Active Record](db-active-record.md) 实现。后者是负责管理用户认证状态的
应用组件。

4
docs/guide-zh-CN/security-authorization.md

@ -227,7 +227,7 @@ return [
],
];
```
> 注意:If you are using yii2-basic-app template, there is a `config/console.php` configuration file where the
> Note: If you are using yii2-basic-app template, there is a `config/console.php` configuration file where the
`authManager` needs to be declared additionally to `config/web.php`.
> In case of yii2-advanced-app the `authManager` should be declared only once in `common/config/main.php`.
@ -303,7 +303,7 @@ class RbacController extends Controller
}
```
> 注意:If you are using advanced template, you need to put your `RbacController` inside `console/controllers` directory
> Note: If you are using advanced template, you need to put your `RbacController` inside `console/controllers` directory
and change namespace to `console/controllers`.
在用 `yii rbac/init` 执行了这个命令后,我们将得到下图所示的层次结构:

4
docs/guide-zh-CN/start-forms.md

@ -128,7 +128,7 @@ class SiteController extends Controller
如果没填表单就提交,或数据包含错误(译者:如 email 格式不对),
`entry` 视图将会渲染输出,连同表单一起输出的还有验证错误的详细信息。
> 注意:在这个简单例子里我们只是呈现了有效数据的确认页面。
> Note: 在这个简单例子里我们只是呈现了有效数据的确认页面。
实践中你应该考虑使用 [[yii\web\Controller::refresh()|refresh()]]
或 [[yii\web\Controller::redirect()|redirect()]] 去避免[表单重复提交问题](http://en.wikipedia.org/wiki/Post/Redirect/Get)。
@ -214,7 +214,7 @@ http://hostname/index.php?r=site/entry
如果用户浏览器禁用了 JavaScript,
服务器端仍然会像 `actionEntry()` 方法里这样验证一遍数据。这保证了任何情况下用户提交的数据都是有效的。
> 警告:客户端验证是提高用户体验的手段。
> Warning: 客户端验证是提高用户体验的手段。
无论它是否正常启用,服务端验证则都是必须的,请不要忽略它。
输入框的文字标签是 `field()` 方法生成的,内容就是模型中该数据的属性名。

8
docs/guide-zh-CN/start-installation.md

@ -48,11 +48,11 @@ Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下
它是通过 Composer 管理 bower 和 npm 包所必须的,此命令全局生效,一劳永逸。
第二条命令会将 Yii 安装在名为 `basic` 的目录中。如果你想使用其它目录名称,你可以选择其他目录名称。
> 注意:在安装过程中 Composer 可能会询问你 GitHub 账户的认证信息,因为可能在使用中超过了 GitHub API (对匿名用户的)使用限制。因为 Composer 需要为所有扩展包从 GitHub
> Note: 在安装过程中 Composer 可能会询问你 GitHub 账户的认证信息,因为可能在使用中超过了 GitHub API (对匿名用户的)使用限制。因为 Composer 需要为所有扩展包从 GitHub
> 中获取大量信息,所以超限非常正常。(译注:也意味着作为程序猿没有 GitHub 账号,就真不能愉快地玩耍了)登陆 GitHub 之后可以得到更高的 API 限额,这样 Composer 才能正常运行。更多细节请参考 [Composer
> 文档](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens)(该段 Composer中文文档[期待您的参与](https://github.com/5-say/composer-doc-cn/blob/master/cn-introduction/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens))。
> 提示:如果你想安装 Yii 的最新开发版本,可以使用以下命令代替,
> Tip: 如果你想安装 Yii 的最新开发版本,可以使用以下命令代替,
> 它添加了一个 [stability 选项](https://getcomposer.org/doc/04-schema.md#minimum-stability)([中文版](https://github.com/5-say/composer-doc-cn/blob/master/cn-introduction/04-schema.md#minimum-stability)):
>
> ```bash
@ -104,7 +104,7 @@ Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下
php yii serve
```
> 注意:默认情况下Https-server将监听8080。可是如果这个端口已经使用或者你想通过这个方式运行多个应用程序,你可以指定使用哪些端口。
> Note: 默认情况下Https-server将监听8080。可是如果这个端口已经使用或者你想通过这个方式运行多个应用程序,你可以指定使用哪些端口。
只加上 --port 参数:
```bash
@ -138,7 +138,7 @@ http://localhost:8080/
配置 Web 服务器 <span id="configuring-web-servers"></span>
-----------------------
> 提示:如果你现在只是要试用 Yii 而不是将其部署到生产环境中,
> Tip: 如果你现在只是要试用 Yii 而不是将其部署到生产环境中,
本小节可以跳过。
通过上述方法安装的应用程序在 Windows,Max OS X,

12
docs/guide-zh-CN/structure-assets.md

@ -114,7 +114,7 @@ class AppAsset extends AssetBundle
由于它们的资源和源代码都在不能Web访问的目录下,
在定义资源包类时必须指定[[yii\web\AssetBundle::sourcePath|sourcePath]]属性。
> 注意:[[yii\web\AssetBundle::sourcePath|source path]] 属性不要用`@webroot/assets`,该路径默认为
> Note: [[yii\web\AssetBundle::sourcePath|source path]] 属性不要用`@webroot/assets`,该路径默认为
[[yii\web\AssetManager|asset manager]]资源管理器将源资源发布后存储资源的路径,
该路径的所有内容会认为是临时文件,
可能会被删除。
@ -142,7 +142,7 @@ class AppAsset extends AssetBundle
这些属性值会分别传递给 [[yii\web\View::registerCssFile()]] 和 [[yii\web\View::registerJsFile()]] 方法,
在[视图](structure-views.md) 调用这些方法包含CSS和JavaScript文件时。
> 注意:在资源包类中设置的选项会应用到该包中 *每个* CSS/JavaScript 文件,
> Note: 在资源包类中设置的选项会应用到该包中 *每个* CSS/JavaScript 文件,
如果想对每个文件使用不同的选项,
应创建不同的资源包并在每个包中使用一个选项集。
@ -216,7 +216,7 @@ the `only` publishing option, only the `fonts` and `css` subdirectories will be
应设置 [[yii\web\AssetBundle::sourcePath|sourcePath]] 属性为`@bower/PackageName` 或 `@npm/PackageName`
因为根据别名Composer会安装Bower或NPM包到对应的目录下。
> 注意:一些包会将它们分布式文件放到一个子目录中,对于这种情况,应指定子目录作为
> Note: 一些包会将它们分布式文件放到一个子目录中,对于这种情况,应指定子目录作为
[[yii\web\AssetBundle::sourcePath|sourcePath]]属性值,
例如,[[yii\web\JqueryAsset]]使用 `@bower/jquery/dist` 而不是 `@bower/jquery`
@ -275,7 +275,7 @@ return [
数组的键应为资源包的类名(最开头不要反斜杠),
数组的值为对应的[配置数组](concept-configurations.md).
> 提示:可以根据条件判断使用哪个资源,如下示例为如何在开发环境用`jquery.js`,
> Tip: 可以根据条件判断使用哪个资源,如下示例为如何在开发环境用`jquery.js`,
> 否则用`jquery.min.js`:
>
> ```php
@ -334,7 +334,7 @@ return [
(如果有的话前缀为 [[yii\web\AssetBundle::sourcePath]]),对应的值为替换原来的资源。
例如,资源文件`my/path/to/jquery.js` 匹配键 `jquery.js`.
> 注意:只有相对相对路径指定的资源对应到资源部署,替换的资源路径可以为绝对路径,
> Note: 只有相对相对路径指定的资源对应到资源部署,替换的资源路径可以为绝对路径,
也可为和[[yii\web\AssetManager::basePath]]相关的路径。
@ -635,7 +635,7 @@ return [
在`targets`选项中应指定这些包如何分组,
如前述的可以指定一个或多个组。
> 注意:由于在控制台应用别名 `@webroot` and `@web` 不可用,
> Note: 由于在控制台应用别名 `@webroot` and `@web` 不可用,
应在配置中明确指定它们。
JavaScript文件会被合并压缩后写入到`js/all-{hash}.js`文件,

2
docs/guide-zh-CN/structure-controllers.md

@ -244,7 +244,7 @@ class SiteController extends Controller
例如`index` 转成 `actionIndex`, `hello-world` 转成 `actionHelloWorld`
> 注意:操作方法的名字*大小写敏感*,如果方法名称为`ActionIndex`不会认为是操作方法,
> Note: 操作方法的名字*大小写敏感*,如果方法名称为`ActionIndex`不会认为是操作方法,
所以请求`index`操作会返回一个异常,
也要注意操作方法必须是公有的,
私有或者受保护的方法不能定义成内联操作。

2
docs/guide-zh-CN/structure-filters.md

@ -42,7 +42,7 @@ public function behaviors()
除非像上述一样配置过滤器的 [[yii\base\ActionFilter::only|only]]
和 [[yii\base\ActionFilter::except|except]] 属性。
> 注意:在模块或应用主体中申明过滤器,在[[yii\base\ActionFilter::only|only]] 和 [[yii\base\ActionFilter::except|except]]
> Note: 在模块或应用主体中申明过滤器,在[[yii\base\ActionFilter::only|only]] 和 [[yii\base\ActionFilter::except|except]]
属性中使用[路由](structure-controllers.md#routes) 代替动作ID,
因为在模块或应用主体中只用动作ID并不能唯一指定到具体动作。

2
docs/guide-zh-CN/structure-models.md

@ -490,7 +490,7 @@ public function fields()
}
```
> 警告:由于模型的所有属性会被包含在导出数组,最好检查数据确保没包含敏感数据,
> Warning: 由于模型的所有属性会被包含在导出数组,最好检查数据确保没包含敏感数据,
> 如果有敏感数据,应覆盖 `fields()` 方法过滤掉,
> 在上述列子中,我们选择过滤掉
> `auth_key`, `password_hash` and `password_reset_token`

2
docs/guide-zh-CN/structure-views.md

@ -44,7 +44,7 @@ $this->title = 'Login';
这些变量代表从[控制器](structure-controllers.md)
或其他触发[视图渲染](#rendering-views)的对象 *传入* 到视图的数据。
> 提示:将预定义变量列到视图文件头部注释处,
> Tip: 将预定义变量列到视图文件头部注释处,
这样可被IDE编辑器识别,也是生成视图文档的好方法。

2
docs/guide-zh-CN/structure-widgets.md

@ -67,7 +67,7 @@ use yii\helpers\Html;
注意和调用 [[yii\base\Widget::widget()]] 返回渲染结果不同,
调用 [[yii\base\Widget::begin()]] 方法返回一个可组建小部件内容的小部件实例。
> 注意:当调用 [[yii\base\Widget::end()]] 的时候,一些小部件将使用 [输出缓冲](http://php.net/manual/en/book.outcontrol.php)
> Note: 当调用 [[yii\base\Widget::end()]] 的时候,一些小部件将使用 [输出缓冲](http://php.net/manual/en/book.outcontrol.php)
> 来调整封闭的内容。因此,当调用 [[yii\base\Widget::begin()]] 和
> [[yii\base\Widget::end()]] 时,最好在同一个视图文件里。
> 不遵循这个规则可能会导致意外的输出。

6
docs/guide-zh-CN/test-fixtures.md

@ -40,7 +40,7 @@ class UserFixture extends ActiveFixture
> 或 [[yii\test\ActiveFixture::modelClass]] 属性来指定具体的表。如果是后者,
> 表名会从 `modleClass` 指定的 `ActiveRecord` 中获取。
> 注意:[[yii\test\ActiveFixture]] 仅限于 SQL 数据库,对于 NoSQL 数据库,
> Note: [[yii\test\ActiveFixture]] 仅限于 SQL 数据库,对于 NoSQL 数据库,
> Yii 提供以下 `ActiveFixture` 类:
>
> - Mongo DB: [[yii\mongodb\ActiveFixture]]
@ -213,7 +213,7 @@ data\
这样,你就可以避免在测试用例之间产生冲突,并根据你的需要使用它们。
> 注意:在以上的例子中,Fixture 文件只用于示例目的。在真实的环境下,你需要根据你的 Fixture 类继承的基类来决定它们的命名。
> Note: 在以上的例子中,Fixture 文件只用于示例目的。在真实的环境下,你需要根据你的 Fixture 类继承的基类来决定它们的命名。
比如,如果你从 [[yii\test\ActiveFixture]] 继承了一个 DB Fixture,
你需要用数据库表名字作为 Fixture 的数据文件名;如果你从 [[yii\mongodb\ActiveFixture]] 继承了一个 MongoDB Fixture,
你需要使用 collection 名作为文件名。
@ -225,7 +225,7 @@ data\
总结
-------
> 注意:本节内容正在开发中。
> Note: 本节内容正在开发中。
在上面,我们描述了如何定义和使用 Fixture,在下面,我们将总结出一个
标准地运行与 DB 有关的单元测试的规范工作流程:

2
docs/guide-zh-CN/test-functional.md

@ -1,7 +1,7 @@
功能测试
================
> 注意:这部分正在开发中。
> Note: 这部分正在开发中。
- http://codeception.com/docs/05-FunctionalTests

2
docs/guide-zh-CN/test-overview.md

@ -30,7 +30,7 @@
走完上面的过程之后,为其他功能或者扩展重复上面测试过程。如果功能发生变化,测试也需
要跟着变化。
> 注意: 如果你觉得你做一些很小很简单的迭代是在浪费时间,请尝试覆盖更多的测试
> Note: 如果你觉得你做一些很小很简单的迭代是在浪费时间,请尝试覆盖更多的测试
> 场景,这样你就可以在执行测试之前做更多的尝试。如果你的调试过多,试着做相反的工作。
在做一些具体的实现之前创建测试的原因是,这允许我们后期专注于我们想要的实现,并且

2
docs/guide-zh-CN/tutorial-console.md

@ -95,7 +95,7 @@ exit($exitCode);
你可以考虑把这些值放在一个单独的文件中,该文件中包括( web 和控制台)应用程序配置。
你可以在“高级”项目模板中看到一个例子。
> 提示:有时,你可能需要使用一个与在入口脚本中指定的应用程序配置不同的控制台命令。
> Tip: 有时,你可能需要使用一个与在入口脚本中指定的应用程序配置不同的控制台命令。
> 例如,你可能想使用 `yii migrate`
> 命令来升级你的测试数据库,它被配置在每个测试套件。
> 要动态地更改配置,只需指定一个自定义应用程序的配置文件,

6
docs/guide-zh-CN/tutorial-core-validators.md

@ -38,7 +38,7 @@ public function rules()
- `strict`:是否要求待测输入必须严格匹配 `trueValue``falseValue`。默认为 `false`
> 注意:因为通过 HTML 表单传递的输入数据都是字符串类型,所以一般情况下你都需要保持
> Note: 因为通过 HTML 表单传递的输入数据都是字符串类型,所以一般情况下你都需要保持
[[yii\validators\BooleanValidator::strict|strict]] 属性为假。
@ -241,7 +241,7 @@ function foo($model, $attribute) {
- `allowMessageFromRule`:是否使用规则中指定的验证器返回的错误信息。默认值为 `true`
如果设置为 `false`,将使用 `message` 作为错误信息。
> 注意:如果被验证的值不是一个数组,将被认为验证失败,
> Note: 如果被验证的值不是一个数组,将被认为验证失败,
并且返回 `message` 设定的错误信息。
@ -566,7 +566,7 @@ IPv4 地址 `192.168.10.128` 同样时允许的,因为这条规则在约束规
该验证器会用一个更加宽松的规则检验输入值是否为空。
当设置了 `requiredValue` 属性时,若该属性为 true,输入值与 `requiredValue` 的比对会同时检查数据类型。
> 注意:如何判断待测值是否为空,被写在另外一个话题的
> Note: 如何判断待测值是否为空,被写在另外一个话题的
[处理空输入](input-validation.md#handling-empty-inputs)章节。

14
docs/guide-zh-CN/tutorial-i18n.md

@ -167,7 +167,7 @@ In case of a single positional parameter its value could be specified without wr
echo \Yii::t('app', 'Price: {0}', $price);
```
> 提示:大多数情况下你应该使用名称占位符。
> Tip: 大多数情况下你应该使用名称占位符。
> 这是因为参数名称可以让翻译者更好的理解要被翻译的消息。
@ -182,7 +182,7 @@ $price = 100;
echo \Yii::t('app', 'Price: {0, number, currency}', $price);
```
> 注意:参数的格式化需要安装 [intl PHP 扩展](http://www.php.net/manual/en/intro.intl.php)。
> Note: 参数的格式化需要安装 [intl PHP 扩展](http://www.php.net/manual/en/intro.intl.php)。
可以使用缩写的形式或完整的形式来格式化占位符:
@ -191,7 +191,7 @@ short form: {PlaceholderName, ParameterType}
full form: {PlaceholderName, ParameterType, ParameterStyle}
```
> 注意:If you need to use special characters such as `{`, `}`, `'`, `#`, wrap them in `'`:
> Note: If you need to use special characters such as `{`, `}`, `'`, `#`, wrap them in `'`:
>
```php
echo Yii::t('app', "Example of string with ''-escaped characters'': '{' '}' '{test}' {count,plural,other{''count'' value is # '#{}'}}", ['count' => 3]);
@ -369,7 +369,7 @@ echo \Yii::t('app', 'There {n, plural, =0{are no cats} =1{is one cat} other{are
而不是一个原始消息,除非设置应用程序的
[[yii\base\Application::$sourceLanguage|源语言]] 为 `ru-RU`
> 注意:The above example Russian message is mainly used as a translated message, not an original message, unless you set
> Note: The above example Russian message is mainly used as a translated message, not an original message, unless you set
> the [[yii\base\Application::$sourceLanguage|source language]] of your application as `ru-RU` and translating from Russian.
>
> When a translation is not found for an original message specified in `Yii::t()` call, the plural rules for the
@ -554,7 +554,7 @@ class Menu extends Widget
你可以简单地使用类映射的同名文件而不是使用 `fileMap`
现在你直接可以使用 `Menu::t('messages', 'new messages {messages}', ['{messages}' => 10])`
> 提示:对于小部件也可以使用 i18n 视图,并一样以控制器的规则来应用它们。
> Tip: 对于小部件也可以使用 i18n 视图,并一样以控制器的规则来应用它们。
### 翻译框架信息
@ -625,7 +625,7 @@ class TranslationEventHandler
如果 [[yii\i18n\MissingTranslationEvent::translatedMessage]] 是由事件处理程序设置,它将显示翻译结果。
> 注意:每个消息源会单独处理它缺少的翻译。如果是使用多个消息源,并希望他们把缺少的翻译以同样的方式来处理,
> Note: 每个消息源会单独处理它缺少的翻译。如果是使用多个消息源,并希望他们把缺少的翻译以同样的方式来处理,
> 你应该给它们每一个消息源指定相应的事件处理程序。
@ -677,7 +677,7 @@ Also, you may use options to dynamically change parameters for extraction.
每当你调用 [[yii\base\View::renderFile()]] 或任何其它方法 (如 [[yii\base\Controller::render()]]) 来渲染 `views/site/index.php` 视图,
它最终会使用所翻译的 `views/site/ru-RU/index.php`
> 注意:如果 [[yii\base\Application::$language|目标语言]] 跟 [[yii\base\Application::$sourceLanguage|源语言]] 相同,
> Note: 如果 [[yii\base\Application::$language|目标语言]] 跟 [[yii\base\Application::$sourceLanguage|源语言]] 相同,
在翻译视图的存在下,将呈现原始视图。

8
docs/guide-zh-CN/tutorial-mailing.md

@ -1,7 +1,7 @@
收发邮件
========
> 注意:本节正在开发中。
> Note: 本节正在开发中。
Yii 支持组成和发送电子邮件。然而,该框架提供的只有内容组成功能和基本接口。
实际的邮件发送机制可以通过扩展提供,
@ -60,7 +60,7 @@ $message->setTo(Yii::$app->params['adminEmail'])
->send();
```
> 注意:每个 “mailer” 的扩展也有两个主要类别:“Mailer”
> Note: 每个 “mailer” 的扩展也有两个主要类别:“Mailer”
和 “Message”。 “Mailer” 总是知道类名和具体的 “Message”。
不要试图直接实例 “Message” 对象 - 而是始终使用 `compose()` 方法。
@ -211,12 +211,12 @@ Yii::$app->mailer->compose('embed-email', ['imageFileName' => '/path/to/image.jp
如果开启这个选项,会把邮件信息保存在本地文件而不是发送它们。
这些文件保存在 `yii\mail\BaseMailer::fileTransportPath` 中,默认在 '@runtime/mail' 。
> 提示:你可以保存这些信息到本地文件或者把它们发送出去,但不能同时两者都做。
> Tip: 你可以保存这些信息到本地文件或者把它们发送出去,但不能同时两者都做。
邮件信息文件可以在一个普通的文本编辑器中打开,这样你就可以浏览实际的邮件标题,内容等。
这种机制可以用来调试应用程序或运行单元测试。
> 提示:该邮件信息文件是会被 `\yii\mail\MessageInterface::toString()` 转成字符串保存的,
> Tip: 该邮件信息文件是会被 `\yii\mail\MessageInterface::toString()` 转成字符串保存的,
它依赖于实际在应用程序中使用的邮件扩展。

2
docs/guide-zh-CN/tutorial-performance-tuning.md

@ -30,7 +30,7 @@ Yii 中使用名为 `YII_DEBUG` 的常量来定义调试模式是否应被激活
defined('YII_DEBUG') or define('YII_DEBUG', false);
```
> 提示:`YII_DEBUG` 的默认值是 false 。所以如果你确信你不在你应用程序代码中别的地方更改其默认值,
> Tip: `YII_DEBUG` 的默认值是 false 。所以如果你确信你不在你应用程序代码中别的地方更改其默认值,
你可以简单地删除上述行来禁用调试模式。

2
docs/guide-zh-CN/tutorial-start-from-scratch.md

@ -31,7 +31,7 @@ git clone git@github.com:yiisoft/yii2-app-basic.git
接下来,你需要修改 `composer.json` 以配置你自己的模板。修改 `name`, `description`, `keywords`, `homepage`, `license`, 和 `support` 的值来描述你自己的模板。
同样,调整 `require`, `require-dev`, `suggest` 和其他的参数来匹配你模板的环境需求。
> 注意:`composer.json` 文件中,使用 `extra` 下的 `writeable` 参数来指定使用模板创建的应用程序后
> Note: `composer.json` 文件中,使用 `extra` 下的 `writeable` 参数来指定使用模板创建的应用程序后
> 需要设置文件权限的文件列表。
接下来,真正的修改你的应用程序默认的目录结构和内容。最后,更新 README 文件以符合你的模板。

2
docs/guide-zh-CN/tutorial-yii-as-micro-framework.md

@ -13,7 +13,7 @@ mkdir micro-app
cd micro-app
```
> 注意:需要一些 Composer 的知识才能继续。如果您还不知道如何使用 composer,请花些时间阅读 [Composer 指南](https://getcomposer.org/doc/00-intro.md)。
> Note: 需要一些 Composer 的知识才能继续。如果您还不知道如何使用 composer,请花些时间阅读 [Composer 指南](https://getcomposer.org/doc/00-intro.md)。
使用您最喜爱的编辑器在 `micro-app` 目录下创建 `composer.json` 文件并添加以下内容:

2
docs/guide-zh-CN/tutorial-yii-integration.md

@ -126,7 +126,7 @@ new yii\web\Application($yiiConfig); // 千万别在这调用 run() 方法。(
不必用 Yii 2 重写整个应用,你也可以通过增添对哪些
Yii 2 独占功能的支持来增强这个系统。下面我们就来详细描述一下具体的实现过程。
> 注意:Yii 2 需要 PHP 5.4+ 的版本。你需要确保你的服务器以及现有应用都
> Note: Yii 2 需要 PHP 5.4+ 的版本。你需要确保你的服务器以及现有应用都
> 可以支持 PHP 5.4。
首先,参考前文板块中给出的方法,在已有的应用中安装 Yii 2。

Loading…
Cancel
Save