トップページ⇒php
1001コメント266KB

lt;?php symfonyとフランチョスのスレ ?gt;

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2006/11/18(土) 08:05:59ID:???
■symfony
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倍だ!


0412nobodyさん2007/03/04(日) 14:27:42ID:???
>>411
実際そうでもなけどね
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
http://codezine.jp/a/article/aid/837.aspx?p=2
を参考に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:???
フランチョスはフラ公のくせにアメ語で本書けてすげーな
04184092007/03/04(日) 20:20:08ID:???

iso-2022-jpでメールを送信することがどーしても出来ません。

PHPMailer の CreateBody()メソッドでメールのbody部を処理している
ようなのですが、ここでmb_convert_encodingをしようと思います。

このような場合はオーバーライドすればいいのでしょうか。

0419 ◆AngelH/kMI 2007/03/04(日) 20:44:55ID:???
>>416
エラーメッセージにcodezineという名のデータベースが存在しない、と表示されているわけだけど。
何らかの環境からそのDBへの接続は成功してる?
0420nobodyさん2007/03/04(日) 20:49:49ID:???
schema.xmlがあるんじゃないか?
0421nobodyさん2007/03/04(日) 23:26:09ID:???
ajaxからポストされるデータをvaildateしてる?
0422nobodyさん2007/03/04(日) 23:34:43ID:???
1.0になっていつの間にか
$sf_last_module/$sf_last_action消えてね?
form書く時面倒くさくなくて良かったのに。
0423nobodyさん2007/03/04(日) 23:43:01ID:???
消えてる…完全に…w・h・y・?
0424nobodyさん2007/03/04(日) 23:53:28ID:???
$sf_context->getActionStack()->getLastEntry()->getModuleName()などで
取得はできるが…面倒くせえ…why…
04254072007/03/05(月) 00:00:12ID:???
>>408
pear upgrade symfony/symfony-beta
とやっても
ERROR: pear.symfony-project.com/symfony not installed
と表示されるとです。
0426nobodyさん2007/03/05(月) 00:07:33ID:???
http://www.symfony-project.com/trac/wiki/Documentation/ja_JP

ディフィニティブガイドを
地道に訳してくれてる人がいるな
0427nobodyさん2007/03/05(月) 01:03:36ID:???
>>409
だれも無反応なので反応してみる
$this->getPresentationFor('mail','simpleSend','myMail');
のようにsfMailの代わりのクラスを指定できることはご存知?

>>426
ttp://d.hatena.ne.jp/courant/20070302/1172836123
6月ごろには全部みれるかもよ
0428nobodyさん2007/03/05(月) 02:31:26ID:???
0.6.3以来久しぶりに見るけど
ZFの影響も見られるね
actionのregisterValidator廃止して
代わりにvalidateメソッド実装させたり。
mojaviの血が薄くなっていく…
0429nobodyさん2007/03/05(月) 08:33:59ID:???
>>424
PHPIDE
0430nobodyさん2007/03/05(月) 17:09:07ID:???
validatorディレクトリに
アクション名.ymlを作って
そこに
fillin:
enabled:true
って書いたらフォームに値をセットしてくれるんですよね?
書いてみても思ったように動作しないのですが何か他に作業が要りますか?
アクションクラスやテンプレートファイルは触る必要あります?
0431nobodyさん2007/03/05(月) 19:08:11ID:???
fillin:
  enabled:  on
  param:
    name:  フォーム名称
0432nobodyさん2007/03/05(月) 19:16:01ID:???
http://www.symfony-project.com/book/trunk/10-Forms
このページによると
enabled: true
と書かれていますが、確かにonと書かれている記事もWEB上で見つかります。
どちらが正しいのでしょう?

