[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 2chのread.cgiへ]
Update time : 11/12 20:33 / Filesize : 217 KB / Number-of Response : 989
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

フランチョスとsymfony



1 名前:nobodyさん mailto:age [2008/01/24(木) 21:26:07 ID:???]

www.symfony-project.org/
コードスニペット
www.symfony-project.org/snippets/tag
プラグイン
trac.symfony-project.com/wiki/SymfonyPlugins

どうぞ つ

206 名前:nobodyさん mailto:age [2008/06/30(月) 08:11:19 ID:???]


祝 1.1




207 名前:nobodyさん mailto:sage [2008/06/30(月) 10:07:04 ID:???]
キタコレ。

208 名前:nobodyさん [2008/06/30(月) 22:14:01 ID:p53V2UEr]
Symfony(で使ってるpropel)って、SQLiteの時にsqlite.soを要求するってことはSQLite2?

SQLiteで作ったファイルを使ってpropel-build-schemaさせようとして半日悩んでしまったが、一行目にハタと気がついてしまった。
自分バカっす……。

209 名前:208 mailto:sage [2008/06/30(月) 22:14:47 ID:???]
っと、脱字。「SQLite3で作ったファイル」ね。

210 名前:nobodyさん [2008/07/01(火) 16:31:40 ID:qqn3liZn]
example.com/hoge?a=b

routing.ymlで
example.com/hoge/a_b
という風にすることってできないですかね?
やるとしたら.htaccessいじるしかないのでしょうか

211 名前:nobodyさん mailto:sage [2008/07/01(火) 21:59:28 ID:???]
>>210
mod_rewriteで変換するのが楽そうやね。
aとbの組み合わせが限られていて少なければ全部書いていけばrouting.ymlでもできるだろうけど。

212 名前:nobodyさん mailto:sage [2008/07/02(水) 09:33:33 ID:???]
>210
yamlに直接PHPを書けるよ。

213 名前:210 [2008/07/02(水) 15:35:36 ID:rbMFbkRb]
>>211
やっぱそっちのほうが楽ですよね
でも、見るファイルがrouting.ymlと.htaccessに散らばるのが嫌なんですよねえ

>>212
ためしに
/:module/a_<?php sfContext::getInstance()->getRequest()->getParameter('a') ?>
っていう感じでやってみたんですが、
Fatal error: Unsupported operand types in C:\PHP\PEAR\symfony\util\Spyc.class.php on line 667
と出てしまいます。
まだsymfonyのことよくわかってないので、
色々試してみます。
ありがとうございました!

214 名前:nobodyさん mailto:sage [2008/07/02(水) 18:34:23 ID:???]
routingにパラメータ取得持ってくるとか…
なんてかわいそうな人



215 名前:210 [2008/07/02(水) 18:46:03 ID:rbMFbkRb]
ほかに取得するものが浮かばなかったので・・・

216 名前:nobodyさん mailto:sage [2008/07/02(水) 20:24:36 ID:???]
ていうかRouting拡張すりゃいいんじゃん

217 名前:nobodyさん mailto:sage [2008/07/02(水) 20:28:44 ID:???]
symfony_data_dir/config/config_handlers.ymlをプロジェクト/configにコピって持ってくる

config/routing.yml
class: CustomRoutingConfigHandler

で、好きにカスタマイズしなよ

218 名前:nobodyさん [2008/07/04(金) 22:35:50 ID:6INfqE2e]
今日デプロイ予定日なんですが、久々にsymfony syncしたら

tkt.s307.xrea.com/x/xqa/2008/06/post-4.html

的な状態でSSHログインができなくなってしまいました。
勿論pakeFunctionの修正は行っているのですが、誰か心当たりの
ある方いませんか?


219 名前:nobodyさん [2008/07/04(金) 23:01:37 ID:6INfqE2e]
む、と言うかレンタルサーバーのSSHが落ちてるかもしれんです。

220 名前:nobodyさん mailto:sage [2008/07/05(土) 01:23:33 ID:???]
ssh落ちるとか怖すぎ

