PhalconのScaffoldを使ってみる
3回目はScaffoldを使ってみます。Phalcon Developer Toolsのコマンドで生成できてしまうので、サクッとひな形を作るには良いです。セキュリティをどの程度考えているのか分かりませんが。
ではさっそくプロジェクトを作成します。
$ phalcon create-project store
次に設定ファイルを書き換え、DBにアクセスできるようにします。
$ vi app/config/config.php
MySQLの接続情報は各自の環境に合わせてください。
<?php return new \Phalcon\Config(array( 'database' => array( 'adapter' => 'Mysql', 'host' => 'localhost', 'username' => 'root', 'password' => 'root', 'dbname' => 'test_db', ), 'application' => array( 'controllersDir' => __DIR__ . '/../../app/controllers/', 'modelsDir' => __DIR__ . '/../../app/models/', 'viewsDir' => __DIR__ . '/../../app/views/', 'pluginsDir' => __DIR__ . '/../../app/plugins/', 'libraryDir' => __DIR__ . '/../../app/library/', 'cacheDir' => __DIR__ . '/../../app/cache/', 'baseUri' => '/store/', ) ));
次にテーブルを作成します。Migrationの機能もありますが、まだ未検証です。
CREATE TABLE `products` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `types_id` int(11) NOT NULL, `name` varchar(255) NOT NULL DEFAULT '', `price` varchar(31) NOT NULL DEFAULT '', `quantity` int(11) NOT NULL, `status` varchar(31) NOT NULL DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
ターミナルから以下のコマンドでScaffoldのソース類を生成します。
$ phalcon scaffold --table-name=products Phalcon DevTools (1.2.1) Success: Model "products" was successfully created. /Users/****/Sites/phalcon_scaffold/store/app/config/../../app/controllers/ProductsController.php /Users/****/Sites/phalcon_scaffold/store/app/config/../../app/views/products/index.phtml /Users/****/Sites/phalcon_scaffold/store/app/config/../../app/views/products/search.phtml /Users/****/Sites/phalcon_scaffold/store/app/config/../../app/views/products/new.phtml /Users/****/Sites/phalcon_scaffold/store/app/config/../../app/views/products/edit.phtml
ブラウザでアクセスすると以下のような検索フォームが表示されます。
右上の「Create products」で新規追加ができます。
ボタンが「Search」になってますが。
送信すると「product was created successfully」と表示されます。
先ほどの検索ページに戻って、何も入力せずに検索してみると、ちゃんと入力されている事が確認できます。
生成されたコードを見てみると、ログに出力されていたController/Viewの他にModelも作成されていました。とりあえずこれらを見ていけば、基本的な使い方は理解できそうです。