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
7dd5ac08
Commit
7dd5ac08
authored
Nov 07, 2014
by
Nobuo Kihara
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
docs/guide-ja/structure-filters.md - WIP [ci skip]
parent
20563b2b
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
46 additions
and
46 deletions
+46
-46
structure-filters.md
docs/guide-ja/structure-filters.md
+46
-46
No files found.
docs/guide-ja/structure-filters.md
View file @
7dd5ac08
Filters
フィルタ
=======
=======
=
Filters are objects that run before and/or after
[
controller actions
](
structure-controllers.md#actions
)
. For example,
フィルタは、
[
コントローラアクション
](
structure-controllers.md#actions
)
の前 および/または 後に走るオブジェクトです。
an access control filter may run before actions to ensure that they are allowed to be accessed by particular end users;
例えば、アクセスコントロールフィルタはアクションの前に走って、アクションが特定のエンドユーザだけにアクセスを許可するものであることを保証します。
a content compression filter may run after actions to compress the response content before sending them out to end users.
また、コンテンツ圧縮フィルタはアクションの後に走って、レスポンスのコンテンツをエンドユーザに送出する前に圧縮します。
A filter may consist of a pre-filter (filtering logic applied
*before*
actions) and/or a post-filter (logic applied
フィルタは、前フィルタ (アクションの
*前*
に適用されるフィルタのロジック) および/または 後フィルタ (アクションの
*後*
*after*
actions).
に適用されるフィルタ) から構成されます。
##
Using Filters
<a name="using-filters"></a>
##
フィルタを使用する
<a name="using-filters"></a>
Filters are essentially a special kind of
[
behaviors
](
concept-behaviors.md
)
. Therefore, using filters is the same
フィルタは、本質的には特別な種類の
[
ビヘイビア
](
concept-behaviors.md
)
です。したがって、フィルタを使うことは
as
[
using behaviors
](
concept-behaviors.md#attaching-behaviors
)
. You can declare filters in a controller class
[
ビヘイビアを使う
](
concept-behaviors.md#attaching-behaviors
)
ことと同じです。下記のように、
by overriding its
[
[yii\base\Controller::behaviors()|behaviors()
]
] method like the following:
[
[yii\base\Controller::behaviors()|behaviors()
]
] メソッドをオーバーライドすることによって、コントローラの中で
フィルタを宣言することが出来ます:
```
php
```
php
public
function
behaviors
()
public
function
behaviors
()
...
@@ -31,45 +32,44 @@ public function behaviors()
...
@@ -31,45 +32,44 @@ public function behaviors()
}
}
```
```
By default, filters declared in a controller class will be applied to
*all*
actions in that controller. You can,
既定では、コントローラクラスの中で宣言されたフィルタは、そのコントローラの
*全て*
のアクションに適用されます。
however, explicitly specify which actions the filter should be applied to by configuring the
しかし、
[
[yii\base\ActionFilter::only|only
]
] プロパティを構成することによって、フィルタがどのアクションに適用されるべきかを
[
[yii\base\ActionFilter::only|only
]
] property. In the above example, the
`HttpCache`
filter only applies to the
明示的に指定することも出来ます。上記の例では、
`HttpCache`
フィルタは、
`index`
と
`view`
のアクションに対してのみ適用されています。
`index`
and
`view`
actions. You can also configure the
[
[yii\base\ActionFilter::except|except
]
] property to blacklist
また、
[
[yii\base\ActionFilter::except|except
]
] プロパティを構成して、いくつかのアクションをフィルタされないように除外することも可能です。
some actions from being filtered.
Besides controllers, you can also declare filters in a
[
module
](
structure-modules.md
)
or
[
application
](
structure-applications.md
)
.
コントローラのほかに、
[
モジュール
](
structure-modules.md
)
または
[
アプリケーション
](
structure-applications.md
)
When you do so, the filters will be applied to
*all*
controller actions belonging to that module or application,
でもフィルタを宣言することが出来ます。
unless you configure the filters'
[
[yii\base\ActionFilter::only|only
]
] and
[
[yii\base\ActionFilter::except|except
]
]
そのようにした場合、
[
[yii\base\ActionFilter::only|only
]
] と
[
[yii\base\ActionFilter::except|except
]
] のプロパティを
properties like described above.
上で説明したように構成しない限り、そのフィルタは、モジュールまたはアプリケーションに属する
*全て*
のコントローラアクションに適用されます。
> Note: When declaring filters in modules or applications, you should use [routes](structure-controllers.md#routes)
> Note|注意: モジュールやアプリケーションでフィルタを宣言する場合、[[yii\base\ActionFilter::only|only]] と
instead of action IDs in the
[
[yii\base\ActionFilter::only|only
]
] and
[
[yii\base\ActionFilter::except|except
]
] properties.
[
[yii\base\ActionFilter::except|except
]
] のプロパティでは、アクション ID ではなく、
[
ルート
](
structure-controllers.md#routes
)
This is because action IDs alone cannot fully specify actions within the scope of a module or application.
を使うべきです。なぜなら、モジュールやアプリケーションのスコープでは、アクション ID だけでは完全にアクションを指定することが
出来ないからです。
When multiple filters are configured for a single action, they are applied according to the rules described below,
一つのアクションに複数のフィルタが構成されている場合、フィルタは下記で説明されている規則に従って適用されます。
*
Pre-filtering
*
前フィルタ
-
Apply filters declared in the application in the order they are listed in
`behaviors()`
.
-
アプリケーションで宣言されたフィルタを
`behaviors()`
にリストされた順に適用する。
-
Apply filters declared in the module in the order they are listed in
`behaviors()`
.
-
モジュールで宣言されたフィルタを
`behaviors()`
にリストされた順に適用する。
-
Apply filters declared in the controller in the order they are listed in
`behaviors()`
.
-
コントローラで宣言されたフィルタを
`behaviors()`
にリストされた順に適用する。
-
If any of the filters cancel the action execution, the filters (both pre-filters and post-filters) after it will
-
フィルタのどれかがアクションをキャンセルすると、そのフィルタの後のフィルタ (前フィルタと後フィルタの両方) は適用されない。
not be applied.
*
前フィルタを通過したら、アクションを走らせる。
*
Running the action if it passes the pre-filtering.
*
後フィルタ
*
Post-filtering
-
コントローラで宣言されたフィルタを
`behaviors()`
にリストされた逆順で適用する。
-
Apply filters declared in the controller in the reverse order they are listed in
`behaviors()`
.
-
モジュールで宣言されたフィルタを
`behaviors()`
にリストされた逆順で適用する。
-
Apply filters declared in the module in the reverse order they are listed in
`behaviors()`
.
-
アプリケーションで宣言されたフィルタを
`behaviors()`
にリストされた逆順で適用する。
-
Apply filters declared in the application in the reverse order they are listed in
`behaviors()`
.
##
Creating Filters
<a name="creating-filters"></a>
##
フィルタを作成する
<a name="creating-filters"></a>
To create a new action filter, extend from
[
[yii\base\ActionFilter
]
] and override the
新しいアクションフィルタを作成するためには、
[
[yii\base\ActionFilter
]
] を拡張して、
[
[yii\base\ActionFilter::beforeAction()|beforeAction()
]
]
and/or
[
[yii\base\ActionFilter::afterAction()|afterAction()
]
]
[
[yii\base\ActionFilter::beforeAction()|beforeAction()
]
]
および/または
[
[yii\base\ActionFilter::afterAction()|afterAction()
]
]
methods. The former will be executed before an action runs while the latter after an action runs.
メソッドをオーバーライドします。前者はアクションが走る前に実行され、後者は走った後に実行されます。
The return value of
[
[yii\base\ActionFilter::beforeAction()|beforeAction()
]
] determines whether an action should
[
[yii\base\ActionFilter::beforeAction()|beforeAction()
]
] の返り値が、アクションが実行されるべきか否かを決定します。
be executed or not. If it is false, the filters after this one will be skipped and the action will not be executed.
返り値が false である場合、このフィルタの後に続くフィルタはスキップされ、アクションは実行を中止されます。
The following example shows a filter that logs the action execution time
:
次の例は、アクションの実行時間をログに記録するフィルタを示すものです
:
```
php
```
php
namespace
app\components
;
namespace
app\components
;
...
@@ -90,17 +90,17 @@ class ActionTimeFilter extends ActionFilter
...
@@ -90,17 +90,17 @@ class ActionTimeFilter extends ActionFilter
public
function
afterAction
(
$action
,
$result
)
public
function
afterAction
(
$action
,
$result
)
{
{
$time
=
microtime
(
true
)
-
$this
->
_startTime
;
$time
=
microtime
(
true
)
-
$this
->
_startTime
;
Yii
::
trace
(
"
Action '
{
$action
->
uniqueId
}
' spent
$time
second.
"
);
Yii
::
trace
(
"
アクション '
{
$action
->
uniqueId
}
' は
$time
秒を消費。
"
);
return
parent
::
afterAction
(
$action
,
$result
);
return
parent
::
afterAction
(
$action
,
$result
);
}
}
}
}
```
```
##
Core Filters
<a name="core-filters"></a>
##
コアのフィルタ
<a name="core-filters"></a>
Yii
provides a set of commonly used filters, found primarily under the
`yii\filters`
namespace. In the following,
Yii
はよく使われる一連のフィルタを提供しており、それらは、主として
`yii\filters`
名前空間の下にあります。以下では、
we will briefly introduce these filters.
それらのフィルタを簡単に紹介します。
### [[yii\filters\AccessControl|AccessControl]] <a name="access-control"></a>
### [[yii\filters\AccessControl|AccessControl]] <a name="access-control"></a>
...
...
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