1.1.0 RC1での開発メモです。(編集中)
リンク
PHP5用フレームワークsymfony(本家) http://www.symfony-project.org/
PHP5用フレームワークsymfonyの日本語情報サイト http://symfony.jp/
最新の日本語翻訳ドキュメント http://code.google.com/p/symfony-doc-ja/
symfony1.1へ移行します。
symfonyインストール
インストールおよび初期設定に関するメモです。
PEARのプロキシの設定
PEARを利用してインストールする場合でプロキシサーバを経由する必要があるときは、事前の設定が必要です。
$ pear config-set http_proxy YOUR_PROXY:YOUR_PORT config-set succeeded
- 設定後はchannelのdiscoveryがクリアされるので再実行すること。
- channnel-discoverした際に、以下のような反応があればOK
$ pear channel-discover pear.symfony-project.com
WEBサーバの設定 VirtualHost(Apache2.x)
Apache2.x系はhttpd-vhosts.confにバーチャルホストを書くのが簡単だそうです。
ユーザーツリーとは別に、デバッグ用モジュール/symfony/web/sfへのエイリアスが必要です(デバッグ用各種ツールなどで使用されます)。
Listen 888 <VirtualHost *:888> ServerName S0080 DocumentRoot "C:/CF/projects/myproject/web" DirectoryIndex index.php Alias /sf C:/CF/PHP/PEAR/data/symfony/web/sf <Directory "C:/CF/PHP/PEAR/data/symfony/web/sf"> AllowOverride All Allow from All </Directory> <Directory "C:/CF/projects/myproject/web"> AllowOverride All Allow from All </Directory> </VirtualHost>
Windows上でsymfony
http://www.symfony-project.com/askeet/ja/1が参考になります。 symfonyを動作させるにはPEARのVersionが1.4.0以上 PHPのVersionが5.1.0
パスを通していないのでc:\Program Files\xampp\phpに移動してpear versionを実行します c:\Program Files\xampp\php>pear version PEAR Version: 1.4.11 PHP Version: 5.2.1 Zend Engine Version: 2.2.0
大丈夫そうです。 次に pear channel-discover pear.symfony-project.com でパッケージを落とします。
pear channel-discover pear.symfony-project.com pear install symfony/symfonyでインストールします。 symfony -V でバージョンを確認できたら成功です。 C:\Program Files\xampp\php\PEAR\symfony にファイルが展開されているはずです。 続いてプロジェクトのセットアップです。symfonyのお勉強プロジェクトであるaskeetですすめてみます。以下のコマンドでセットアップできるようです。
続いてWebサーバの設定をします。 C:\Program Files\xampp\apache\conf\extra\httpd-vhosts.conf に以下のVirtualHostを追加します。 <VirtualHost *:80> ServerName askeet DocumentRoot “H:\web\makotokw.com\labs\sandbox\askeet\web” DirectoryIndex index.php Alias /sf “C:\Program Files\xampp\php\pear\data\symfony\web\sf”
<Directory "H:\web\makotokw.com\labs\sandbox\askeet\web"> AllowOverride All </Directory>
</VirtualHost>
!!symfony1.1へアップグレード pear install symfony/symfony-1.1.0RC1
!!プラグイン http://develop.ddo.jp/symfony/book/jp/1.0/plugin.html http://trac.symfony-project.com/wiki/SymfonyPlugins !ショッピングカートプラグイン http://trac.symfony-project.com/wiki/sfShoppingCartPlugin http://develop.ddo.jp/symfony/book/jp/1.0/shopping_cart.html *必要に応じてPROXY設定をする。 [#ge98d64d] *プロジェクトに移動 [#q8265f90] cd C:\CF\projects\xfstore symfony plugin-install http://plugins.symfony-project.com/sfShoppingCartPlugin symfony cc
symfony plugin-install local symfony/sfShoppingCartPlugin だとうまくいかなかった。 *1.0用のはどうやってもインストールできないのでtgzを手動で展開配置。(とりあえずそれだけで動くみたい) [#cca5f8fc] plugins/sfShoppingCart
!SSLプラグイン http://trac.symfony-project.com/wiki/sfSslRequirementPlugin
- 1.1対応版があるので以下でインストール可能(これも2.0をpluginに展開)
symfony plugin-install sfSslRequirementPlugin
!PayPalプラグイン *PayPalプラグインはPHP5で簡単にSOAPが使えるので廃止 [#v1add169] http://trac.symfony-project.com/wiki/sfPaypalDirectPlugin *必要に応じてPROXY設定をする。 [#z3b5c735] *プロジェクトに移動 [#ee87ca41] cd C:\CF\projects\xfstore symfony plugin-install http://plugins.symfony-project.com/sfPaypalDirectPlugin symfony cc
!!schema.xmlの関するトラブル *同じ位置に、「ほげほげschema.xml」という名前が存在すると、そちらも一緒にしょりしようとして、「Databaseのpropel定義がないよ」というエラーになってしまう。 [#u68c198a] →schema.xmlは1つだけにしておく(拡張子をorg等にすればOK)
!!DB日本語の文字化け(テストデータ含む) *database.ymlにencoding行を追加。 [#af51bde7] all:
propel:
class: sfPropelDatabase
param:
phptype: mysql
host: localhost
database: cfstore
username: cfmanager
password: cfmanager
encoding: utf8
!1.1 *DBの文字化けはdatabases.ymlにて設定。 [#y7ab69e4] all:
propel:
class: sfPropelDatabase
param:
dsn: 'mysql://cfmanager:cfmanager@localhost/cfstore'
propel: null
encoding: utf8
*[ISO-639|http://ja.wikipedia.org/wiki/ISO_639]と、[ISO-3166|http://ja.wikipedia.org/wiki/ISO_3166-1]の組み合わせ [#ob420c75] frontend/config/settings.yml all:
.settings: default_culture: ja_JP
!!!自動生成 !データベース設定 *コマンドで一括設定が可能。(databases.ymlなどが書き換わるので注意) [#la90b2d1] php symfony configure:database mysql://root:pa$$word@localhost/symfony_project *propel.iniに、mySQLのinnoDBの設定がある [#q398fa77] ;propel.mysql.tableType = InnoDB !プロジェクトの生成 cd /home/sfprojects/<PROJECT_HOME> symfony init-project <PROJECT_NAME> !アプリケーションの生成 cd /home/sfprojects/<PROJECT_HOME> symfony init-app <APP_NAME> !モジュールの生成 cd /home/sfprojects/<PROJECT_HOME> symfony init-module <APP_NAME> <MODULE_NAME> !データモデル(schema.xmlから)のセットアップ cd /home/sfprojects/<PROJECT_HOME> symfony propel-build-model !データモデルからSQLの出力 cd /home/sfprojects/<PROJECT_HOME> symfony propel-build-sql !CRUD雛形の生成 symfony propel-generate-crud <APP_NAME> <MODULE_NAME> <PROPEL_NAME>
!!テストデータ cd /home/sfprojects/askeet/batch php load_data.php
!!!バグとかドキュメントの間違いとか !module.ymlからの値の読み込み module.ymlから、設定した値を持ってくるときは、ドキュメントだと以下のように書いてある。 「poll」module以下のconfig/module.ymlに下記のように値を設定する。 all:
.settings: max_votes: 150
$max_votes_parameter = sfConfig::get('mod_max_votes'); 正解は「mod_」+「モジュール名_」+「変数名」でした。 $max_votes_parameter = sfConfig::get('mod_poll_max_votes'); アプリケーションレベルのConfigのときは以下のとおり。 echo sfConfig::get('app_nanika');