長い二日目
symfony advent calendar day two setting up a data modelの情報を元にbookmarkの作成。
「bookmark」というプロジェクトに「frontend」というアプリケーションを作る。
C:\>mkdir C:\workspase\bookmark C:\>cd C:\workspase\bookmark C:\workspase\bookmark>symfony init-project bookmark C:\workspase\bookmark>symfony init-app frontend
アクセスできるようにhttpd.confを修正。
mod_rewriteのコメントはずして、面倒なのでVirtualHost化。
「localhost」でアクセスしたら「C:/www」を、「bookmark」でアクセスしたら「C:/workspace/bookmark/web」を表示するように。
NameVirtualHost *
<VirtualHost *>
DocumentRoot "C:/www"
ServerName localhost
Alias /eclipse "C:/workspace"
</VirtualHost>
<VirtualHost *>
DocumentRoot "C:/workspace/bookmark/web"
ServerName bookmark
DirectoryIndex index.php
Alias /sf "C:/php5/PEAR/data/symfony/web/sf"
<Directory "C:/workspace/bookmark/web">
AllowOverride All
</Directory>
</VirtualHost>
ローカルの名前解決するhostsファイル書き換え。
Windows2000なら「C:\WINNT\system32\drivers\etc\hosts」、WindowsXPなら「C:\Windows\system32\drivers\etc\hosts」
デフォルトではlocalhostの設定しかされてないはず。
他の設定もあるなら山田ウイルス乙。
127.0.0.1 localhost 127.0.0.1 bookmark
ブラウザで「http://bookmark/」へアクセスして「Congratulations!」がみれればOK。
「http://symfony/frontend_dev.php/」でjavascriptが走ってればエイリアスの指定も問題なし。
SymfonyはPHP5から利用できるようになったO/RマッパーPropelを利用するので定義ファイルconfig/schema.xmlの作成。
<?xml version="1.0" encoding="UTF-8"?>
<database name="propel" defaultIdMethod="native" noxsd="true">
<table name="bookmark_items" phpName="Items">
<column name="id" type="integer" required="true" primaryKey="true" autoincrement="true" />
<column name="url" type="varchar" size="255" />
<column name="title" type="varchar" size="255" />
</table>
</database>
Modelの生成。
C:\workspase\bookmark>symfony propel-build-model
データベース接続の設定。
config/databases.yml
all:
propel:
class: sfPropelDatabase
param:
phptype: mysql
host: localhost
database: bookmark
username: youruser
password: yourpasswd
SQL文の作成。
C:\workspase\bookmark>symfony propel-build-sql
data/sql/schema.sqlというsqlファイルが作成される。
DBの作成。
C:\workspase\bookmark>mysql -u youruser -p mysql> CREATE DATABASE bookmark DEFAULT CHARACTER SET utf8; mysql> \q C:\workspase\bookmark>mysql -u youruser -p bookmark < data\sql\schema.sql
CRUDのscaffold(足場)の作成。
C:\workspase\bookmark>symfony propel-generate-crud frontend items Items
キャッシュの削除。
C:\workspace\bookmark>symfony cc frontend config
「http://bookmark/items」にアクセス。
とても10分ではできないけど、PHPスクリプト書かずにそれっぽいの完成。