DEV

FuelPHP - 管理画面を自動作成する

管理者用Scaffoldをoil generateで自動作成できます。 下記のようにやります。

oil generate adminコマンド

Terminal window
$ php oil g admin items name:string[30] price:int:unsigned active:tinyint:default\[0] -f

これで、Migration, Controller, Model, Viewが作られます。 ありがとうございます。 default[0] の間の \ については、下記をご参考くださいませ。

-f はforceになるので、2回目以降これつけないと、すでにbase.phpなどといった指摘を受けるかもしれない。 forceは強制的に上書きする。

謎のエラー

なんか下記だとエラーになる。

Terminal window
$ php oil g admin items name:string[30] price:int:unsigned active:tinyint:default[0] -f
Uncaught exception Fuel\Core\PhpErrorException: 2 - Illegal string offset 'primary'

tinyintと、defaultを逆にするとエラーが出る。 active:default[0]:tinyint だとエラーでないから、これでいいかと思ってたら、下記のような感じでMigratrionファイルがおかしなことになっていた。

'active' => array('null' => false, 'type' => 'default', 'tinyint' => true),

正しくは、default[0] の間に \ を入れるといいらしい。

migrateの実行

oil g admin コマンドはmigrationファイルを作成するだけですので、これを実行します。

Terminal window
$ php oil refine migrate

ちなみに、migrateのヘルプは、 migrate --help で出せます。もし、既に古い内容でmigrateを実行している場合、migrate -v=0 で最初の状態に戻せます。

既存Migrationファイルがある場合

ちなみに、Migrationファイルが作成済みの場合どうなるのだろうと思っていたのですが、 既存のMigrationファイルを検索して、同一テーブルを作成しているファイルを上書きしてくれました。

ログイン認証の設定

simpleauthというのを使います。

usersテーブルの作成

下記でsimpleauth用のusersテーブルが作成できます。沢山users関連テーブルが作られますが、シンプルに使う場合は、usersテーブルさえあればいいです。

oil refine migrate --packages=auth

設定ファイルのコピーと設定

fuel/packages/auth/config 内に、auth.phpsimpleauth.php がありますので、これを fuel/app/config にコピーして、設定をします。設定内容は上記マニュアルや、simpleauth.php 内に書いてあるかと思いますが、例えば、groupsの設定は下記のように設定します。

'groups' => array(
/**
* Examples
* ---
*
* -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')),
*/
100 => array('name' => 'Administrators', 'roles' => array('admin')),
),

ちなみに、simpleauth.phpgroups の設定が未設定の場合、adminのgroupはデフォルトで 100 になるっぽいです。

config.phpのalways_loadの設定

fuel/app/config/config.php に下記を設定します。

'always_load' => [
'packages' => [
'orm',
'auth'
]
],

管理者userを作る

oil consoleでコマンドラインでFuelPHPを実行出来ますので、これでユーザを作成します。

Terminal window
$ php oil console
Fuel 1.8.2 - PHP 7.2.16 (cli) (Mar 9 2019 01:48:21) [Linux]
>>> Auth::create_user('admin', 'password', '[email protected]', 100);
1