lt;?php symfonyとフランチョスのスレ ?gt;
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/18(土) 08:05:59ID:???http://www.symfony-project.com/
■askeet
http://www.symfony-project.com/askeet
■The symfony book
http://www.symfony-project.com/content/documentationHome.html
■symfonyで作られたサイトはこちら
http://www.symfony-project.com/trac/wiki/ApplicationsDevelopedWithSymfony#Japan
ver.1まで間近 がんばれフランチョス & ファビエンヌ フュージョンで
開発パワー2倍だ!
0357nobodyさん
2007/02/13(火) 19:39:05ID:???"The Definitive Guide to symfony"に書いてある。
0358nobodyさん
2007/02/13(火) 20:24:43ID:GvUKv70m簡単な事ならそこまでしたくないのだけど
大変なHACKになったりする?
0359356
2007/02/13(火) 21:32:46ID:GvUKv70m実行時に動的に決定したDSNが使いたい、という事なのだけど
DSNなんていうDBMS臭を漂わせたものが果たして表層部にあるのかどうか。
0360nobodyさん
2007/02/13(火) 21:35:58ID:???databases.ymlに複数の接続情報を書き、
$conn1 = Propel::getConnection("conn1");
$conn2 = Propel::getConnection("conn2");
こんな感じで各DBに接続してるハンドラを取得出来るところまではわかるかな?
参考:ttp://sakoda.office-lens.net/?p=28
後はそれを、
$c = new Criteria();
****Peer::doSelect($c, $conn1);
とかして、****Peerクラスの第二引数にハンドラを渡してあげればモデルを作らなくていいような気がする。
0361356
2007/02/13(火) 21:48:05ID:GvUKv70mレスありがとう。
でもそれだとDBが増えるたびにdatabases.ymlに記述しなきゃいけない。
DB数が増えればdatabases.ymlのサイズがまずい事になる。
イメージとしては、databases.ymlからDSN情報を読み取っている部分に割り込みたい。
これが出来れば、URL引数等を見て動的にアクセス先DBを決定する事が出来る。
(FW無しのシステムでは同様のものを組んだ経験がある)
0362nobodyさん
2007/02/13(火) 22:28:14ID:???myPropelDatabase.class.phpとでもするのでokでは?
databases.ymlのサイズがまずいことってのがよくわからんけど..
URLで動的に設定を変えるならそのためのフィルター作るかな.自分なら.
0363nobodyさん
2007/02/13(火) 23:20:46ID:???最近はORM使わずに配列にしてるわ。
0364360
2007/02/13(火) 23:23:03ID:???ふむふむ。
DSNの文字列は定義出来る状態ではなく、そのものズバリを動的に生成する必要があるわけだね。
そしたら、
****Peer::doSelect(new Criteria(), Creole::getConnection("mysql://hoge@localhost/hogehoge"));
こんな感じでどうかな?
URLからDSN文字列を自動生成させるなら、
>>362 さんも言ってる通り、Filter使って動的に生成してそれを使い回せばOKじゃないかな。
0365nobodyさん
2007/02/14(水) 08:40:46ID:???http://journal.mycom.co.jp/articles/2007/02/13/symfony/
もう少し人増えてくれるかな?w
0366nobodyさん
2007/02/15(木) 10:09:05ID:???そんな方法もあったんですね。元の質問者じゃないけど参考になります。
>>362
以前、フィルタを使う方法使ってたけどなんとなく気持ち悪かったので、
今では autoload.yml の Propel の部分を上書きしてオリジナルの sfPropelAutoload.php を走らせる方法を使ってたりします。
参考までに。
0367nobodyさん
2007/02/15(木) 21:07:34ID:CtXa1NT7増えないよたぶん
0368nobodyさん
2007/02/15(木) 21:54:16ID:???開発してて思うけど、windowsのアパッチの方が遅いな。
やっぱり、鯖はlinuxだわ。
0369nobodyさん
2007/02/15(木) 22:40:23ID:???で下記のエラーがでます。
既存のデータが残ったまま行うとエラーになる様で、
新しいテーブルへのデータ挿入は可能です。
何か方法がありますでしょうか。
Unable to perform DELETE ALL operation. [wrapped: Could not execute update [Na
tive Error: Cannot delete or update a parent row: a foreign key constraint fails
0370nobodyさん
2007/02/16(金) 02:05:40ID:???の初期状態を変えたいのですが、
スケルトンのようなファイルはどこにあるのでしょうか?
0371nobodyさん
2007/02/16(金) 09:40:39ID:???制約違反だから、データ削除の順番に注意が必要
/fixtures/000_table1.yml
/fixtures/100_table2.yml
/fixtures/200_table3.yml
のように違反が起こらない(削除ができる順序)でテーブル毎に作成すればOK
>>370
$sf_symfony_data_dir/data/symfony/generator/sfPropelCrud/default/skeleton/かな
0372nobodyさん
2007/02/17(土) 05:24:27ID:???0374nobodyさん
2007/02/20(火) 01:34:44ID:???0375nobodyさん
2007/02/20(火) 09:50:00ID:???DL失敗してるっぽいからアクセス殺到中なのかね?
0376nobodyさん
2007/02/20(火) 09:56:19ID:???PEARのupgradeの意味あるんかいな。。
PEARのバージョンは?
あと、自分も一時期よく失敗してたけどRC1あたりから失敗することが無くなった気がする。
0378nobodyさん
2007/02/21(水) 10:57:30ID:???PEAR 1.4.9でupgrade失敗、
バージョンが悪いのかと仕方なく1.5にするもupgrade失敗
だったお
0379nobodyさん
2007/02/22(木) 01:58:28ID:???システムディレクトリに残ってるゴミは消したか?
pear.iniだとかそのへん。
まぁ俺はPEAR使ってないから関係ないが。
0380nobodyさん
2007/02/22(木) 10:26:57ID:???スニペットに書いてたAJAXなやり方だと負荷かかりすぎるわ。。
QuickForm風なヘルパーでも作るしかないかな。。
0381nobodyさん
2007/02/22(木) 23:55:16ID:???propelで作ったメソッドに
$a = AAAAPeer::doSelectJoinBBBB($c);
と
$b = AAAAPeer::doSelect($c);
があるのですが、
$b->getBBBB();
でBBBBのオブジェクトが取り出せます。
doSelectJoinBBBBはどんなときに使うと良いのでしょうか。
0382nobodyさん
2007/02/23(金) 01:30:16ID:???symfonyに期待するのではなく、既存ライブラリを組み込んでみた方が吉かと
ttp://blog.masuidrive.jp/articles/2006/01/05/validation
>>381
18章にある。恐らく欲しい答えが。
So if you know that you will need related objects, call a doSelectJoinXXX() method to reduce the number of database queries--and improve the page performance.
つまりは、外部キーでリレーションしているオブジェクトをとってくるなら
doSelectJoinXXX()関数のほうが1度のクエリで取得できるので
パフォーマンスがちょびっと良いってことらしい。
0383nobodyさん
2007/02/23(金) 07:14:50ID:???ありがとう!
$b->getBBBB(); de またDBにアクセスするんですね。
doSelectJoinAll()だと、けっこうメモリ消費しそう・・・
0384nobodyさん
2007/02/23(金) 18:29:27ID:???レスサンクス!
そのvalidatorは見つけてたんだけど、
どうやってもprototypeを先に読み込んでくれないので腹立ってやめたw
日付フォームがあるせいだとは思うんだが。。
0387nobodyさん
2007/02/24(土) 22:47:39ID:???アクション内だと
$this->getResponse()->addJavaScript('prototype', 'first');
view.ymlでも指定できる
0388nobodyさん
2007/02/26(月) 08:39:23ID:???後発の方もいるかもしれないので
----
// In the view.yml
indexSuccess:
stylesheets: [special: { position: first }]
[php]
// In the action
$this->getResponse()->addStylesheet('special', 'first');
0389nobodyさん
2007/02/26(月) 09:52:17ID:???0390nobodyさん
2007/02/26(月) 15:00:43ID:+JAM5eUfforwardメソッドを使う時に、パラメータを指定したい場合はどう書けば良いのでしょうか?
0391nobodyさん
2007/02/26(月) 16:45:15ID:???forwardの場合は、redirectと違ってそのまま使えないか?
・・・と、ここまで書いてふと思ったんだが、
// 一つ前のactionを取得する
$stack = $this->getContext()->getActionStack();
$size = $stack->getSize();
$action = $stack->getEntry($size - 2)->getActionInstance();
// 一つ前のmessageを拾う
$this->message = $action->message;
↑こんな感じの事をしたいのか?
0392nobodyさん
2007/02/26(月) 17:34:38ID:???例えば
$this->forward('userinfo','edit');
等でさらにユーザidを指定したい場合にどうすれば良いのかなと。
0393nobodyさん
2007/02/26(月) 17:38:27ID:+JAM5eUfvalidator:
fields:
の設定はフォームタグのアクション属性に設定したアクションについて設定して、
fillin:
の設定はフォームを出力するアクションについて設定すれば良いのですよね?
0394nobodyさん
2007/02/26(月) 19:39:24ID:???どうやって取り出したら良いの?
0395nobodyさん
2007/02/26(月) 19:40:56ID:???$this->getRequest()->getParameterHolder()->set('id', $id);
こんな感じでリクエストにセットすれば?
0396nobodyさん
2007/02/26(月) 20:01:12ID:???>>395氏の言ってる方法が一番楽そうだと思う。
が、$this->user_idとしておいて>>391氏の方法を使えば、$action->user_idで取り出せるし、
自分だったら、forwardはやめて$this->redirect('userinfo/edit?user_id='. $user_id);
とする。
(redirectだと、渡したパラメータのみが引き継がれる事に注意。)
>>394
今、環境が無いのでおぼろげな記憶を頼りに書いてるんで間違ってたら申し訳ないが、
doSelectRS()って、result idが返るだけじゃなかったっけ?
doSelect()にしておくか、hydrate()する必要あるんじゃない?
0397392
2007/02/26(月) 21:06:21ID:???レスありがとうございます。
その方法でやってみます。
redirectについてですが、
フォームのバリデーション後のrepopulationとしてのforwardですので
redirectだとエラーメッセージが出せない問題があります。
(それもリクエストにセットすれば良いのでしょうが、forwardだとデフォルトで出せます)
0398nobodyさん
2007/02/27(火) 08:36:20ID:???input_in_place_editor_tagをつかってます。
submit後
<p id="???"> aaa </p>これが、
<p class="" style="background-color: transparent; background-image: none; display: none;" title="Click to edit" id="???"><p id="???"> bbb </p></p>
上記のように<p>タグが入れ子になってしまいます。
分かる方見えませんでしょうか。
0399nobodyさん
2007/02/27(火) 19:35:26ID:???するのですが、何か解決方法はありませんか?
0400nobodyさん
2007/02/27(火) 20:08:56ID:???0401399
2007/02/27(火) 20:24:12ID:???とりあえず、わかっている事は・・・
sfMail は phpmailer をラップしている。
setCharset で文字コードを指定できる。
PC(OE),docomo,au では文字化けしない。
メールのソースを見ると本文がエンコードされていない?
って感じです。
softbankではこうするみたいなtipsって誰かしらないですか?
0402nobodyさん
2007/02/28(水) 20:10:52ID:zzIvX9Qb戻って来てほしい場合に使うべき方法って何かありますか?
0403nobodyさん
2007/02/28(水) 21:26:04ID:???JavascriptHelperに InPlaceCollectionEditor ってないよねぇ
0404nobodyさん
2007/02/28(水) 22:27:39ID:???>>402
forwardのかわりにgetPresentationForでできる
ttp://develop.ddo.jp/new-tech/php/framework/symfony/memo/action/
の「描画処理させずに描画結果を変数で取得したい」参照
>>403
input_in_place_editor_tagがある
ttp://symfony.jp/index.php?Ajax
さんぷる
ttp://tool-man.org/examples/edit-in-place.html
0405nobodyさん
2007/02/28(水) 22:37:24ID:???質問の答えになってないな。スマソ。
0406nobodyさん
2007/02/28(水) 22:54:52ID:???なんでInPlaceCollectionEditor ないんだろ
0407nobodyさん
2007/03/04(日) 00:37:01ID:???何度アップグレードしようとしても
下記のようなエラーが表示されアップグレード出来んとです。
ERROR: pear.symfony-project.com/symfony not installed
どうすればアップグレード出来るようになるかわかる方いらっしゃいましたら
やり方をお教え頂きたいとです。
0409nobodyさん
2007/03/04(日) 02:21:35ID:???symfonyでiso-2022-jpのメールを送るのはどうすれば良いでしょうか。
$var = $this->getPresentationFor('mail','send');
これでやってみましたが、全文が取得されてしまい
ヘッダ部とメール本文が分けれません。
0410nobodyさん
2007/03/04(日) 05:41:03ID:???わざわざ買った奴オワタ
0413nobodyさん
2007/03/04(日) 15:41:09ID:???フランチョス の寄付だろ?
0414nobodyさん
2007/03/04(日) 15:43:02ID:???特に英文読むのは疲れるから。
0415nobodyさん
2007/03/04(日) 16:07:42ID:???英文はページ翻訳できる分htmlの方がいい
0416nobodyさん
2007/03/04(日) 17:31:16ID:G5zu5HC1を参考にsymfonyを勉強しているんですが、symfony propel-build-schemaの所で
[propel-creole-transform] There was an error building XML from metadata: Could not connect [User Info: host=localhost dbname=\'codezine\' user=\'postgres\']
と言ったエラーが出ます。
databases.ymlのphptype: をpgsql
propel.iniを下記に変更しています。
propel.database = pgsql
propel.database.createUrl = pgsql://localhost/
propel.database.url = pgsql://postgres:@localhost/codezine
環境はwinXP Apache2.2 postgreSQL8.1です。
どこがおかしいのでしょうか。。
どうかご教授のよろしくお願い致します。
0417nobodyさん
2007/03/04(日) 17:51:43ID:???0418409
2007/03/04(日) 20:20:08ID:???iso-2022-jpでメールを送信することがどーしても出来ません。
PHPMailer の CreateBody()メソッドでメールのbody部を処理している
ようなのですが、ここでmb_convert_encodingをしようと思います。
このような場合はオーバーライドすればいいのでしょうか。
エラーメッセージにcodezineという名のデータベースが存在しない、と表示されているわけだけど。
何らかの環境からそのDBへの接続は成功してる?
0420nobodyさん
2007/03/04(日) 20:49:49ID:???0421nobodyさん
2007/03/04(日) 23:26:09ID:???0422nobodyさん
2007/03/04(日) 23:34:43ID:???$sf_last_module/$sf_last_action消えてね?
form書く時面倒くさくなくて良かったのに。
0423nobodyさん
2007/03/04(日) 23:43:01ID:???0424nobodyさん
2007/03/04(日) 23:53:28ID:???取得はできるが…面倒くせえ…why…
0425407
2007/03/05(月) 00:00:12ID:???pear upgrade symfony/symfony-beta
とやっても
ERROR: pear.symfony-project.com/symfony not installed
と表示されるとです。
0426nobodyさん
2007/03/05(月) 00:07:33ID:???ディフィニティブガイドを
地道に訳してくれてる人がいるな
0427nobodyさん
2007/03/05(月) 01:03:36ID:???だれも無反応なので反応してみる
$this->getPresentationFor('mail','simpleSend','myMail');
のようにsfMailの代わりのクラスを指定できることはご存知?
>>426
ttp://d.hatena.ne.jp/courant/20070302/1172836123
6月ごろには全部みれるかもよ
0428nobodyさん
2007/03/05(月) 02:31:26ID:???ZFの影響も見られるね
actionのregisterValidator廃止して
代わりにvalidateメソッド実装させたり。
mojaviの血が薄くなっていく…
0430nobodyさん
2007/03/05(月) 17:09:07ID:???アクション名.ymlを作って
そこに
fillin:
enabled:true
って書いたらフォームに値をセットしてくれるんですよね?
書いてみても思ったように動作しないのですが何か他に作業が要りますか?
アクションクラスやテンプレートファイルは触る必要あります?
0431nobodyさん
2007/03/05(月) 19:08:11ID:???enabled: on
param:
name: フォーム名称
0432nobodyさん
2007/03/05(月) 19:16:01ID:???このページによると
enabled: true
と書かれていますが、確かにonと書かれている記事もWEB上で見つかります。
どちらが正しいのでしょう?
name値は、ページにフォームが一つしかない場合省略出来ると書かれているので
書いていません。
ちなみに、書くとすればformタグのnameですよね?
0433nobodyさん
2007/03/05(月) 19:18:51ID:???IDEの補完機能使えって意味?
ZS使ってるから自動補完は効くんだけど、
それでも面倒は面倒。
Viewを変更できない(sfPHPViewで決め打ちされてる)から
ヘルパで解決しようと思ってるよ
0435nobodyさん
2007/03/05(月) 22:51:36ID:???grouptableテーブル(m:nテーブル)と
groupinfoテーブル(所属グループ)があって、
複数のユーザが一つのグループに、
または一人のユーザが複数のグループに属す場合がある
というようなDB設計になっているのだけど、
schema.ymlのgrouptableのとこにfkについて書いてみたら
doSelectJoinAll()がgrouptableクラスにしか生成されず、
それを使ってみたらgrouptableからuserinfoを辿って
userinfoからまたgrouptableを辿って、RECURSIONだと言うエラーが出て
壊れ気味の結果セットが返ってきます。
どこが間違っているのでしょうか?
何か参考になるページがあれば教えて下さい。
0436nobodyさん
2007/03/06(火) 00:12:35ID:???yamlだと動的に出来なかったけど
callbackバリデータも整備されたし。
( ^ー゚)♭fabien GJ!!
0439nobodyさん
2007/03/06(火) 00:30:41ID:???逆に柔軟すぎて怖い気もしないでもないが…
0440nobodyさん
2007/03/06(火) 01:16:04ID:???symfony使おうと思ったら
PHPをソースから入れるの前提ですか
0441nobodyさん
2007/03/06(火) 01:18:35ID:???そんなことはない。
rpmでOK。
それより今日のカンファレンスは行くのか?
巴里のどこだ?
0442nobodyさん
2007/03/06(火) 01:30:33ID:???0444nobodyさん
2007/03/06(火) 02:04:29ID:???yum で普通にゲットできるでしょ。
0445nobodyさん
2007/03/06(火) 02:19:05ID:???escaping_strategy と escaping_method
って設定してる?
これってすげー重い気がするけど、どうですか。
0446nobodyさん
2007/03/06(火) 02:45:15ID:???0449nobodyさん
2007/03/06(火) 06:18:28ID:???In the production environment, the configuration is cached, so the configuration files are parsed (and executed) only once after the cache is cleared.
って言ってるから完全に動的ではないんじゃ?
設定ファイル中の定数的な値を嵌め込んだりはできるけど
0450nobodyさん
2007/03/06(火) 06:34:36ID:???プレビューリリースで不満だったところが全部直ってる感じ。
素晴らしい。
0451nobodyさん
2007/03/06(火) 17:57:11ID:???0452nobodyさん
2007/03/06(火) 18:09:52ID:???ものすごくいらない。
あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
クラスは共通、オブジェクトに名前つけて区別すれば良い。
コードを自動生成するとはいっても滅茶苦茶質の悪いものを大量に吐いてるだけな印象。
手で組むとしたらありえないくらい冗長なコードになってる。
なんで世界的に勢いのあるFWがこんなレベルなんだ。
0453nobodyさん
2007/03/06(火) 19:23:13ID:???Propelいやなら、Doctrineでも使ってみたら
0454nobodyさん
2007/03/06(火) 19:30:08ID:???>あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
>クラスは共通、オブジェクトに名前つけて区別すれば良い。
これに関しては同意しかねる、O/Rマッパすらないんじゃ話にならねえ
が、propelがイケてないのは同意
railsのactiverecordを真似てphpで実装しようとすると
どうしても言語実装のせいで限界が出てくるので
モデルクラスを先に全部生成しちゃってお茶を濁してる感じ
実装上しょうがないのはわかるがあまり好きじゃない
0455452
2007/03/06(火) 19:45:19ID:???俺が言ってる設計は、例えば
$userinfos=sf_db::getTable("userinfo");
$articles=sf_db::getTable("article");
というようなもの。
コード書くときはいつもこういう設計をしてるし実際うまくいってると思う。
0456nobodyさん
2007/03/06(火) 20:00:36ID:???frontendで見たときにfilterのとこちゃんと見てみて。
あと、htmlのキャッシュどうなってる?
■ このスレッドは過去ログ倉庫に格納されています