1.1.0 RC1での開発メモです。(編集中)

基本コマンド

モジュール

テンプレート

パーシャル

フォーム

サブドメイン

セッション保存

SSL

XREAへインストール

リンク

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');


Personal Tools