221 名前:nobodyさん mailto:sage [2008/07/05(土) 11:47:42 ID:???]
なんでsymfonyってこんなに落ちぶれてんの?

222 名前:nobodyさん mailto:sage [2008/07/07(月) 16:59:32 ID:???]
>>221
2日も釣られる人が居なくてあまりにもかわいそうだから、釣られてあげるよ

223 名前:nobodyさん mailto:sage [2008/07/07(月) 17:00:39 ID:???]
二日も話題無いなら十分落ちぶれてると思うけどな

224 名前:nobodyさん mailto:sage [2008/07/07(月) 20:06:39 ID:???]
話題がないんじゃない!

ネットに情報があふれかえっているから、
こんなところで話す必要がないのだ!



225 名前:nobodyさん mailto:sage [2008/07/07(月) 23:17:20 ID:???]
二日レスがないくらいで落ちぶれてるなら、この世に落ちぶれてないWebアプリフレームワークは
存在しないな。

毎日2ちゃんねるへ来てしまう重度の人でなければ、なかなかそういう発想はできない。

226 名前:212 mailto:sage [2008/07/12(土) 16:05:19 ID:???]
>>213
俺もチラッと読んだことがあっただけだったので、詳しく書けなかった。

日付が去年の一月なので、今でもこのとおりいくかどうかわからんけど、ここ読んでみて。
blog.symfony.jp/2007/01/09/phpcode_in_yaml/



227 名前:nobodyさん mailto:sage [2008/07/14(月) 01:54:26 ID:???]
symfony1,1試してみているんだけど、
あいかわらず外人の作るフレームワークは確認画面を考慮してないな。
HTMLQuickFormで例えると$form->freeze()的な処理はどうやったらできるんだろう。
これを解決しないと日本じゃつまずくと思う。

228 名前:nobodyさん mailto:sage [2008/07/14(月) 10:24:12 ID:???]
>>227
もう既に何度も話題に上がって解決された話題を、今更穿り返すな。

229 名前:nobodyさん mailto:sage [2008/07/14(月) 11:00:59 ID:???]
>>228

少なくともこのスレと前スレを読み返した範囲では、
どこを探しても1.1のフォームフレームワークで確認画面をどう実現するか、
という話題は見当たらないんだが。
前スレ934はフォームヘルパ使っているからcompat_10モードだよな?

「解決された」と言い切れるほど自信があるならポインタくらい示せよ。

230 名前:nobodyさん mailto:sage [2008/07/14(月) 11:24:38 ID:???]
誘い受けですね、わかります。

231 名前:nobodyさん [2008/07/14(月) 11:32:13 ID:x4hcg1ov]
確認画面なぞ、確認画面Success.php作るってだけの話だろ?
HTMLQuickFormを使いたいってんならその画面でHTMLQuickFormを使えばいいだけだと思うんだが・・・
何が不満なんだい?

232 名前:nobodyさん mailto:sage [2008/07/14(月) 12:00:50 ID:???]
>>229
なんでこのスレなんか見てるの?その前にまず公式のドキュメント見ればわかるだろ…
あんなにでかでか書いてあるのにポインタ示せとか、盲目すぎ

233 名前:nobodyさん mailto:sage [2008/07/14(月) 12:13:15 ID:???]
ゴミクズども口から糞垂れる前に胸に手を当ててバリデーションをしろ

234 名前:nobodyさん mailto:sage [2008/07/14(月) 12:44:18 ID:???]
>>227
今ざっとコードを見てみたんだが freeze() にあたる処理を入れる余地はないなこれ

あるタイプの Widget はそれ本来のタイプの HTML 出力をする機能しかないわけだから
sfForm(を extends したユーザフォームクラス)のレベルで
入力画面用の Widget と確認画面用の Widget を切り替えるような仕組みを作る必要があるのかな……?


いま公式ドキュメント読みつつ脱線して fabien が sfForm の MVC 適合を解説してるブログとか読んでるところだけど
手間を省くためにも >>232 がでかでか書いてある箇所の URL を挙げてくれるとありがたい



