1.1.0 RC1での開発メモです。**(編集中)**
[[symfony/基本コマンド]]
[[symfony/モジュール]]
[[symfony/テンプレート]]
[[symfony/テンプレート/パーシャル]]
[[symfony/フォーム]]
[[symfony/サブドメイン]]
[[symfony/セッション保存]]
[[symfony/SSL]]
[[symfony/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
ServerName S0080
DocumentRoot "C:/CF/projects/myproject/web"
DirectoryIndex index.php
Alias /sf C:/CF/PHP/PEAR/data/symfony/web/sf
AllowOverride All
Allow from All
AllowOverride All
Allow from All
===== 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を追加します。
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"
AllowOverride All
!!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/
symfony init-project
!アプリケーションの生成
cd /home/sfprojects/
symfony init-app
!モジュールの生成
cd /home/sfprojects/
symfony init-module
!データモデル(schema.xmlから)のセットアップ
cd /home/sfprojects/
symfony propel-build-model
!データモデルからSQLの出力
cd /home/sfprojects/
symfony propel-build-sql
!CRUD雛形の生成
symfony propel-generate-crud
!!テストデータ
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');