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も作成されていました。とりあえずこれらを見ていけば、基本的な使い方は理解できそうです。