Commit 6c2d7644 by Nobuo Kihara

docs/guide-ja/rest-controllers.md - completed [ci skip]

parent c053324b
...@@ -130,7 +130,7 @@ RESTful ウェブサービス ...@@ -130,7 +130,7 @@ RESTful ウェブサービス
* [クイックスタート](rest-quick-start.md) * [クイックスタート](rest-quick-start.md)
* [リソース](rest-resources.md) * [リソース](rest-resources.md)
* **翻訳中** [コントローラ](rest-controllers.md) * [コントローラ](rest-controllers.md)
* **翻訳中** [ルーティング](rest-routing.md) * **翻訳中** [ルーティング](rest-routing.md)
* **翻訳中** [レスポンスの書式設定](rest-response-formatting.md) * **翻訳中** [レスポンスの書式設定](rest-response-formatting.md)
* **翻訳中** [認証](rest-authentication.md) * **翻訳中** [認証](rest-authentication.md)
......
...@@ -74,34 +74,34 @@ public function behaviors() ...@@ -74,34 +74,34 @@ public function behaviors()
## `ActiveController` を拡張する <a name="extending-active-controller"></a> ## `ActiveController` を拡張する <a name="extending-active-controller"></a>
If your controller class extends from [[yii\rest\ActiveController]], you should set コントローラを [[yii\rest\ActiveController]] から拡張する場合は、このコントローラを通じて提供しようとしているリソースクラスの名前を [[yii\rest\ActiveController::modelClass||modelClass]] プロパティにセットしなければなりません。
its [[yii\rest\ActiveController::modelClass||modelClass]] property to be the name of the resource class リソースクラスは [[yii\db\ActiveRecord]] から拡張しなければなりません。
that you plan to serve through this controller. The class must extend from [[yii\db\ActiveRecord]].
### Customizing Actions <a name="customizing-actions"></a> ### アクションをカスタマイズする <a name="customizing-actions"></a>
By default, [[yii\rest\ActiveController]] provides the following actions: デフォルトでは、[[yii\rest\ActiveController]] は次のアクションを提供します。
* [[yii\rest\IndexAction|index]]: list resources page by page; * [[yii\rest\IndexAction|index]]: リソースをページごとに一覧する。
* [[yii\rest\ViewAction|view]]: return the details of a specified resource; * [[yii\rest\ViewAction|view]]: 指定したリソースの詳細を返す。
* [[yii\rest\CreateAction|create]]: create a new resource; * [[yii\rest\CreateAction|create]]: 新しいリソースを作成する。
* [[yii\rest\UpdateAction|update]]: update an existing resource; * [[yii\rest\UpdateAction|update]]: 既存のリソースを更新する。
* [[yii\rest\DeleteAction|delete]]: delete the specified resource; * [[yii\rest\DeleteAction|delete]]: 指定したりソースを削除する。
* [[yii\rest\OptionsAction|options]]: return the supported HTTP methods. * [[yii\rest\OptionsAction|options]]: サポートされている HTTP メソッドを返す。
All these actions are declared through the [[yii\rest\ActiveController::actions()|actions()]] method. これらのアクションは全て [[yii\rest\ActiveController::actions()|actions()]] メソッドによって宣言されます。
You may configure these actions or disable some of them by overriding the `actions()` method, like shown the following, `actions()` メソッドをオーバーライドすることによって、これらのアクションを構成したり、そのいくつかを無効化したりすることが出来ます。
例えば、
```php ```php
public function actions() public function actions()
{ {
$actions = parent::actions(); $actions = parent::actions();
// disable the "delete" and "create" actions // "delete" と "create" のアクションを無効にする
unset($actions['delete'], $actions['create']); unset($actions['delete'], $actions['create']);
// customize the data provider preparation with the "prepareDataProvider()" method // データプロバイダの準備を "prepareDataProvider()" メソッドでカスタマイズする
$actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider']; $actions['index']['prepareDataProvider'] = [$this, 'prepareDataProvider'];
return $actions; return $actions;
...@@ -109,40 +109,39 @@ public function actions() ...@@ -109,40 +109,39 @@ public function actions()
public function prepareDataProvider() public function prepareDataProvider()
{ {
// prepare and return a data provider for the "index" action // "index" アクションのためにデータプロバイダを準備して返す
} }
``` ```
Please refer to the class references for individual action classes to learn what configuration options are available. どういう構成オプションが利用できるかを学ぶためには、個々のアクションクラスのリファレンスを参照してください。
### Performing Access Check <a name="performing-access-check"></a> ### アクセスチェックを実行する <a name="performing-access-check"></a>
When exposing resources through RESTful APIs, you often need to check if the current user has the permission RESTful API によってリソースを公開するときには、たいてい、現在のユーザがリクエストしているリソースにアクセスしたり操作したりする許可を持っているか否かをチェックする必要があります。
to access and manipulate the requested resource(s). With [[yii\rest\ActiveController]], this can be done これは、[[yii\rest\ActiveController]] を使う場合は、[[yii\rest\ActiveController::checkAccess()|checkAccess()]] メソッドを次のようにオーバーライドすることによって出来ます。
by overriding the [[yii\rest\ActiveController::checkAccess()|checkAccess()]] method like the following,
```php ```php
/** /**
* Checks the privilege of the current user. * 現在のユーザの特権をチェックする。
* *
* This method should be overridden to check whether the current user has the privilege * 現在のユーザが指定されたデータモデルに対して指定されたアクションを実行する特権を
* to run the specified action against the specified data model. * 有するか否かをチェックするためには、このメソッドをオーバーライドしなければなりません。
* If the user does not have access, a [[ForbiddenHttpException]] should be thrown. * ユーザが権限をもたない場合は、[[ForbiddenHttpException]] が投げられなければなりません。
* *
* @param string $action the ID of the action to be executed * @param string $action 実行されるアクションの ID。
* @param \yii\base\Model $model the model to be accessed. If null, it means no specific model is being accessed. * @param \yii\base\Model $model アクセスされるモデル。null の場合は、アクセスされる特定の特定がないことを意味する。
* @param array $params additional parameters * @param array $params 追加のパラメータ
* @throws ForbiddenHttpException if the user does not have access * @throws ForbiddenHttpException ユーザが権限をもたない場合
*/ */
public function checkAccess($action, $model = null, $params = []) public function checkAccess($action, $model = null, $params = [])
{ {
// check if the user can access $action and $model // ユーザが $action と $model に対する権限を持つかどうかをチェック
// throw ForbiddenHttpException if access should be denied // アクセスを拒否すべきときは ForbiddenHttpException を投げる
} }
``` ```
The `checkAccess()` method will be called by the default actions of [[yii\rest\ActiveController]]. If you create `checkAccess()` メソッドは [[yii\rest\ActiveController]] のデフォルトのアクションから呼ばれます。
new actions and also want to perform access check, you should call this method explicitly in the new actions. 新しいアクションを作成して、それに対してもアクセスチェックをしたい場合は、新しいアクションの中からこのメソッドを明示的に呼び出さなければなりません。
> Tip: You may implement `checkAccess()` by using the [Role-Based Access Control (RBAC) component](security-authorization.md). > Tip|ヒント: [ロールベースアクセス制御 (RBAC) コンポーネント](security-authorization.md) を使って `checkAccess()` を実装することも可能です。
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