FuelPHPで管理画面を作ってみる

今日はFuelPHPを触ってみる。

2年以上前にKohanaをつかってWebサービス作ったり、Drupalのモジュール書いたりしてた。で、久しぶりにPHPでサーバアプリを作成することになった。で、どのフレームワークを使うか検討してみたんだけど、KohanaよりFuelPHPの方がよさそう。なので、FuelPHPを触って、ついでにPHPのリハビリ。

本当はRuby on Railsでやりたいんだけどね…

早速MAMPの更新。ここんところ使ってなかったので、バージョンがちょっと上がってた。

FuelPHPのインストール

$ curl get.fuelphp.com/oil | sh

oilという実行ファイルをインストール。oilを使ってプロジェクトを作成するらしい。oilは/usr/bin/oilにインストールされる。

プロジェクトを作成

$ oil create MyToDo

と実行すると、プロジェクトに必要なファイルがダウンロードされ、プロジェクトが作成される。こんなディレクトリ構成。

.
├── docs
│   ├── assets
│   │   ├── css
│   │   ├── fonts
│   │   ├── img
│   │   └── js
│   ├── classes
│   │   ├── agent
│   │   ├── cache
│   │   ├── database
│   │   ├── file
│   │   ├── model_crud
│   │   ├── mongo
│   │   ├── session
│   │   ├── upload
│   │   └── validation
│   ├── general
│   │   └── controllers
│   ├── installation
│   ├── packages
│   │   ├── auth
│   │   ├── email
│   │   ├── oil
│   │   ├── orm
│   │   └── parser
│   └── templates
├── fuel
│   ├── app
│   │   ├── cache
│   │   ├── classes
│   │   ├── config
│   │   ├── lang
│   │   ├── logs
│   │   ├── migrations
│   │   ├── modules
│   │   ├── tasks
│   │   ├── tmp
│   │   ├── vendor
│   │   └── views
│   ├── core
│   │   ├── classes
│   │   ├── config
│   │   ├── lang
│   │   ├── tasks
│   │   ├── tests
│   │   ├── vendor
│   │   └── views
│   └── packages
│       ├── auth
│       ├── email
│       ├── oil
│       ├── orm
│       └── parser
└── public
    └── assets
        ├── css
        ├── img
        └── js

CodeIgniter系なのでKohanaとほぼ同じ(だっけ?)。

MAMPで表示するために

$ ln -s /Users/username/Documents/Workspace/MyToDo/public /Applications/MAMP/htdocs/mytodo

とシンボリックリンクを張る。MAMP(ポートを標準設定にしている)を起動して、http://localhost/mytodoにアクセスするとWelcomeページが表示された。

FuelPHP Welcomeページ

設定

まずDBの設定を行う。
MAMPのphpmyadminでデータベース「mytodo」を作成する。
fuel/app/config/development/db.phpを編集する。
dbname=mytodoとする。

return array(
	'default' => array(
		'connection'  => array(
			'dsn'        => 'mysql:host=localhost;dbname=mytodo',
			'username'   => 'root',
			'password'   => 'root',
		),
	),
);

次にORMを利用するように設定する。fuel/app/config/config.phpを編集する。packagesでormがコメントアウトされているので有効にする。認証も行うので、authも入れる。

	/**************************************************************************/
	/* Always Load                                                            */
	/**************************************************************************/
	'always_load'  => array(
 
		'packages'  => array(
		    'auth',
		    'orm',
		),

また、同ファイルを以下のように変更する。

		'whitelisted_classes' => array(
			'Fuel\\Core\\Response',
			'Fuel\\Core\\View',
			'Fuel\\Core\\ViewModel',
            'Fuel\Core\Validation',
			'Closure',
		)

続いて、認証におけるグループを設定する。fuel/packages/auth/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')),
	),

同ファイルを編集してゲストログインができないように設定する。

	'guest_login' => false,

ユーザの作成

ユーザモデルを作成する。

$ oil generate model users username:varchar[50] password:string group:int email:string last_login:int login_hash:string profile_fields:text
$ oil refine migrate

oilのコンソールモードでadminユーザを作成する。

$ oil console
Fuel 1.1 - PHP 5.3.6 (cli) (Sep 15 2011 11:18:57) [Darwin]
>>> Auth::create_user('admin', 'password', 'r.izumita@example.com', 100);
1
>>> [ctrl-c]

コードの生成

oil genetare adminコマンドで認証付きのコードが生成される。ToDoモデルとToDoテーブル、コントローラ、ビューが作成される。

$ oil generate admin todos title:string summary:text due:datetime user_id:int
$ oil refine migrate

ブラウザでadmin/todosにアクセスすると認証を求められる。
Login
上で設定したadmin/passwordでログインする。と、Dashboardが表示される。
Dashboard
ナビゲーションバーにTodosがあるのでクリックするとToDoの一覧ページが表示される。
Todos
Add new TodoボタンからToDo追加画面に遷移する。

とりあえず管理画面までできた。
ユーザの選択とか日付の入力のカスタマイズはおいておく。

「FuelPHPで管理画面を作ってみる」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です