name値は、ページにフォームが一つしかない場合省略出来ると書かれているので
書いていません。
ちなみに、書くとすればformタグのnameですよね?
0433nobodyさん2007/03/05(月) 19:18:51ID:???
>>429
IDEの補完機能使えって意味?
ZS使ってるから自動補完は効くんだけど、
それでも面倒は面倒。
Viewを変更できない(sfPHPViewで決め打ちされてる)から
ヘルパで解決しようと思ってるよ
0434nobodyさん2007/03/05(月) 21:09:04ID:???
>>432
'true', 'on', '+', 'yes', 'y' ==> true
ってことで両方とも正解
0435nobodyさん2007/03/05(月) 22:51:36ID:???
userinfoテーブルと
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!!
0437nobodyさん2007/03/06(火) 00:27:19ID:???
>>436
>yamlだと動的に出来なかったけど
できるよ。YAML内にPHP埋め込める
0438nobodyさん2007/03/06(火) 00:30:25ID:???
>>433
んなわけねーだろw
0439nobodyさん2007/03/06(火) 00:30:41ID:???
まじ?そんなに柔軟だったのか
逆に柔軟すぎて怖い気もしないでもないが…
0440nobodyさん2007/03/06(火) 01:16:04ID:???
DOM拡張モジュール入ってないorz
symfony使おうと思ったら
PHPをソースから入れるの前提ですか
0441nobodyさん2007/03/06(火) 01:18:35ID:???

そんなことはない。
rpmでOK。

それより今日のカンファレンスは行くのか?
巴里のどこだ?
0442nobodyさん2007/03/06(火) 01:30:33ID:???
パリのロンドンじゃね?
0443nobodyさん2007/03/06(火) 01:39:18ID:???
>>441
RPMのconfigureを後から変えられるの?
0444nobodyさん2007/03/06(火) 02:04:29ID:???
linuxでphp5使ってるでしょ?

yum で普通にゲットできるでしょ。
0445nobodyさん2007/03/06(火) 02:19:05ID:???
おまいら、
escaping_strategy と escaping_method
って設定してる?
これってすげー重い気がするけど、どうですか。
0446nobodyさん2007/03/06(火) 02:45:15ID:???
yum install php-dom
0447nobodyさん2007/03/06(火) 03:11:59ID:???
>>444,446
激しくthanks!
あやうく色々入れ直すところだった
0448nobodyさん2007/03/06(火) 03:50:43ID:???
>>445
設定してるけど特に遅さは気にならない
大量のオブジェクトをアサインしたら遅くなるのかな
0449nobodyさん2007/03/06(火) 06:18:28ID:???
>>437
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:???
repopulationのfillinが効かないんだけど、つかえてる人いるの?
0452nobodyさん2007/03/06(火) 18:09:52ID:???
criteriaはsqlの隠ぺいのために使ってるんだろうけど、要らないね。
ものすごくいらない。
あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
クラスは共通、オブジェクトに名前つけて区別すれば良い。
コードを自動生成するとはいっても滅茶苦茶質の悪いものを大量に吐いてるだけな印象。
手で組むとしたらありえないくらい冗長なコードになってる。
なんで世界的に勢いのあるFWがこんなレベルなんだ。
0453nobodyさん2007/03/06(火) 19:23:13ID:???
文句はsymfonyじゃなくて、Propelへどうぞ
Propelいやなら、Doctrineでも使ってみたら
0454nobodyさん2007/03/06(火) 19:30:08ID:???
>>452
>あと俺の考えだとモデルクラスがテーブルごとに作られるのもおかしい。
>クラスは共通、オブジェクトに名前つけて区別すれば良い。
これに関しては同意しかねる、O/Rマッパすらないんじゃ話にならねえ

が、propelがイケてないのは同意
railsのactiverecordを真似てphpで実装しようとすると
どうしても言語実装のせいで限界が出てくるので
モデルクラスを先に全部生成しちゃってお茶を濁してる感じ
実装上しょうがないのはわかるがあまり好きじゃない
04554522007/03/06(火) 19:45:19ID:???
>>454
俺が言ってる設計は、例えば
$userinfos=sf_db::getTable("userinfo");
$articles=sf_db::getTable("article");
というようなもの。
コード書くときはいつもこういう設計をしてるし実際うまくいってると思う。
0456nobodyさん2007/03/06(火) 20:00:36ID:???
fillinつかえてない?
frontendで見たときにfilterのとこちゃんと見てみて。

