FuelPHP - 管理画面を自動作成する
管理者用Scaffoldをoil generateで自動作成できます。 下記のようにやります。
oil generate adminコマンド
$ 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は強制的に上書きする。
謎のエラー
なんか下記だとエラーになる。
$ php oil g admin items name:string[30] price:int:unsigned active:tinyint:default[0] -fUncaught 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ファイルを作成するだけですので、これを実行します。
$ 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.php と simpleauth.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.php の groups の設定が未設定の場合、adminのgroupはデフォルトで 100 になるっぽいです。
config.phpのalways_loadの設定
fuel/app/config/config.php に下記を設定します。
'always_load' => [ 'packages' => [ 'orm', 'auth' ]],管理者userを作る
oil consoleでコマンドラインでFuelPHPを実行出来ますので、これでユーザを作成します。
$ php oil consoleFuel 1.8.2 - PHP 7.2.16 (cli) (Mar 9 2019 01:48:21) [Linux]1