Php/fuelphp/管理パネル作成
提供: 初心者エンジニアの簡易メモ
目次
config設定
- appのconfig.phpが空なのでcoreからコピーしてくる
cp fuel/core/config/config.php fuel/app/config/config.php
- fuel/app/config/config.phpにライブラリ追加
'security' => array( 'whitelisted_classes' => array( 'Fuel\\Core\\Response', 'Fuel\\Core\\View', 'Fuel\\Core\\ViewModel', + 'Fuel\\Core\\Validation', 'Closure', ) ), 'always_load' => array( 'packages' => array( - //'orm', + 'auth', + 'orm', ), ),
SimpleAuth作成
雛形用意
cp fuel/packages/auth/config/simpleauth.php fuel/app/config/simpleauth.php
以下追加
vi fuel/app/config/simpleauth.php 'groups' => array( -1 => array('name' => 'Banned', 'roles' => array('banned')), // 禁止ユーザ 0 => array('name' => 'Guests', 'roles' => array()), // ゲスト 1 => array('name' => 'Users', 'roles' => array('user')), // 一般ユーザ 50 => array('name' => 'Moderators', 'roles' => array('user', 'moderator')), // 制作 100 => array('name' => 'Administrators', 'roles' => array('user', 'moderator', 'admin')), // 管理
ユーザモデル作成
php oil generate model users username:varchar[50] password:string group:int email:string last_login:int login_hash:string profile_fields:text
Migrateでテーブル作成
php oil refine migrate
ユーザデータ追加
テーブル直追加でも良いがoil consoleでもできる php oil console >Auth::create_user('admin', 'password', 'admin@example.jp', 100); >[c+ctrl]
管理ページ作成(fuel v1.1から
php oil generate admin posts title:string slug:string summary:text body:text user_id:int Creating controller: /var/www/fuelphp/project1/fuel/app/classes/controller/base.php Creating controller: /var/www/fuelphp/project1/fuel/app/classes/controller/admin.php Creating views: /var/www/fuelphp/project1/fuel/app/views/admin/template.php Creating views: /var/www/fuelphp/project1/fuel/app/views/admin/dashboard.php Creating views: /var/www/fuelphp/project1/fuel/app/views/admin/login.php Creating migration: /var/www/fuelphp/project1/fuel/app/migrations/004_create_posts.php Creating model: /var/www/fuelphp/project1/fuel/app/classes/model/post.php Creating controller: /var/www/fuelphp/project1/fuel/app/classes/controller/admin/posts.php Creating view: /var/www/fuelphp/project1/fuel/app/views/admin/posts/index.php Creating view: /var/www/fuelphp/project1/fuel/app/views/admin/posts/view.php Creating view: /var/www/fuelphp/project1/fuel/app/views/admin/posts/create.php Creating view: /var/www/fuelphp/project1/fuel/app/views/admin/posts/edit.php Creating view: /var/www/fuelphp/project1/fuel/app/views/admin/posts/_form.php Creating view: /var/www/fuelphp/project1/fuel/app/views/template.php
マイグレーションを実行して、テーブル作成
oil refine migrate
アクセス
http://project1.localhost/index.php/admin/posts
無限ループする場合
以下の行を追加
vi app/classes/controller/admin.php 21 + if (Request::active()->action == 'login') return; 22 Response::redirect('admin/login');
ヘッダーメニューから特定のcontrollerへのリンクを非表示にしたい場合
以下を追加
- views/template.php
30 <?php foreach (glob(APPPATH.'classes/controller/admin/*.php') as $controller): ?> 31+ <?php if (preg_match("!/(apk|thumbnail|upload).php!", $controller)) continue; ?>
グループによって表示制御を行う
<?php if ($current_user->group == 100):?> 管理のみ表示 <?php endif; ?>
ユーザ名によって表示制御を行う
<?php if ($current_user->username == 'user1'):?> 指定ユーザのみ表示 <?php endif; ?>
viewsに作成日時、更新日時追加
vi views/admin/.../view.php
<p> <strong>Created_at:</strong> <?php echo date('Y-m-d H:i', $project->created_at); ?></p> <p> <strong>Updated_at:</strong> <?php echo date('Y-m-d H:i', $project->updated_at); ?></p>