LoginSignup
15
15

More than 5 years have passed since last update.

FuelPHP ルーティングで管理画面とアプリの共存

Posted at

運用方法によって賛否両論ですが、アプリの設定ファイルを管理画面でも参照したい場合にアプリと管理画面を同一のリポジトリに同居させたい場合があるのでそういう場合の設定をルーティングとenvの切り替えで実現するためのメモ

環境

  • centos6.3
  • fuelPHP1.5.3

事前準備に必要なもの

参考にしたサイト

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を設定すればソースをいじらずにアプリ側と管理画面側でリポジトリを共有できます。

15
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
15