facebook twitter hatena line google mixi email

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>