あと、htmlのキャッシュどうなってる?
0457nobodyさん2007/03/06(火) 20:33:43ID:???
symfonyのアクションクラスの中でpearのDB.phpをrequireするとエラー出る?
symfonyのgetConnectionとexecuteQuery使うと
返値の結果セットがfetchRowもってなくて面倒なのでDB.php使いたい。(使うしか方法が分からない)
doSelectの返値はたしかtoArrayメソッドがあるけど、executeQueryの返値にはないとか
非常にめんどいが、こんな仕様にする必要があるのだろうか?
とりあえず俺は検索を実行して配列を得たいのだけど、どうすれば良いんだろう?
本当はdoselectjoinallとかが使えれば良いんだけど変な動作するし
一つjoinするだけならdoselectjoinxxxxでいけるけど二つ以上はダメとかそんな仕様ありえんし。
04584572007/03/06(火) 20:35:25ID:???
配列じゃないからarray_mergeもうまくいかんし
symfonyはjoinに対してどんな手段を提供してるの?
0459nobodyさん2007/03/06(火) 20:36:07ID:???
fillin使えてない人はform名入れるところにform内要素名入れてるんじゃね?
俺はそれでつまった
0460nobodyさん2007/03/06(火) 20:44:01ID:???
DBだけは自前実装してる
「こうしたいんだけどどうするんだろう?」の疑問を調べるのに
時間食いまくりでぶち切れた。
04614572007/03/06(火) 20:49:18ID:???
ああ俺もたった今ぶち切れたところだ
mysqlに直接ログインして手で叩いて複数レコード返るのを確認したSQLが
$con=Propel::getConnection();
$rs=$con->executeQuery($sql);
var_dump($rs);
ってやると1レコードも返ってきてないのはなぜだなぜ挙動が違うんだ
糞仕様のせいでかえれねえええええええええええええええええええええええ
0462nobodyさん2007/03/06(火) 22:18:22ID:???
PDOで実装してくれ。

必ずプリペアドもつけてくれよ。
0463nobodyさん2007/03/06(火) 22:56:21ID:???
>>457
もちつけ。
$rsがNULLってるってこと?
それとも$rsが結果の配列ではないという事なのかな?

俺の環境では$rsにはイテレータが返ってきて、

while($rs->next()){
print $rs->get("COLUMN_NAME");
}

って感じでアクセス出来るけどなぁ。
0464nobodyさん2007/03/07(水) 00:04:54ID:???
漏れも>>407と同じエラー(ERROR: pear.symfony-project.com/symfony not installed)
って出てインスコできないんだけど原因わかる人いたら教えて
ちなみにbetaつけてやってみたけど�_だった orz
0465nobodyさん2007/03/07(水) 00:22:46ID:???
あーやっぱりsfExecutionFilterとかsfValidatorManager書き換えてえ
ハードコーディング癖は直ってねーなfabien
カンファレンスで直訴してくるか
fucking連呼で
0466nobodyさん2007/03/07(水) 01:23:10ID:???
オリジナルヘルパの上に一枚ラップする感じに
myヘルパ書いたら結構いい感じになった。
こういうのは生でするもんじゃねーな
0467nobodyさん2007/03/07(水) 04:35:52ID:???
symfonyはXSS対策のトークン用意してないの?
0468nobodyさん2007/03/07(水) 04:41:57ID:???
なにそれ。
0469nobodyさん2007/03/07(水) 06:05:56ID:???
正しい画面からポストされたかどうかを確かめるワンタイムトークン…
0470nobodyさん2007/03/07(水) 06:11:30ID:???
それってXSS?