235 名前:nobodyさん mailto:sage [2008/07/14(月) 12:51:42 ID:???]
1.1版The Definitive Guide to symfonyの読み込みが足りてないのは素直に認めるとして、
>>231がsfForm使ってないのに適当に答えてるらしいことはよくわかった。

236 名前:nobodyさん [2008/07/14(月) 13:21:01 ID:Bo+zcAFi]
FWって初めて使ったんだが、覚えることが多いな
慣れれば便利そうなんだが
他のFWもこんな感じ?

237 名前:nobodyさん mailto:sage [2008/07/14(月) 13:27:46 ID:???]
>>231がsfForm使ってないのに適当に答えてるらしいことはよくわかった。
それ今のお前まんまじゃんw
もっとよく読め。

238 名前:nobodyさん mailto:sage [2008/07/14(月) 13:32:55 ID:???]
>>234
Thank You Pageにあたる部分にsetFlashを使ったアクションを一枚噛ませれば良い。
そして最後にgetFlashして登録

239 名前:nobodyさん mailto:sage [2008/07/14(月) 14:05:34 ID:???]
>>238
setFlashじゃリロードされた時に消えないか?

240 名前:nobodyさん [2008/07/14(月) 15:43:56 ID:x4hcg1ov]
>>235
もし、HTMLQuickFormを念頭に置いて文句を言ってるんだとしたら、たぶん、こういう事でないかな?
「HTMLQuickFormとsymfonyではパラダイム自体が違う。」

確か、HTMLQuickFormだと
if (なんたら) {
formの処理
} else {
formのフリーズ
}
フォームの出力

という感じのコードになったと思うが、symfonyだと、そもそも分岐自体をFWが受け持ってしまっている。
ので、ワカランと言ってるのではないか?と思う。

>>236
他のFWも覚える事は多いだろうと思う。
というか、FWは、FWだけ覚えればOKっていうもんじゃなくて、あくまでPHP+FWだからな。
PHPがまともに使える(それこそFW使わんでも同じだけの機能を作れる)ような人が、楽できるように出来てるもんなんだ。
今までPHPを勉強してなくてFWから勉強する・・・は、止めた方がいいだろうな。
(もし、そういうつもりで言ったのでなかったとしたらスマン。)

241 名前:nobodyさん mailto:sage [2008/07/14(月) 16:16:59 ID:???]
現場でんなこと言ってられる分けないだろワナビー死ねよかし

