beforeActionメソッド(Yii Framework)内にスクリプトを登録したいです。しかし、すべてのコントローラーでそのメソッドを繰り返したくないので、すべてのコントローラーが継承する beforeAction() を作成するにはどうすればよいですか?
どうも、
デフォルトの yiic によって生成された yii webapp には、project/protected/components/Controller.phpに Controller クラスがあり、アプリ内のすべてのコントローラーはこの Controller を継承します。
そのクラスは、beforeAction
.
編集: yiic を使用しておらず、このデフォルトの Controller クラスがない場合は、CController から拡張された新しいクラスを追加して、この新しいクラスからコントローラーを拡張しても問題ありません。この親コントローラー クラスで、コントローラーのすべての共通機能を保持できます。
components ディレクトリ内に BaseController.php を作成する必要があります。このファイル内で、BaseController を CController から継承します。そこに beforeAction を書きます。この後、BaseController からすべてのコントローラーを継承する必要があります。
1) CController で拡張された共通の親コントローラーを作成します (例 SomeController)
2) このコントローラーの beforeAction() にスクリプトを登録する (例 SomeController)
3) SiteController または Module Controller のこのコントローラーを拡張します。
<?php
class SomeController extends CController
{
public function beforeAction()
{
// Your Register Script
}
}
class SiteController extends SomeController
{
// public function actionIndex
}