XSS対策は escaping_strategy じゃないっすか?
0471nobodyさん2007/03/07(水) 06:16:46ID:???
あ、CSRFか…
0472nobodyさん2007/03/07(水) 06:23:30ID:???
入力画面1→入力画面2→入力画面3→登録
って流れだったら、
画面遷移ごとにバリデーションしておいて、
登録前にもう一回全部をバリデーションするじゃん。
そうなるとvalidate/*.ymlが冗長になるけど
そのあたりどうしてますか?
0473nobodyさん2007/03/07(水) 08:33:59ID:???
> 登録前にもう一回全部をバリデーションするじゃん。
そんなことはない。

バリデーションさせたいときに、各アクションのvalidate/*.ymlを
作ればよい。
0474nobodyさん2007/03/07(水) 09:13:32ID:???
>>467
setFlashで簡単に実装できる
04754572007/03/07(水) 11:48:08ID:???
>>463
$rsはNULLではないが、
$rs->getRow()の結果がNULL
0476nobodyさん2007/03/07(水) 13:51:38ID:???
doSelectJoinAll使ってる人いますか?
0477nobodyさん2007/03/07(水) 14:08:27ID:???
つかってます。
0478nobodyさん2007/03/07(水) 15:22:41ID:???
>>473
入力画面1からURL手打ち等で入力画面3に入られたりしたら
データ揃ってない事態になるでしょ?
そういう時のために最後に一括チェックしませんか?
0479nobodyさん2007/03/07(水) 15:28:19ID:???
そこでflashですよ!
0480nobodyさん2007/03/07(水) 15:35:27ID:???
このスレを見ている人はこんなスレも見ています。(ver 0.20)
昭和51年度生まれの無職スレ Part9 [無職・だめ]
昭和51年度生まれのダメ人間の巣窟スレPart36 [無職・だめ]

前から気になってたが
このスレに昭和51年生まれの駄目人間いるよね。
そんな駄目人間がsymfonyで何をしようとしてるか教えて。
0481nobodyさん2007/03/07(水) 15:44:06ID:???
>>479
遷移ごとにワンタイムトークンチェック?
俺はワンタイムトークンチェックは
決定的な行為の直前=ストレージへのアクセスの直前だけしてるなぁ
戻るボタン使われたりリロードされたりした時に
異常動作になりやすいから。
このへん人によって結構違いそう。
0482nobodyさん2007/03/07(水) 16:18:18ID:???
>>457
つ http://creole.phpdb.org/trac/wiki/Documentation/CreoleGuide#GettingColumnValues
0483nobodyさん2007/03/07(水) 16:46:36ID:???
>>474
1.flashにトークン入れる
2.画面に表示,hiddenにトークンいれる(同時にflashが自動的にクリアされる)
3.POSTされる
4.flashにトークン残ってないから検証できない

ってならない?
0484nobodyさん2007/03/07(水) 17:18:33ID:???
>>478
ごめん、俺はsymfony初心者で今までネイティブ関数でゴリゴリ書いてた
バカだからアドバイスできる立場じゃないんだけど…

1画面移動するごとにDB登録する仕様で作成
→時々、phpmyadmin等で巡回して、変なデータ(最後まで画面遷移して
ないやつ)を見つけたら削除
という方式でやってるよ。
今まで決済絡まないシステムしか作ったこと無いからこの辺結構アバウトかも…
0485nobodyさん2007/03/07(水) 17:27:15ID:???
手動ガベージコレクタンキタコレw
アバウト云々じゃなくて設計の問題かと
0486nobodyさん2007/03/07(水) 17:31:22ID:???
手動GCテラワロス
技術者じゃねえw
0487nobodyさん2007/03/07(水) 17:34:19ID:???
>>483
symfony勉強中でセッション関連まだやってないけど
1.flashにセッション入れる
2.画面表示、またflashにセッション入れる
っていうやり方で出来ない?
0488nobodyさん2007/03/07(水) 17:51:33ID:???
それflashの使い方的にどうなの?
素直にセッションでやりゃいいんじゃないかと
0489nobodyさん2007/03/07(水) 17:56:21ID:???
GCをcronにやらせるとしても
一画面遷移ごとにDB登録はアリなの?
俺はDBは極力いじらせたくないからなるべく少なくする方向でやってるけど
0490nobodyさん2007/03/07(水) 18:02:26ID:???
>>488
たしかに。
0491nobodyさん2007/03/07(水) 18:37:25ID:???
【propel】PHPのORMについて語ろうぜ【peropero】
http://pc11.2ch.net/test/read.cgi/php/1173181854/

O/Rマッパのスレ立てたからよろしく
今interface定義だけでDBがいじれるs2DAOの話題で騒然だから。
propelなんて蹴散らす勢い。
04924872007/03/07(水) 19:02:07ID:???
>>488
確かにわざわざflash使ってなにやってんだろうって気がするけど
普通にセッション使うと、複数人で一つのWEBサイト作ってる時に
セッション配列のキーが別ページで被って気づき難いバグになった事があった。

じゃあ必要無くなった時点でセッション要素をクリアすれば、と思うが
あるページからURL直叩きで他のページに移動した時の
セッションのキー被りは非常に防ぎづらいので、
こういう使い方でもflashは便利だと思う。
0493nobodyさん2007/03/07(水) 19:07:12ID:???
てかセッションに各コンテンツのネームスペースくらい割り当てとけよ
0494nobodyさん2007/03/08(木) 00:06:54ID:???
ブラウザを複数開けていじられる可能性を考えると
DB書きこみ前の一括チェックは欠かせないな。
トークンも画面ごとにネームスペース変えて
上書きが起こらないようにしないといけない。
考えると頭痛くなるが…。
0495nobodyさん2007/03/08(木) 00:13:29ID:???
画面遷移がある限り
セッション変数の中身すら信用できるわけではないってことだよな。
今まで作ったアプリのこと考えると…
\(^o^)/オワタ
0496nobodyさん2007/03/08(木) 00:18:06ID:???
俺も\(^o^)/オワタ
お前も\(^o^)/オワタ
みんな\(^o^)/オワタ
0497nobodyさん2007/03/08(木) 00:19:26ID:???
ピースフレームワークをヒントにしたらいいんかな?
限界状態マシーンとかいう機能を搭載してるらしいが
0498nobodyさん2007/03/08(木) 00:28:10ID:???
つーかsymfonyにセッション変数削除用メソッドなくね?
removeAttributeみたいなのいるだろ
0499nobodyさん2007/03/08(木) 00:31:09ID:???
漏れも気になってた。
ちなみに、nullセットしてるよ
0500nobodyさん2007/03/08(木) 00:33:28ID:???
1.フラッシュにワントークンパスワード入れる、hiddenにも同じ値持たせる
2.次回アクセス時にflashの値とhiddenの値を比較
  また、このアクセス時に前回のフラッシュの値は自動的に消滅

セッションとフラッシュは同じようなものだが
フラッシュは次回アクセス時に消去されることが約束されているセッション

自前でセッションで行うのであればそれでもいいけど
そんなことしなくてもフラッシュ使うといいよ。

というわけで、474は間違い。次回アクセス時にフラッシュは存在する
というわけで、487も間違い。flashにセッションを入れるというのは無意味
0501nobodyさん2007/03/08(木) 00:36:33ID:???
あるんだけどな。。
$this->getUser()->getAttributeHolder()->remove($name, $namespace)
0502nobodyさん2007/03/08(木) 00:39:02ID:???
>>501
WOW! さんくす
さっそくmyUserクラスに追加した
0503nobodyさん2007/03/08(木) 00:53:44ID:???
漏れのsymfonyサイトに静的なhtmlがあるんだけど、
そのhtmlの一部にsymfonyからのデータを参照させたいんだけど、
どうすれば良いでしょうか。
0504nobodyさん2007/03/08(木) 02:30:59ID:???
なかなか難しいことを言ってくるな。
0505nobodyさん2007/03/08(木) 03:48:31ID:???
その静的なhtmlにsymfonyのデータの
誰が見た時のいつの時点の何を表示させるのか
によってちがうだろうな。
0506nobodyさん2007/03/08(木) 03:57:57ID:???
>>504
どこが難しいの?
0507nobodyさん2007/03/08(木) 04:12:01ID:???
symfony内に置く汎用クラスの名前って
大文字ではじめる?小文字ではじめる?
0508nobodyさん2007/03/08(木) 04:18:07ID:???
symfony内ならsfつけて書いてるが、
自分は極力汎用クラスは外に出して、PEARコーディング規約で
書くようにしてる。
0509nobodyさん2007/03/08(木) 07:01:00ID:???
俺は自前クラスはsf付けないな
symfony純正のしるしという認識だ
0510nobodyさん2007/03/08(木) 07:17:04ID:???
その認識はやめたほうがいい。プラグインのクラスにもsfつきまくってるだろ。
別に純正の印ではない
0511nobodyさん2007/03/08(木) 07:19:41ID:???
symfony本家のカンファレンスのページに
ちんぽにーの名で書き込んだ奴
お前らの一人だろw
■ このスレッドは過去ログ倉庫に格納されています