作成日:2018-03-13, 更新日:2018-08-10
経緯と希望
1.既存サイトにユーザー専用ページ(/user)を追加。
2.しばらくしてから、vip専用ページ(/vip)を新たに追加することになった。
最終的には下記のようなサイト構成
・http://example.com/ - 既存サイト(静的 or Wordpress or FuelPHP以外のフレームワークなど)
・http://example.com/user - FuelPHPで新サービス追加
・http://example.com/vip - 新サービスをさらにFuelPHPで追加する
「ユーザー専用ページ(/user)」を追加したときは「vip専用ページ(/vip)」を想定していないので諸々面倒。
元々の状態
▼元々は下記のような感じの構成のサイト。
・/home/htdocs/〇〇〇
▼次に、既存サイトに「ユーザー専用ページ(/user)」を追加した。
・/home/fuelphp
・/home/htdocs/〇〇〇
・/home/htdocs/user
※「/home/htdocs/user/index.php」で「/home/fuelphp」のPATHを設定。
vip専用ページ(/vip)を追加
基本、modelやviewなどは、「ユーザー専用ページ(/user)」と同じ。
controllerと新たに追加するmodelなどだけが違う。
▼構成を下記のようにしてルーティングでどうにかする。
・/home/fuelphp
・/home/htdocs/〇〇〇
・/home/htdocs/user
・/home/htdocs/vip
処理
出来る限り最初に追加した「/user」を修正したくない。
routes.phpの用意
・「/home/fuelphp/app/config/routes.php」を複製して「/home/fuelphp/app/config/routes_user.php」にする。
・「/home/fuelphp/app/config/routes.php」を複製して「/home/fuelphp/app/config/routes_vip.php」にする。
※各ファイルの修正は後でする。
vip/index.phpでルーティングファイルのPATH指定
▼「/home/htdocs/vip/index.php」
~ 略 ~ define('PATH_CONFIG_ROUTES', 'routes_vip.php'); ~ 略 ~
※「user/index.php」は修正したくないので・・・修正しない。
routes.phpの修正
「routes_user.php」と「routes_vip.php」に割り振るようにする。
※「user/index.php」は修正したくないので、条件分岐させる。
▼「/home/fuelphp/app/config/routes.php」
if ( !defined('PATH_CONFIG_ROUTES') ) { $path = 'routes_user.php'; } else { $path = PATH_CONFIG_ROUTES; } return include APPPATH . 'config/' . $path;
/vip用のコントローラー準備
ルーティングの設定をする前に先にコントローラーのフォルダを準備しておく。
※後回しでも大丈夫。
「/user」はすでに「/home/fuelphp/app/classes/controller」の下で色々と使っている。
・・・出来れば良い感じに分けたいけど・・・ムリなので「/home/fuelphp/app/classes/controller/vip」を用意する。
※「/vip」以下は全てココに入れるようにする
routes_user.phpの修正
「http://example.com/user/vip/〇〇〇」が表示されてしまうのを禁止。
▼「/home/fuelphp/app/config/routes_user.php」
~ 略 ~ 'vip/(:any)' => '404/index', ~ 略 ~
routes_vip.phpの修正
・「http://example.com/user/hoge」は「controller/hoge」を読む込む。
・「http://example.com/vip/hoge」は「controller/hoge」ではなく「controller/vip/hoge」を読む込むようにする。
▼「/home/fuelphp/app/config/routes_vip.php」
<?php return array( //'_root_' => 'top/index', // The default route '_root_' => 'vip/top/index', '_404_' => '404/index', // The main 404 route '(:any)' => 'vip/$1', );
※「_root_」の設定も合わせて修正(適宜、既存のルーティング設定に合わせる)
※「_404_」は既存のままでいいので修正しない(適宜、既存のルーティング設定に合わせる)
関連項目
・FuelPHPを一つのサイトで複数使いたい
・一つのサイトでFuelPHPを複数使う(簡略版) - 使い回す箇所が少ない場合はコッチのほうが良いと思う。
・1サイトで複数のFuelPHPを使うときのメモ - ややこしくなってきたのでまとめてみた。