Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
1253109e
Commit
1253109e
authored
Oct 30, 2014
by
东方孤思子(Paris·QianSen)
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
replace a term
parent
51ae0156
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
12 additions
and
12 deletions
+12
-12
caching-fragment.md
docs/guide-zh-CN/caching-fragment.md
+1
-1
concept-autoloading.md
docs/guide-zh-CN/concept-autoloading.md
+1
-1
db-active-record.md
docs/guide-zh-CN/db-active-record.md
+3
-3
runtime-bootstrapping.md
docs/guide-zh-CN/runtime-bootstrapping.md
+1
-1
start-forms.md
docs/guide-zh-CN/start-forms.md
+1
-1
start-installation.md
docs/guide-zh-CN/start-installation.md
+2
-2
tutorial-core-validators.md
docs/guide-zh-CN/tutorial-core-validators.md
+2
-2
tutorial-yii-integration.md
docs/guide-zh-CN/tutorial-yii-integration.md
+1
-1
No files found.
docs/guide-zh-CN/caching-fragment.md
View file @
1253109e
...
@@ -114,7 +114,7 @@ if ($this->beginCache($id1)) {
...
@@ -114,7 +114,7 @@ if ($this->beginCache($id1)) {
可以为嵌套的缓存设置不同的配置项。例如,内层缓存和外层缓存使用不同的过期时间。甚至当外层缓存的数据过期失效了,内层缓存仍然可能提供有效的片段缓存数据。但是,反之则不然。如果外层片段缓存没有过期而被视为有效,此时即使内层片段缓存已经失效,它也将继续提供同样的缓存副本。因此,你必须谨慎处理缓存嵌套中的过期时间和依赖,否则外层的片段很有可能返回的是不符合你预期的失效数据。
可以为嵌套的缓存设置不同的配置项。例如,内层缓存和外层缓存使用不同的过期时间。甚至当外层缓存的数据过期失效了,内层缓存仍然可能提供有效的片段缓存数据。但是,反之则不然。如果外层片段缓存没有过期而被视为有效,此时即使内层片段缓存已经失效,它也将继续提供同样的缓存副本。因此,你必须谨慎处理缓存嵌套中的过期时间和依赖,否则外层的片段很有可能返回的是不符合你预期的失效数据。
> 译
者
注:外层的失效时间应该短于内层,外层的依赖条件应该低于内层,以确保最小的片段,返回的是最新的数据。
> 译注:外层的失效时间应该短于内层,外层的依赖条件应该低于内层,以确保最小的片段,返回的是最新的数据。
## 动态内容 <a name="dynamic-content"></a>
## 动态内容 <a name="dynamic-content"></a>
...
...
docs/guide-zh-CN/concept-autoloading.md
View file @
1253109e
...
@@ -15,7 +15,7 @@ Yii 依靠[类自动加载机制](http://www.php.net/manual/en/language.oop5.aut
...
@@ -15,7 +15,7 @@ Yii 依靠[类自动加载机制](http://www.php.net/manual/en/language.oop5.aut
*
每个类都必须保存为单独文件,且其完整路径能用以下算法取得:
*
每个类都必须保存为单独文件,且其完整路径能用以下算法取得:
```
php
```
php
// $className 是一个开头包含反斜杠的完整类名(译
者
注:请自行谷歌:fully qualified class name)
// $className 是一个开头包含反斜杠的完整类名(译注:请自行谷歌:fully qualified class name)
$classFile
=
Yii
::
getAlias
(
'@'
.
str_replace
(
'\\'
,
'/'
,
$className
)
.
'.php'
);
$classFile
=
Yii
::
getAlias
(
'@'
.
str_replace
(
'\\'
,
'/'
,
$className
)
.
'.php'
);
```
```
...
...
docs/guide-zh-CN/db-active-record.md
View file @
1253109e
...
@@ -166,7 +166,7 @@ $sql = 'SELECT * FROM customer';
...
@@ -166,7 +166,7 @@ $sql = 'SELECT * FROM customer';
$customers
=
Customer
::
findBySql
(
$sql
)
->
all
();
$customers
=
Customer
::
findBySql
(
$sql
)
->
all
();
```
```
> 小技巧:在上面的代码中,`Customer::STATUS_ACTIVE` 是一个在 `Customer` 类里定义的常量。(译
者
注:这种常量的值一般都是tinyint)相较于直接在代码中写死字符串或数字,使用一个更有意义的常量名称是一种更好的编程习惯。
> 小技巧:在上面的代码中,`Customer::STATUS_ACTIVE` 是一个在 `Customer` 类里定义的常量。(译注:这种常量的值一般都是tinyint)相较于直接在代码中写死字符串或数字,使用一个更有意义的常量名称是一种更好的编程习惯。
有两个快捷方法:
`findOne`
和
`findAll()`
用来返回一个或者一组
`ActiveRecord`
实例。前者返回第一个匹配到的实例,后者返回所有。
有两个快捷方法:
`findOne`
和
`findAll()`
用来返回一个或者一组
`ActiveRecord`
实例。前者返回第一个匹配到的实例,后者返回所有。
例如:
例如:
...
@@ -847,7 +847,7 @@ public static function find()
...
@@ -847,7 +847,7 @@ public static function find()
}
}
```
```
注意,你之后所有的查询都不能用
[
[yii\db\ActiveQuery::where()|where()
]
],但是可以用
[
[yii\db\ActiveQuery::andWhere()|andWhere()
]
] 和
[
[yii\db\ActiveQuery::orWhere()|orWhere()
]
],他们不会覆盖掉默认作用域。(译
者
注:如果你要使用默认作用域,就不能在 xxx::find()后使用where()方法,你必须使用andXXX()或者orXXX()系的方法,否则默认作用域不会起效果,至于原因,打开where()方法的代码一看便知)
注意,你之后所有的查询都不能用
[
[yii\db\ActiveQuery::where()|where()
]
],但是可以用
[
[yii\db\ActiveQuery::andWhere()|andWhere()
]
] 和
[
[yii\db\ActiveQuery::orWhere()|orWhere()
]
],他们不会覆盖掉默认作用域。(译注:如果你要使用默认作用域,就不能在 xxx::find()后使用where()方法,你必须使用andXXX()或者orXXX()系的方法,否则默认作用域不会起效果,至于原因,打开where()方法的代码一看便知)
事务操作
事务操作
...
@@ -894,7 +894,7 @@ class ProductController extends \yii\web\Controller
...
@@ -894,7 +894,7 @@ class ProductController extends \yii\web\Controller
}
}
}
}
```
```
(译
者
注:我觉得上面应该是原手册里的bug)
(译注:我觉得上面应该是原手册里的bug)
在控制器层使用事务:
在控制器层使用事务:
...
...
docs/guide-zh-CN/runtime-bootstrapping.md
View file @
1253109e
...
@@ -24,7 +24,7 @@ Composer 自动加载器,以及通过 `Yii` 类加载的 Yii 自动加载器
...
@@ -24,7 +24,7 @@ Composer 自动加载器,以及通过 `Yii` 类加载的 Yii 自动加载器
因为引导工作必须在处理
**每一次**
请求之前都进行一遍,因此让该过程尽可能轻量化就异常重要,请尽可能地优化这一步骤。
因为引导工作必须在处理
**每一次**
请求之前都进行一遍,因此让该过程尽可能轻量化就异常重要,请尽可能地优化这一步骤。
请尽量不要注册太多引导组件。只有他需要在 HTTP 请求处理的全部生命周期中都作用时才需要使用它。举一个用到它的范例:一个模块需要注册额外的 URL 解析规则,就应该把它列在应用的
请尽量不要注册太多引导组件。只有他需要在 HTTP 请求处理的全部生命周期中都作用时才需要使用它。举一个用到它的范例:一个模块需要注册额外的 URL 解析规则,就应该把它列在应用的
[
bootstrap 属性
](
structure-applications.md#bootstrap
)
之中,这样该 URL 解析规则才能在解析请求之前生效。(译
者
注:换言之,为了性能需要,除了 URL
[
bootstrap 属性
](
structure-applications.md#bootstrap
)
之中,这样该 URL 解析规则才能在解析请求之前生效。(译注:换言之,为了性能需要,除了 URL
解析等少量操作之外,绝大多数组件都应该按需加载,而不是都放在引导过程中。)
解析等少量操作之外,绝大多数组件都应该按需加载,而不是都放在引导过程中。)
在生产环境中,可以开启字节码缓存,比如 APC,来进一步最小化加载和解析 PHP 文件所需的时间。
在生产环境中,可以开启字节码缓存,比如 APC,来进一步最小化加载和解析 PHP 文件所需的时间。
...
...
docs/guide-zh-CN/start-forms.md
View file @
1253109e
...
@@ -41,7 +41,7 @@ class EntryForm extends Model
...
@@ -41,7 +41,7 @@ class EntryForm extends Model
该类继承自Yii 提供的一个基类
[
[yii\base\Model
]
],该基类通常用来表示数据。
该类继承自Yii 提供的一个基类
[
[yii\base\Model
]
],该基类通常用来表示数据。
> 补充:[[yii\base\Model]] 被用于普通模型类的父类并与数据表**无关**。[[yii\db\ActiveRecord]] 通常是普通模型类的父类但与数据表有关联(译
者
注:[[yii\db\ActiveRecord]] 类其实也是继承自 [[yii\base\Model]],增加了数据库处理)。
> 补充:[[yii\base\Model]] 被用于普通模型类的父类并与数据表**无关**。[[yii\db\ActiveRecord]] 通常是普通模型类的父类但与数据表有关联(译注:[[yii\db\ActiveRecord]] 类其实也是继承自 [[yii\base\Model]],增加了数据库处理)。
`EntryForm`
类包含
`name`
和
`email`
两个公共成员,用来储存用户输入的数据。它还包含一个名为
`rules()`
的方法,用来返回数据验证规则的集合。上面声明的验证规则表示:
`EntryForm`
类包含
`name`
和
`email`
两个公共成员,用来储存用户输入的数据。它还包含一个名为
`rules()`
的方法,用来返回数据验证规则的集合。上面声明的验证规则表示:
...
...
docs/guide-zh-CN/start-installation.md
View file @
1253109e
...
@@ -30,7 +30,7 @@ Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下
...
@@ -30,7 +30,7 @@ Composer 安装后,切换到一个可通过 Web 访问的目录,执行如下
> 注意:在安装过程中 Composer 可能会询问你 GitHub 账户的登录信息,因为可能在使用中超过了 GitHub API
> 注意:在安装过程中 Composer 可能会询问你 GitHub 账户的登录信息,因为可能在使用中超过了 GitHub API
(对匿名用户的)使用限制。因为 Composer 需要为所有扩展包从 GitHub
(对匿名用户的)使用限制。因为 Composer 需要为所有扩展包从 GitHub
中获取大量信息,所以超限非常正常。(译
者
注:也意味着作为程序猿没有 GitHub 账号,就真不能愉快地玩耍了)登陆 GitHub
中获取大量信息,所以超限非常正常。(译注:也意味着作为程序猿没有 GitHub 账号,就真不能愉快地玩耍了)登陆 GitHub
之后可以得到更高的 API 限额,这样 Composer 才能正常运行。更多细节请参考
[
Composer
之后可以得到更高的 API 限额,这样 Composer 才能正常运行。更多细节请参考
[
Composer
文档](https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens)(该段 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
)
)。
中文文档
[
期待您的参与
](
https://github.com/5-say/composer-doc-cn/blob/master/cn-introduction/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens
)
)。
...
@@ -117,7 +117,7 @@ http://localhost/basic/web/index.php
...
@@ -117,7 +117,7 @@ http://localhost/basic/web/index.php
DocumentRoot "path/to/basic/web"
DocumentRoot "path/to/basic/web"
<Directory
"
path
/
to
/
basic
/
web
"
>
<Directory
"
path
/
to
/
basic
/
web
"
>
# 开启 mod_rewrite 用于美化 URL 功能的支持(译
者
注:对应 pretty URL 选项)
# 开启 mod_rewrite 用于美化 URL 功能的支持(译注:对应 pretty URL 选项)
RewriteEngine on
RewriteEngine on
# 如果请求的是真实存在的文件或目录,直接访问
# 如果请求的是真实存在的文件或目录,直接访问
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-f
...
...
docs/guide-zh-CN/tutorial-core-validators.md
View file @
1253109e
...
@@ -194,7 +194,7 @@ function foo($model, $attribute) {
...
@@ -194,7 +194,7 @@ function foo($model, $attribute) {
-
`filter`
:用于检查输入值存在性必然会进行数据库查询,而该属性为用于进一步筛选该查询的过滤条件。可以为代表额外查询条件的字符串或数组(关于查询条件的格式,请参考
[
[yii\db\Query::where()
]
]);或者样式为
`function ($query)`
的匿名函数,
`$query`
参数为你希望在该函数内进行修改的
[
[yii\db\Query|Query
]
] 对象。
-
`filter`
:用于检查输入值存在性必然会进行数据库查询,而该属性为用于进一步筛选该查询的过滤条件。可以为代表额外查询条件的字符串或数组(关于查询条件的格式,请参考
[
[yii\db\Query::where()
]
]);或者样式为
`function ($query)`
的匿名函数,
`$query`
参数为你希望在该函数内进行修改的
[
[yii\db\Query|Query
]
] 对象。
-
`allowArray`
:是否允许输入值为数组。默认为 false。若该属性为 true 且输入值为数组,则数组的每个元素都必须在目标字段中存在。值得注意的是,若用吧
`targetAttribute`
设为多元素数组来验证被测值在多字段中的存在性时,该属性不能设置为 true。
-
`allowArray`
:是否允许输入值为数组。默认为 false。若该属性为 true 且输入值为数组,则数组的每个元素都必须在目标字段中存在。值得注意的是,若用吧
`targetAttribute`
设为多元素数组来验证被测值在多字段中的存在性时,该属性不能设置为 true。
> 译
者
注:[exist](#exist) 和 [unique](#unique) 验证器的机理和参数都相似,有点像一体两面的阴和阳。
> 译注:[exist](#exist) 和 [unique](#unique) 验证器的机理和参数都相似,有点像一体两面的阴和阳。
-
他们的区别是 exist 要求
`targetAttribute`
键所代表的的属性在其值所代表字段中找得到;而 unique 正相反,要求键所代表的的属性不能在其值所代表字段中被找到。
-
他们的区别是 exist 要求
`targetAttribute`
键所代表的的属性在其值所代表字段中找得到;而 unique 正相反,要求键所代表的的属性不能在其值所代表字段中被找到。
-
从另一个角度来理解:他们都会在验证的过程中执行数据库查询,查询的条件即为where $v=$k (假设
`targetAttribute`
的其中一对键值对为
`$k => $v`
)。unique 要求查询的结果数
`$count==0`
,而 exist 则要求查询的结果数
`$count>0`
-
从另一个角度来理解:他们都会在验证的过程中执行数据库查询,查询的条件即为where $v=$k (假设
`targetAttribute`
的其中一对键值对为
`$k => $v`
)。unique 要求查询的结果数
`$count==0`
,而 exist 则要求查询的结果数
`$count>0`
-
最后别忘了,unique 验证器不存在
`allowArray`
属性哦。
-
最后别忘了,unique 验证器不存在
`allowArray`
属性哦。
...
@@ -423,7 +423,7 @@ function foo($model, $attribute) {
...
@@ -423,7 +423,7 @@ function foo($model, $attribute) {
-
若键和值相同,你可以只指定值。(如:
`['a2']`
就代表
`['a2'=>'a2']`
)
-
若键和值相同,你可以只指定值。(如:
`['a2']`
就代表
`['a2'=>'a2']`
)
-
`filter`
:用于检查输入值唯一性必然会进行数据库查询,而该属性为用于进一步筛选该查询的过滤条件。可以为代表额外查询条件的字符串或数组(关于查询条件的格式,请参考
[
[yii\db\Query::where()
]
]);或者样式为
`function ($query)`
的匿名函数,
`$query`
参数为你希望在该函数内进行修改的
[
[yii\db\Query|Query
]
] 对象。
-
`filter`
:用于检查输入值唯一性必然会进行数据库查询,而该属性为用于进一步筛选该查询的过滤条件。可以为代表额外查询条件的字符串或数组(关于查询条件的格式,请参考
[
[yii\db\Query::where()
]
]);或者样式为
`function ($query)`
的匿名函数,
`$query`
参数为你希望在该函数内进行修改的
[
[yii\db\Query|Query
]
] 对象。
> 译
者
注:[exist](#exist) 和 [unique](#unique) 验证器的机理和参数都相似,有点像一体两面的阴和阳。
> 译注:[exist](#exist) 和 [unique](#unique) 验证器的机理和参数都相似,有点像一体两面的阴和阳。
-
他们的区别是 exist 要求
`targetAttribute`
键所代表的的属性在其值所代表字段中找得到;而 unique 正相反,要求键所代表的的属性不能在其值所代表字段中被找到。
-
他们的区别是 exist 要求
`targetAttribute`
键所代表的的属性在其值所代表字段中找得到;而 unique 正相反,要求键所代表的的属性不能在其值所代表字段中被找到。
-
从另一个角度来理解:他们都会在验证的过程中执行数据库查询,查询的条件即为where $v=$k (假设
`targetAttribute`
的其中一对键值对为
`$k => $v`
)。unique 要求查询的结果数
`$count==0`
,而 exist 则要求查询的结果数
`$count>0`
-
从另一个角度来理解:他们都会在验证的过程中执行数据库查询,查询的条件即为where $v=$k (假设
`targetAttribute`
的其中一对键值对为
`$k => $v`
)。unique 要求查询的结果数
`$count==0`
,而 exist 则要求查询的结果数
`$count>0`
-
最后别忘了,unique 验证器不存在
`allowArray`
属性哦。
-
最后别忘了,unique 验证器不存在
`allowArray`
属性哦。
...
...
docs/guide-zh-CN/tutorial-yii-integration.md
View file @
1253109e
...
@@ -84,7 +84,7 @@ $yiiConfig = require(__DIR__ . '/../config/yii/web.php');
...
@@ -84,7 +84,7 @@ $yiiConfig = require(__DIR__ . '/../config/yii/web.php');
new
yii\web\Application
(
$yiiConfig
);
// 千万别在这调用 run() 方法。(笑)
new
yii\web\Application
(
$yiiConfig
);
// 千万别在这调用 run() 方法。(笑)
```
```
如你所见,这段代码与典型的 Yii 应用的
[
入口脚本
](
structure-entry-scripts.md
)
非常相似。唯一的不同之处在于在 Yii 应用创建成功之后,并不会紧接着调用
`run()`
方法。因为,
`run()`
方法的调用会接管 HTTP 请求的处理流程。(译
者
注:换言之,这就不是第三方系统而是 Yii 系统了,URL 规则也会跟着换成 Yii 的规则了)
如你所见,这段代码与典型的 Yii 应用的
[
入口脚本
](
structure-entry-scripts.md
)
非常相似。唯一的不同之处在于在 Yii 应用创建成功之后,并不会紧接着调用
`run()`
方法。因为,
`run()`
方法的调用会接管 HTTP 请求的处理流程。(译注:换言之,这就不是第三方系统而是 Yii 系统了,URL 规则也会跟着换成 Yii 的规则了)
与 Yii 应用中一样,你可以依据运行该第三方系统的环境,针对性地配置 Yii 应用实例。比如,为了使用
[
活动记录
](
db-active-record.md
)
功能,你需要先用该第三方系统的 DB 连接信息,配置 Yii 的
`db`
应用组件。
与 Yii 应用中一样,你可以依据运行该第三方系统的环境,针对性地配置 Yii 应用实例。比如,为了使用
[
活动记录
](
db-active-record.md
)
功能,你需要先用该第三方系统的 DB 连接信息,配置 Yii 的
`db`
应用组件。
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment