前回や前々回で管理側と表示側でURLを変えてみたりコントローラーを整理したりしてみましたが、もうこうなったらAppControllerも管理側と表示側で分けてしまいましょう。行けるところまで行っちゃいましょう。地獄の淵が見えるまでね。
別に難しいことはないです。要は間に一枚挟めばいいだけなので。
class AppController extends Controller {
//AppControllerの中身
}
//管理画面のAppController
class AdminAppController extends AppController {
//中身
}
//表示画面用のAppController
class ExpressAppController extends AppController {
//中身
}
//users_controller.php(管理画面)
class UsersController extends AdminAppController {
//中身
}
//home_controller.php(表示画面)
class HomeController extends ExpressAppController {
//中身
}
ざっくりとしか書きませんでしたが、まあこんな感じです。これだけでも言いたいことは伝わると思う(たぶん)
あとは管理側や表示側で共通する部分をそれぞれのAppControllerの中に書けばオッケーです。
上記でいうところのAdminAppControllerやExpressAppControllerは、それぞれ別ファイルにすると他にも設定をいじらなきゃいけないところが出て来るみたいなので、app_controller.phpの中にまとめて書いてしまってもいいと思います。
ファイルを分けたい場合は、正しいやり方はちょっと分からないのですが、↓こんなやり方でもいけることは確認しました。ちょっとダサいかも?
//app_controller.php
App::import('Controller', 'AdminApp');
App::import('Controller', 'ExpressApp');
class AppController extends Controller {
}
app_controller.phpで分けたいAppControllerをインポートしてやると、大丈夫っぽいです。でも、もっとちゃんとしたやり方があると思う(たぶん)
地獄の淵は全く見えませんでしたが、管理側と表示側を今まで以上に効率よく管理できる希望の光みたいなのは見えた気がします。特に僕はなるべく細かくメソッドを分けたい派なので(たぶん)、こういうことができるのは助かるです(たぶん)
LIGはWebサイト制作を支援しています。ご興味のある方は事業ぺージをぜひご覧ください。