😀
FuelPHP ルーティングで管理画面とアプリの共存
運用方法によって賛否両論ですが、アプリの設定ファイルを管理画面でも参照したい場合にアプリと管理画面を同一のリポジトリに同居させたい場合があるのでそういう場合の設定をルーティングとenvの切り替えで実現するためのメモ
環境
- centos6.3
- fuelPHP1.5.3
事前準備に必要なもの
- php5.3以上
- mysql
- fuelPHPがインストール済みであること していない場合はCRUDを作った時のメモ(インストールからCRUD作成まで)を参考に作成してください
参考にしたサイト
bootstrap.phpに環境変数にadmin_developmentを追加する
fuelPHPのデフォルトの環境変数はdevelopment,test,staging,productionの4つですがそれ以外に追加しても(今回の例ではadmin_development,admin_production)configなどは環境変数名でオーバーライドしてくれます。
環境変数をbootstrap.phpに定義してみます
fuel/app/bootstrap.php
Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] :'admin_development');
設定ファイル(fuel/app/config/admin_development/db.php)の作成
今回はサンプルでCRUD環境を作成するのでfuel/app/config/admin_development/db.phpを作成します。
fuel/app/bootstrap.php
<?php
return array(
'default' => array(
'type' => 'mysqli',
'connection' => array(
'hostname' => 'ホスト名',
'port' => 'ポート名',
'database' => 'データベース名',
'username' => 'ユーザ名',
'password' => 'パスワード',
'presistent' => false
),
'enable_cache' => false,
'profiling' => true,
),
);
ルーティング設定ファイルの編集
ルーティングの設定でenvがadmin_development又はadmin_production以外の場合は例外を出力するように設定します
fuel/app/config/routes.php
<?php
return array(
'_root_' => 'welcome/index', // The default route
'_404_' => 'welcome/404', // The main 404 route
//追加する
'admin' => function (){
if (\Fuel::$env != 'admin_development' || \Fuel::$env != 'admin_production')
{
throw new HttpNotFoundException('not found');
}
return \Request::forge('admin/$1', false)->execute();
},
);
サンプルでCRUD環境を作る
php oil g scaffold admin name:string description:text
Creating migration: /home/web/lo.fuel.master.org/fuel/app/migrations/003_create_admins.php
Creating model: /home/web/lo.fuel.master.org/fuel/app/classes/model/admin.php
Creating controller: /home/web/lo.fuel.master.org/fuel/app/classes/controller/admin.php
Creating view: /home/web/lo.fuel.master.org/fuel/app/views/admin/index.php
Creating view: /home/web/lo.fuel.master.org/fuel/app/views/admin/view.php
Creating view: /home/web/lo.fuel.master.org/fuel/app/views/admin/create.php
Creating view: /home/web/lo.fuel.master.org/fuel/app/views/admin/edit.php
Creating view: /home/web/lo.fuel.master.org/fuel/app/views/admin/_form.php
マイグレーション(migrate)の実行
php oil refine migrate
http://localhost/adminにアクセスする
CRUD画面が表示されてcreate,read,update,delete画面が表示されてるはずです。
bootstrap.phpの値をdevelopmentに戻してアクセスしてみる
fuel/app/bootstrap.php
Fuel::$env = (isset($_SERVER['FUEL_ENV']) ? $_SERVER['FUEL_ENV'] : Fuel::DEVELOPMENT);↲
実際の運用レベルですとfuel/app/bootstrap.phpにenvの記載をするのではなく
apache又はnginx側でenvを設定すればソースをいじらずにアプリ側と管理画面側でリポジトリを共有できます。
Discussion