242 名前:nobodyさん mailto:sage [2008/07/14(月) 16:33:30 ID:???]
いつ現場って出てきたんだよ(;´Д`)
現場の話なら現場の話って最初から言え、っつーか、後だしで条件出してくるんじゃねぇよ。

243 名前:nobodyさん mailto:sage [2008/07/14(月) 19:25:18 ID:???]
>>239
リロードされて消えるからいいんじゃん。
消えたら登録せずにエラー出せばよい。
リロードでの連投許可するってなら別だけどね。
ぎゃくにquickformだとhiddenだからバリデーション2回走らせたり効率悪すぎるだろ?

244 名前:nobodyさん mailto:sage [2008/07/15(火) 12:18:49 ID:???]
確認画面でリロったら入力値が消えるってどんなクソ仕様だよwww



245 名前:nobodyさん mailto:sage [2008/07/15(火) 12:21:34 ID:???]
流れぶった切って質問
symfony1.1 + compat10

動的に個数が変わる

data[0][aaa]
data[0][bbb]
data[1][aaa]
data[1][bbb]
data[2][aaa]
data[2][bbb]

のような、3次元配列のバリデーションはどうやればいい?
validateXXX()メソッドでゴリゴリやるしかない?


246 名前:nobodyさん mailto:sage [2008/07/15(火) 14:51:17 ID:???]
>>244
お前ばかか?誰が確認画面で消えるなんて言った?

247 名前:nobodyさん mailto:sage [2008/07/15(火) 14:58:39 ID:???]
>>245
sfForm

248 名前:nobodyさん mailto:sage [2008/07/15(火) 22:05:00 ID:???]
sfFormってsymfonyのオリジナル?
escapingOutputもパクリ元のRailsにないし
symfonyもまぁまぁがんばってるね

249 名前:nobodyさん mailto:sage [2008/07/15(火) 22:41:00 ID:???]
別のスレで違ってたのに今気づいたので
こっちで質問させてください。

symfony1.1をちょっと触ってみようと思いテストしたのですが、

%PEAR_DIR%\phing\Phing.php

内の printVersion() は、 static なのに

%PEAR_DIR%\symfony\plugins\sfPropelPlugin\lib\task\sfPhing.class.php

では、上記 phing/Phing を継承しているにもかかわらず 

printVersion() をただの function として定義しているため

symfony propel:build-model などで
Cannot make static method Phing::printVersion() とエラーが出ます。

sfPhing.class.php 内の printVersion() を static にすれば解決はするんですけど、
正しくは、どうすればよいのでしょうか?他の方はエラー出てませんか?

ちょっと気持ち悪いので、どなたか教えてください。
Phingのバージョンは最新だと思っています。 @version $Revision: 1.51 $



250 名前:249 mailto:sage [2008/07/16(水) 09:13:54 ID:???]
他スレでアドバイス頂いて解決したので一応書いておきます。

通常の pear とsymfony にバンドル版とでソースが違ったようです。
pear のものを uninstall したら動くようになりました。


251 名前:nobodyさん mailto:sage [2008/07/16(水) 11:18:16 ID:???]
symfonyで使うのにPropelじゃないO/Rマッパでよさげなのがあるという噂を聞いたのだが、心当たりある人いるかい?

252 名前:nobodyさん mailto:sage [2008/07/16(水) 11:20:57 ID:???]
s2だお

253 名前:nobodyさん mailto:sage [2008/07/16(水) 11:21:50 ID:???]
Timpopelopeloのこと?

254 名前:nobodyさん mailto:sage [2008/07/16(水) 13:14:31 ID:???]
>>251

doctrine じゃなかったっけ?
使ってる人いたら報告希望





255 名前:nobodyさん mailto:sage [2008/07/16(水) 14:38:58 ID:???]
>>247
sfFormを使わずにやりたいからCompat10プラグインなんだ。


256 名前:nobodyさん mailto:sage [2008/07/16(水) 19:22:49 ID:???]
Doctrine使ってるよ。
クラス定数を書かなくていいので楽だよ。

でも、使おうと思ったらどんなORMでも使えるよね。


257 名前:nobodyさん mailto:sage [2008/07/16(水) 20:01:51 ID:???]
俺もTimpocorine使ってる

258 名前:nobodyさん [2008/07/17(木) 01:53:41 ID:r8Tb5l59]
FWを覚えるのて長く使えないから、無駄だよな
C++,C#覚えてた方が無駄じゃないよな

259 名前:nobodyさん [2008/07/17(木) 09:27:50 ID:r8Tb5l59]
おまいらがsymfonyを習得できた頃には
また新しい超人気のFWが登場するだろうw
短期で習得しないと回収できないよ、この業界はね


260 名前:nobodyさん mailto:sage [2008/07/17(木) 10:55:21 ID:???]
C++というか、Cを勉強しておくのは役に立つぞ。
symfonyを勉強しておくのもCを勉強おくのと同じくらい役に立つが

とりあえずCを勉強しておけ。

261 名前:nobodyさん mailto:sage [2008/07/17(木) 13:50:12 ID:???]
PHP
C++
C#
C

そして、いよいよsymfonyの出番だ! 

おかしくね?

262 名前:nobodyさん [2008/07/17(木) 19:13:50 ID:6/yjc+oz]
逆だよ、逆。
Cってのはどっちかというと、コンピュータ(ハード側)に則した言語なんだ。
考え方が異質だけと単純。

それに対して、PHPとかsymfonyになってくると人間側の「もっと簡単に、省ける事は空気読んで省けいて書けた方がいいよね」になってくるんだよ。
その為、見た目は簡単だけど、複雑になってる訳。

単純な方から複雑な方へ勉強していった方が理解が早い・・・はずだと思うんだ。

263 名前:nobodyさん mailto:sage [2008/07/17(木) 22:47:02 ID:???]
C++なんか覚えるなよ…
あんな欠陥言語は早いとこ絶滅させないと

264 名前:nobodyさん mailto:sage [2008/07/17(木) 23:47:00 ID:???]
Cなんてとうの昔に忘れました



265 名前:nobodyさん mailto:sage [2008/07/18(金) 10:09:26 ID:???]
>>263
なぜ、そう考えるのかは分かるんだが・・・
もし、C++を理解しながら、ありゃダメだって思ってるんなら、一度boost::spiritとかいじってみるといいかもよ?

言語というより、パズルとして楽しめるw

266 名前:nobodyさん mailto:sage [2008/07/18(金) 20:46:09 ID:???]
テンプレートが出てきたところからC++はカオス化してしまったな。

auto_ptrとその仲間の機能をすべて答えなさい。
とかやったら輪ロスすぎるww

267 名前:nobodyさん mailto:sage [2008/07/18(金) 22:11:51 ID:???]
PHPなら仕事ないな。C++ならまだ仕事はある。

268 名前:nobodyさん mailto:sage [2008/07/25(金) 12:10:11 ID:???]
sfWidgetFormSelectRadioなんですが、
選択項目をタグ単位では取り出せない仕様なんですか?
ラジオボタンによくある

◎個人
 苗字[  ]名前[  ]
◎法人
 法人名[  ]
 担当者名[  ]

みたいなものを実装したいのです。
個人/法人区分じたいもDBに保存したいので、
フォームクラスとは別に生成するわけにも行きませんし……

横並びと縦並びになる場合は自作のformatter()関数を作って対処したのですが、
これもデフォルトではulタグ前提になっていて、なんか不便ですよね。

269 名前:age [2008/07/28(月) 21:14:47 ID:L1kOSCp5]
sfWidgetFormSelectRadioのcheckedと
sfWidgetFormSelectのselectedの指定って
どうやってやるんですか?
ググっても見つからないんで1.1使ってる人教えてください

270 名前:nobodyさん mailto:sage [2008/07/29(火) 13:28:16 ID:???]
>>269
アクションクラスで
$this->form->setDefault('name', 'value');
したら自動で入らない?

フォームクラスでsetDefaults([連想配列A])して
アクションクラスでもsetDefaults([連想配列B])していたら、
Bだけが有効になるっていうハマりがあったな。

sfFormの定義を見たら、
setDefault()は$nameと同じ要素だけ上書きしているが、
setDefaults()だとマージしないで配列ごと上書きしていた。
自前でgetDefaults()してからarray_merge()するか、
setDefault()使っとくか。

271 名前:age mailto:sage [2008/07/29(火) 17:50:14 ID:???]
>>270

できました、ありがとうございます。

もう一つ質問させてください。
1.0での
<?php echo select_tag('hoge', options_for_select(array('a', 'b', 'c'), null, array('include_custom' => '選択してください'))) ?>
みたいな選択する配列ではない文字(ここでは選択してください)
をデフォルトで表示するにはどうやって設定するのですか?


272 名前:nobodyさん mailto:sage [2008/07/29(火) 19:15:55 ID:???]
>>271
sfWidgetFormSelectを追いかけてみたけど、
include_customに相当する機能はないね。
array(''=>'選択してください')を連結しとくしかないんじゃ?

273 名前:age mailto:sage [2008/07/31(木) 09:43:53 ID:???]
>>272

ありがとうございます。
やっぱりできないんですね、仕方ないので言われた通り連結しときました。

FormやMailに関しての参考が少ないのもあるんですけど1.1になって
使い勝手が悪くなったと思うのは俺だけですかね

274 名前:nobodyさん mailto:sage [2008/07/31(木) 14:58:57 ID:???]
OOPのデメリットだろうね。
保守性はあがるけど、開発効率はさがる。
とくに一人とか少人数でやってる場合。
一人でやってるなら無理にsfForm使わなくて独自orQuickFormとかを使ったほうが
効率はいいんじゃないかな。



275 名前:nobodyさん mailto:sage [2008/07/31(木) 15:45:33 ID:???]
>>274
それもフォームの形式や頻出度合いによる

276 名前:nobodyさん mailto:sage [2008/07/31(木) 16:41:47 ID:???]
sfFormってモデルとかならず結びついてんの?
テラ糞フォームwww

277 名前:nobodyさん mailto:sage [2008/07/31(木) 17:06:00 ID:???]
>>276
何railsと勘違いしてんの?
頭悪いにもほどがあるだろ…

278 名前:nobodyさん mailto:sage [2008/07/31(木) 18:44:32 ID:???]
>>275

DBの構造とフォームの内容が一致している場合の
手間の少なさは特筆物だけど、
欄Aに入力があったら欄Bを格納、無しなら欄Cを格納、
のように場合わけの必要があると、
とたんに自作ValidatorSchema作らされたりして難しくなるよな。

279 名前:nobodyさん mailto:sage [2008/07/31(木) 19:23:28 ID:???]
>>278
sfFormの構造理解してなくねぇ?

280 名前:nobodyさん mailto:sage [2008/07/31(木) 19:28:10 ID:???]
汎用性の無い例外的な処理なら、わざわざValidatorSchemaつくらんでも、
Formクラス内に実装しちゃえばいい。

QuickFormなんか使うよりはよっぽど楽。
DBの構造とフォームの内容が一致は大して関係ない。

どちらかというと、フォーム同士の組み合わせが複雑に絡み合うエンタープライズ分野向きだわな。

281 名前:nobodyさん mailto:sage [2008/07/31(木) 19:30:23 ID:???]
ActiveRecordとAdminGeneratorとsfForm混同してごっちゃになっちゃったんだねきっと

282 名前:nobodyさん mailto:sage [2008/07/31(木) 19:40:00 ID:???]
propel:build-forms=sfFormだと思ってるんだろ

283 名前:nobodyさん mailto:sage [2008/07/31(木) 19:44:40 ID:???]
>>279

たしかに理解できてないのかもしらんが、

[×]←チェックボックスA
 [ ]←チェックボックスB
  「  」←テキストボックスB
 [ ]←チェックボックスC
  「  」←テキストボックスC

たとえばこんな状況で、

・AがチェックされてなければBやCの状態は問わない
・AがチェックされていたらBまたはCのいずれか一方に少なくともチェックが必要
・BおよびCにチェックが入っている場合のみ、対応するテキストボックスの中身を評価する

こんな記述をしようとしたら、
入力値評価用のバリデータ自作した上で、
ポストバリデータがsfValidatorAndとsfValidatorOrでスパゲッティになるんだが、
漏れが気が付いてないだけで、もっと上手いやり方があるのかい?

284 名前:nobodyさん mailto:sage [2008/07/31(木) 19:46:04 ID:???]
>>283
具体的にQuickFormでのコード書いてくれない?
おれsfFormで書くから



285 名前:283 mailto:sage [2008/07/31(木) 19:46:41 ID:???]
×・BおよびCにチェックが入っている場合のみ、対応するテキストボックスの中身を評価する
○・B and/or Cにチェックが入っている場合のみ、おのおの対応するテキストボックスの中身を評価する

286 名前:283 mailto:sage [2008/07/31(木) 19:50:06 ID:???]
>>284

>>274に頼んでくれ。
少なくとも漏れはHTML_QuickFormには戻りたくないよ。

287 名前:nobodyさん mailto:sage [2008/07/31(木) 19:54:38 ID:???]
>>286
なるほど。じゃぁどう作ってる?Helper駆使?

288 名前:nobodyさん mailto:sage [2008/07/31(木) 20:00:59 ID:???]
>>283
>入力値評価用のバリデータ自作した上で、
要はバリデータスキーマクラスが1個増えるってことだよね?
条件上ごちゃごちゃするのはしょうがないが、バリデータ増やさなくても
isValidやbindオーバーライドしてそこに書いてやれば良くない?


289 名前:283 mailto:sage [2008/07/31(木) 20:04:41 ID:???]
>>288
sfValidatorSchemaCompareをパクって、
フィールドとオペレータと値を引数に取るバリデータクラスmyValidatorSchemaIfを作って、

$this->validatorSchema->setPostValidator(new sfValidatorAnd(array(
$this->validatorSchema->getPostValidator(), // 親クラスのポストバリデータも動くようにするためにAnd
new sfValidatorSchemaCompare('email', sfValidatorSchemaCompare::EQUAL, 'email_confirm',
array(),array('invalid' => 'メールアドレスが一致しません。')
),
new sfValidatorOr(array(
new sfValidatorAnd(array(
new myValidatorSchemaIf('A', myValidatorSchemaIf::EQUAL, 'on', // チェックされている
array(),array('invalid' => ' ')
),
new sfValidatorOr(array(
new myValidatorSchemaIf('B', myValidatorSchemaIf::NOT_EQUAL, '', // チェックされていない
array(),array('invalid' => ' ')
),
new myValidatorSchemaIf('C', myValidatorSchemaIf::NOT_EQUAL, '', // チェックされていない
array(),array('invalid' => ' ')
),
)),
)),
new myValidatorSchemaIf('A', myValidatorSchemaIf::EQUAL, '', // チェックされていない
array(),
array('invalid' => '少なくとも1つをチェックしてください。')
),
)),
)));
テキストボックスの処理が入ってない状態でこうなっちゃうんだけど。

290 名前:nobodyさん mailto:sage [2008/07/31(木) 21:03:55 ID:???]
テキストボックス無い状態なら、こんな感じじゃない?

public function isValid()
{
$r = sfContext::getInstance()->getRequest();
$nf = $this->getWidgetSchema()->getNameFormat();

if($r->getParameter(sprintf($nf, 'A')))
{

if(!$r->getParameter(sprintf($nf, 'B')) and !$r->getParameter(sprintf($nf, 'C')))
{
$r->setError(sprintf($nf, 'A'), "AがチェックされたらBかCもしくは両方をチェックしてください");
$this->isBound = false;
}

}

return parent::isValid();
}



291 名前:nobodyさん mailto:sage [2008/07/31(木) 21:43:21 ID:???]
$r->setErrorのとこは

$this->getErrorSchema()->addError(
new sfValidatorError(
new sfValidatorPass(),"AがチェックされたらBかCもしくは両方をチェックしてください"
)
, 'A');

こっちにするべきか

292 名前:nobodyさん mailto:sage [2008/07/31(木) 22:13:12 ID:???]
$r->getParameter()のところは$this->getValue()で取れるわ

293 名前:nobodyさん mailto:sage [2008/07/31(木) 23:01:29 ID:???]
>>290-292

ありがとうございます。
比べて見たら漏れって馬鹿だなってまるわかりだね。
でも4章までしかないフォームガイドじゃさっぱりわからないことだらけで。

294 名前:nobodyさん mailto:sage [2008/07/31(木) 23:12:36 ID:???]
>>293
sfFormのパブリックメソッドを見渡して、どんな動作するか予測したり試してみたりすると良いよ。




295 名前:nobodyさん mailto:sage [2008/08/01(金) 00:11:12 ID:???]
>>277
言い訳乙ww

296 名前:nobodyさん mailto:sage [2008/08/01(金) 02:48:41 ID:???]
ここまでの流れで随分分かりやすく解説されたのに、
言い訳だと思える>>295の知能に同情

297 名前:283=293 mailto:sage [2008/08/01(金) 11:00:00 ID:???]
残念、その通りやってみたのですが、
エラーが上手く設定できていません。
parent::isValid()の位置を変えてみたりしたのですが、
通常のバリデータが通過したときだけオーバーライドした内容が評価されているようです。

ttp://groups.google.co.jp/group/symfony-devs/browse_thread/thread/a7a7ad2dd3ae1621

ここを読むと似たような罠にはまっていて、
返事に
「(カスタムバリデータ強制してるのは)再利用性とユニットテストしやすさのためだよ」
と書かれた後にFabienが「限定用途ならバリデータ作らないでsfValidatorCallback使えるよ」
とか書いてるんですが……
やっぱりポストバリデータで書くのが1.1流なんでしょうか。

298 名前:nobodyさん mailto:sage [2008/08/01(金) 11:23:31 ID:???]
sfFormって便利なの?

299 名前:nobodyさん mailto:sage [2008/08/01(金) 13:01:18 ID:???]
>>297
それは無い。動作検証してるし。
逆にsfValidatorCallbackでやると、$this->getValueで値がとれないから無理。
ちょっとコード晒してみなよ。

300 名前:283 mailto:sage [2008/08/01(金) 13:56:08 ID:???]
293のフォームとは違うのですが
public function isValid()
{
$result = parent::isValid();
print_r($this->getValue('a'));
if($this->getValue('a') == '2') // Aが2かどうか
{
if($this->getValue('b') === '')
{
$this->getErrorSchema()->addError(
new sfValidatorError(new sfValidatorPass(), "bが空欄です。"),'b');
$this->isBound = false;
}
}
else
{
if($this->getValue('c') === '' || $this->getValue('d') === '')
{
$this->getErrorSchema()->addError(
new sfValidatorError(new sfValidatorPass(), "cまたはdが空欄です。"),'c');
$this->isBound = false;
}

if($this->getValue('e') === '' || $this->getValue('f') === '')
{
$this->getErrorSchema()->addError(
new sfValidatorError(new sfValidatorPass(), "eまたはfが空欄です。"),'f');
$this->isBound = false;
}
}
return $result & (0 == count($this->errorSchema));
}

301 名前:283 mailto:sage [2008/08/01(金) 13:56:54 ID:???]
print_r()している箇所で、
parent::isValid()がtrueの場合でないと、
$this->getValue()の値が取得できていないようです。

302 名前:283 mailto:sage [2008/08/01(金) 14:14:21 ID:???]
sfForm::bind()を読むと、
$this->validatorSchema->clean()でsfValidatorErrorSchema例外が起きたら
$this->values = array()されちゃってますね。

bind()にセッション変数に格納した値を渡すような場合もある以上、
getParameter()を使うのも問題があるので、このやり方は使えないようです。

303 名前:nobodyさん mailto:sage [2008/08/01(金) 14:38:20 ID:???]
>>301
ていうか、configureでの設定間違えてる。
ソース全体晒すか、sfFormのソースよく読みなおしてごらん。

304 名前:283 mailto:sage [2008/08/01(金) 14:56:54 ID:???]
>>303
configure()ですか?
propel:generate-crudしたものに
・widgetの追加
・validatorの追加
・setPostValidator()
・setDefaults()
してるくらいです。

先に上げたポストバリデータ方式だと、
動作自体は期待通り動いているので、
バリデータの記述に問題があるとも考えにくいのですが……



305 名前:nobodyさん mailto:sage [2008/08/01(金) 15:17:28 ID:???]
まず290-292のコードは動いたの?
>293のフォームとは違うのですが
とか勝手にフォーム変えて、動かないコードの一部を晒されて、
他人が理解できると思ってるの?

306 名前:283 mailto:sage [2008/08/01(金) 16:00:11 ID:???]
>>305
なるべく忠実にやってから上手く動かないので、
他のフォームで試行錯誤していたっていう流れだったのですが、
確かにわかりにくかったとは思います。
しかし挙動は同じです。

public function isValid()
{
print_r($this->getValue('A'));
if($this->getValue('A'))
{

if(!$this->getValue('B') and !$this->getValue('C'))
{
$this->getErrorSchema()->addError(
new sfValidatorError(
new sfValidatorPass(),"AがチェックされたらBかCもしくは両方をチェックしてください"
)
, 'A');
$this->isBound = false;
}
}
return parent::isValid;
}






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<217KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef