フランチョスとsymfony
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/01/24(木) 21:26:07ID:???http://www.symfony-project.org/
コードスニペット
http://www.symfony-project.org/snippets/tag
プラグイン
http://trac.symfony-project.com/wiki/SymfonyPlugins
どうぞ つ
0201nobodyさん
2008/06/26(木) 18:14:47ID:Ib0rEj6C使われるクラスを作りたいんだけど、
そういうファイルってどのディレクトリに入れるのが適切?
0202nobodyさん
2008/06/26(木) 20:10:08ID:Pvojb66n一番上の方の lib とかに入れとけばautoloadされなかったっけ?
曖昧なかんじですまん。
0203nobodyさん
2008/06/26(木) 21:06:37ID:Ib0rEj6Cプロジェクト下だったりアプリケーション下だったりモジュール下の
libに入れれば各々のところでautoloadされるみたいですね。
ありがとうございます!
0204nobodyさん
2008/06/27(金) 15:48:50ID:???.settings:
timeout: 180
って何の設定?
0205nobodyさん
2008/06/27(金) 21:50:11ID:???0206nobodyさん
2008/06/30(月) 08:11:19ID:???祝 1.1
0207nobodyさん
2008/06/30(月) 10:07:04ID:???0208nobodyさん
2008/06/30(月) 22:14:01ID:p53V2UErSQLiteで作ったファイルを使ってpropel-build-schemaさせようとして半日悩んでしまったが、一行目にハタと気がついてしまった。
自分バカっす……。
0209208
2008/06/30(月) 22:14:47ID:???0210nobodyさん
2008/07/01(火) 16:31:40ID:qqn3liZnを
routing.ymlで
example.com/hoge/a_b
という風にすることってできないですかね?
やるとしたら.htaccessいじるしかないのでしょうか
0211nobodyさん
2008/07/01(火) 21:59:28ID:???mod_rewriteで変換するのが楽そうやね。
aとbの組み合わせが限られていて少なければ全部書いていけばrouting.ymlでもできるだろうけど。
0212nobodyさん
2008/07/02(水) 09:33:33ID:???yamlに直接PHPを書けるよ。
0213210
2008/07/02(水) 15:35:36ID:rbMFbkRbやっぱそっちのほうが楽ですよね
でも、見るファイルが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のことよくわかってないので、
色々試してみます。
ありがとうございました!
0214nobodyさん
2008/07/02(水) 18:34:23ID:???なんてかわいそうな人
0215210
2008/07/02(水) 18:46:03ID:rbMFbkRb0216nobodyさん
2008/07/02(水) 20:24:36ID:???0217nobodyさん
2008/07/02(水) 20:28:44ID:???config/routing.yml
class: CustomRoutingConfigHandler
で、好きにカスタマイズしなよ
0218nobodyさん
2008/07/04(金) 22:35:50ID:6INfqE2ehttp://tkt.s307.xrea.com/x/xqa/2008/06/post-4.html
的な状態でSSHログインができなくなってしまいました。
勿論pakeFunctionの修正は行っているのですが、誰か心当たりの
ある方いませんか?
0219nobodyさん
2008/07/04(金) 23:01:37ID:6INfqE2e0220nobodyさん
2008/07/05(土) 01:23:33ID:???0221nobodyさん
2008/07/05(土) 11:47:42ID:???0223nobodyさん
2008/07/07(月) 17:00:39ID:???0224nobodyさん
2008/07/07(月) 20:06:39ID:???ネットに情報があふれかえっているから、
こんなところで話す必要がないのだ!
0225nobodyさん
2008/07/07(月) 23:17:20ID:???存在しないな。
毎日2ちゃんねるへ来てしまう重度の人でなければ、なかなかそういう発想はできない。
0226212
2008/07/12(土) 16:05:19ID:???俺もチラッと読んだことがあっただけだったので、詳しく書けなかった。
日付が去年の一月なので、今でもこのとおりいくかどうかわからんけど、ここ読んでみて。
http://blog.symfony.jp/2007/01/09/phpcode_in_yaml/
0227nobodyさん
2008/07/14(月) 01:54:26ID:???あいかわらず外人の作るフレームワークは確認画面を考慮してないな。
HTMLQuickFormで例えると$form->freeze()的な処理はどうやったらできるんだろう。
これを解決しないと日本じゃつまずくと思う。
0229nobodyさん
2008/07/14(月) 11:00:59ID:???少なくともこのスレと前スレを読み返した範囲では、
どこを探しても1.1のフォームフレームワークで確認画面をどう実現するか、
という話題は見当たらないんだが。
前スレ934はフォームヘルパ使っているからcompat_10モードだよな?
「解決された」と言い切れるほど自信があるならポインタくらい示せよ。
0230nobodyさん
2008/07/14(月) 11:24:38ID:???0231nobodyさん
2008/07/14(月) 11:32:13ID:x4hcg1ovHTMLQuickFormを使いたいってんならその画面でHTMLQuickFormを使えばいいだけだと思うんだが・・・
何が不満なんだい?
0232nobodyさん
2008/07/14(月) 12:00:50ID:???なんでこのスレなんか見てるの?その前にまず公式のドキュメント見ればわかるだろ…
あんなにでかでか書いてあるのにポインタ示せとか、盲目すぎ
0233nobodyさん
2008/07/14(月) 12:13:15ID:???0234nobodyさん
2008/07/14(月) 12:44:18ID:???今ざっとコードを見てみたんだが freeze() にあたる処理を入れる余地はないなこれ
あるタイプの Widget はそれ本来のタイプの HTML 出力をする機能しかないわけだから
sfForm(を extends したユーザフォームクラス)のレベルで
入力画面用の Widget と確認画面用の Widget を切り替えるような仕組みを作る必要があるのかな……?
いま公式ドキュメント読みつつ脱線して fabien が sfForm の MVC 適合を解説してるブログとか読んでるところだけど
手間を省くためにも >>232 がでかでか書いてある箇所の URL を挙げてくれるとありがたい
0235nobodyさん
2008/07/14(月) 12:51:42ID:???>>231がsfForm使ってないのに適当に答えてるらしいことはよくわかった。
0236nobodyさん
2008/07/14(月) 13:21:01ID:Bo+zcAFi慣れれば便利そうなんだが
他のFWもこんな感じ?
0237nobodyさん
2008/07/14(月) 13:27:46ID:???それ今のお前まんまじゃんw
もっとよく読め。
0238nobodyさん
2008/07/14(月) 13:32:55ID:???Thank You Pageにあたる部分にsetFlashを使ったアクションを一枚噛ませれば良い。
そして最後にgetFlashして登録
0240nobodyさん
2008/07/14(月) 15:43:56ID:x4hcg1ovもし、HTMLQuickFormを念頭に置いて文句を言ってるんだとしたら、たぶん、こういう事でないかな?
「HTMLQuickFormとsymfonyではパラダイム自体が違う。」
確か、HTMLQuickFormだと
if (なんたら) {
formの処理
} else {
formのフリーズ
}
フォームの出力
という感じのコードになったと思うが、symfonyだと、そもそも分岐自体をFWが受け持ってしまっている。
ので、ワカランと言ってるのではないか?と思う。
>>236
他のFWも覚える事は多いだろうと思う。
というか、FWは、FWだけ覚えればOKっていうもんじゃなくて、あくまでPHP+FWだからな。
PHPがまともに使える(それこそFW使わんでも同じだけの機能を作れる)ような人が、楽できるように出来てるもんなんだ。
今までPHPを勉強してなくてFWから勉強する・・・は、止めた方がいいだろうな。
(もし、そういうつもりで言ったのでなかったとしたらスマン。)
0241nobodyさん
2008/07/14(月) 16:16:59ID:???0242nobodyさん
2008/07/14(月) 16:33:30ID:???現場の話なら現場の話って最初から言え、っつーか、後だしで条件出してくるんじゃねぇよ。
0243nobodyさん
2008/07/14(月) 19:25:18ID:???リロードされて消えるからいいんじゃん。
消えたら登録せずにエラー出せばよい。
リロードでの連投許可するってなら別だけどね。
ぎゃくにquickformだとhiddenだからバリデーション2回走らせたり効率悪すぎるだろ?
0244nobodyさん
2008/07/15(火) 12:18:49ID:???0245nobodyさん
2008/07/15(火) 12:21:34ID:???symfony1.1 + compat10
動的に個数が変わる
data[0][aaa]
data[0][bbb]
data[1][aaa]
data[1][bbb]
data[2][aaa]
data[2][bbb]
のような、3次元配列のバリデーションはどうやればいい?
validateXXX()メソッドでゴリゴリやるしかない?
0248nobodyさん
2008/07/15(火) 22:05:00ID:???escapingOutputもパクリ元のRailsにないし
symfonyもまぁまぁがんばってるね
0249nobodyさん
2008/07/15(火) 22:41:00ID:???こっちで質問させてください。
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 $
0250249
2008/07/16(水) 09:13:54ID:???通常の pear とsymfony にバンドル版とでソースが違ったようです。
pear のものを uninstall したら動くようになりました。
0251nobodyさん
2008/07/16(水) 11:18:16ID:???0252nobodyさん
2008/07/16(水) 11:20:57ID:???0253nobodyさん
2008/07/16(水) 11:21:50ID:???0256nobodyさん
2008/07/16(水) 19:22:49ID:???クラス定数を書かなくていいので楽だよ。
でも、使おうと思ったらどんなORMでも使えるよね。
0257nobodyさん
2008/07/16(水) 20:01:51ID:???0258nobodyさん
2008/07/17(木) 01:53:41ID:r8Tb5l59C++,C#覚えてた方が無駄じゃないよな
0259nobodyさん
2008/07/17(木) 09:27:50ID:r8Tb5l59また新しい超人気のFWが登場するだろうw
短期で習得しないと回収できないよ、この業界はね
0260nobodyさん
2008/07/17(木) 10:55:21ID:???symfonyを勉強しておくのもCを勉強おくのと同じくらい役に立つが
とりあえずCを勉強しておけ。
0261nobodyさん
2008/07/17(木) 13:50:12ID:???C++
C#
C
そして、いよいよsymfonyの出番だ!
おかしくね?
0262nobodyさん
2008/07/17(木) 19:13:50ID:6/yjc+ozCってのはどっちかというと、コンピュータ(ハード側)に則した言語なんだ。
考え方が異質だけと単純。
それに対して、PHPとかsymfonyになってくると人間側の「もっと簡単に、省ける事は空気読んで省けいて書けた方がいいよね」になってくるんだよ。
その為、見た目は簡単だけど、複雑になってる訳。
単純な方から複雑な方へ勉強していった方が理解が早い・・・はずだと思うんだ。
0263nobodyさん
2008/07/17(木) 22:47:02ID:???あんな欠陥言語は早いとこ絶滅させないと
0264nobodyさん
2008/07/17(木) 23:47:00ID:???0265nobodyさん
2008/07/18(金) 10:09:26ID:???なぜ、そう考えるのかは分かるんだが・・・
もし、C++を理解しながら、ありゃダメだって思ってるんなら、一度boost::spiritとかいじってみるといいかもよ?
言語というより、パズルとして楽しめるw
0266nobodyさん
2008/07/18(金) 20:46:09ID:???auto_ptrとその仲間の機能をすべて答えなさい。
とかやったら輪ロスすぎるww
0267nobodyさん
2008/07/18(金) 22:11:51ID:???0268nobodyさん
2008/07/25(金) 12:10:11ID:???選択項目をタグ単位では取り出せない仕様なんですか?
ラジオボタンによくある
◎個人
苗字[ ]名前[ ]
◎法人
法人名[ ]
担当者名[ ]
みたいなものを実装したいのです。
個人/法人区分じたいもDBに保存したいので、
フォームクラスとは別に生成するわけにも行きませんし……
横並びと縦並びになる場合は自作のformatter()関数を作って対処したのですが、
これもデフォルトではulタグ前提になっていて、なんか不便ですよね。
0269age
2008/07/28(月) 21:14:47ID:L1kOSCp5sfWidgetFormSelectのselectedの指定って
どうやってやるんですか?
ググっても見つからないんで1.1使ってる人教えてください
0270nobodyさん
2008/07/29(火) 13:28:16ID:???アクションクラスで
$this->form->setDefault('name', 'value');
したら自動で入らない?
フォームクラスでsetDefaults([連想配列A])して
アクションクラスでもsetDefaults([連想配列B])していたら、
Bだけが有効になるっていうハマりがあったな。
sfFormの定義を見たら、
setDefault()は$nameと同じ要素だけ上書きしているが、
setDefaults()だとマージしないで配列ごと上書きしていた。
自前でgetDefaults()してからarray_merge()するか、
setDefault()使っとくか。
0271age
2008/07/29(火) 17:50:14ID:???できました、ありがとうございます。
もう一つ質問させてください。
1.0での
<?php echo select_tag('hoge', options_for_select(array('a', 'b', 'c'), null, array('include_custom' => '選択してください'))) ?>
みたいな選択する配列ではない文字(ここでは選択してください)
をデフォルトで表示するにはどうやって設定するのですか?
0272nobodyさん
2008/07/29(火) 19:15:55ID:???sfWidgetFormSelectを追いかけてみたけど、
include_customに相当する機能はないね。
array(''=>'選択してください')を連結しとくしかないんじゃ?
0273age
2008/07/31(木) 09:43:53ID:???ありがとうございます。
やっぱりできないんですね、仕方ないので言われた通り連結しときました。
FormやMailに関しての参考が少ないのもあるんですけど1.1になって
使い勝手が悪くなったと思うのは俺だけですかね
0274nobodyさん
2008/07/31(木) 14:58:57ID:???保守性はあがるけど、開発効率はさがる。
とくに一人とか少人数でやってる場合。
一人でやってるなら無理にsfForm使わなくて独自orQuickFormとかを使ったほうが
効率はいいんじゃないかな。
0276nobodyさん
2008/07/31(木) 16:41:47ID:???テラ糞フォームwww
0278nobodyさん
2008/07/31(木) 18:44:32ID:???DBの構造とフォームの内容が一致している場合の
手間の少なさは特筆物だけど、
欄Aに入力があったら欄Bを格納、無しなら欄Cを格納、
のように場合わけの必要があると、
とたんに自作ValidatorSchema作らされたりして難しくなるよな。
0280nobodyさん
2008/07/31(木) 19:28:10ID:???Formクラス内に実装しちゃえばいい。
QuickFormなんか使うよりはよっぽど楽。
DBの構造とフォームの内容が一致は大して関係ない。
どちらかというと、フォーム同士の組み合わせが複雑に絡み合うエンタープライズ分野向きだわな。
0281nobodyさん
2008/07/31(木) 19:30:23ID:???0282nobodyさん
2008/07/31(木) 19:40:00ID:???0283nobodyさん
2008/07/31(木) 19:44:40ID:???たしかに理解できてないのかもしらんが、
[×]←チェックボックスA
[ ]←チェックボックスB
「 」←テキストボックスB
[ ]←チェックボックスC
「 」←テキストボックスC
たとえばこんな状況で、
・AがチェックされてなければBやCの状態は問わない
・AがチェックされていたらBまたはCのいずれか一方に少なくともチェックが必要
・BおよびCにチェックが入っている場合のみ、対応するテキストボックスの中身を評価する
こんな記述をしようとしたら、
入力値評価用のバリデータ自作した上で、
ポストバリデータがsfValidatorAndとsfValidatorOrでスパゲッティになるんだが、
漏れが気が付いてないだけで、もっと上手いやり方があるのかい?
0285283
2008/07/31(木) 19:46:41ID:???○・B and/or Cにチェックが入っている場合のみ、おのおの対応するテキストボックスの中身を評価する
0288nobodyさん
2008/07/31(木) 20:00:59ID:???>入力値評価用のバリデータ自作した上で、
要はバリデータスキーマクラスが1個増えるってことだよね?
条件上ごちゃごちゃするのはしょうがないが、バリデータ増やさなくても
isValidやbindオーバーライドしてそこに書いてやれば良くない?
0289283
2008/07/31(木) 20:04:41ID:???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つをチェックしてください。')
),
)),
)));
テキストボックスの処理が入ってない状態でこうなっちゃうんだけど。
0290nobodyさん
2008/07/31(木) 21:03:55ID:???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();
}
0291nobodyさん
2008/07/31(木) 21:43:21ID:???$this->getErrorSchema()->addError(
new sfValidatorError(
new sfValidatorPass(),"AがチェックされたらBかCもしくは両方をチェックしてください"
)
, 'A');
こっちにするべきか
0292nobodyさん
2008/07/31(木) 22:13:12ID:???0293nobodyさん
2008/07/31(木) 23:01:29ID:???ありがとうございます。
比べて見たら漏れって馬鹿だなってまるわかりだね。
でも4章までしかないフォームガイドじゃさっぱりわからないことだらけで。
0297283=293
2008/08/01(金) 11:00:00ID:???エラーが上手く設定できていません。
parent::isValid()の位置を変えてみたりしたのですが、
通常のバリデータが通過したときだけオーバーライドした内容が評価されているようです。
ttp://groups.google.co.jp/group/symfony-devs/browse_thread/thread/a7a7ad2dd3ae1621
ここを読むと似たような罠にはまっていて、
返事に
「(カスタムバリデータ強制してるのは)再利用性とユニットテストしやすさのためだよ」
と書かれた後にFabienが「限定用途ならバリデータ作らないでsfValidatorCallback使えるよ」
とか書いてるんですが……
やっぱりポストバリデータで書くのが1.1流なんでしょうか。
0298nobodyさん
2008/08/01(金) 11:23:31ID:???0299nobodyさん
2008/08/01(金) 13:01:18ID:???それは無い。動作検証してるし。
逆にsfValidatorCallbackでやると、$this->getValueで値がとれないから無理。
ちょっとコード晒してみなよ。
0300283
2008/08/01(金) 13:56:08ID:???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));
}
0301283
2008/08/01(金) 13:56:54ID:???parent::isValid()がtrueの場合でないと、
$this->getValue()の値が取得できていないようです。
■ このスレッドは過去ログ倉庫に格納されています