フランチョスと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
どうぞ つ
0611nobodyさん
2009/02/05(木) 14:30:33ID:???テンプレート内で、取得したいときって
$sf_context->getActionStack()->getLastEntry()->getActionInstance()->getVarHolder()->getAll()
ってわざわざ書かないとだめ?
0612nobodyさん
2009/02/05(木) 14:38:32ID:???Criteriaがダメなんじゃなくて、そもそもその文抽象化されてないから。
まぁ俺はサブクエリビルドクラス使って対処してるけど。
0615nobodyさん
2009/02/10(火) 10:59:01ID:HED7VAZrとい問題が起きました。どこでエラーになっているかを表示、あるいはログに記録する方法はあるでしょうか?
0616nobodyさん
2009/02/10(火) 20:29:08ID:???sfValidatorManagerの拡張クラスを作って、
それをValidate実行時に使わせることってできる?
0617nobodyさん
2009/02/11(水) 20:07:05ID:???0618nobodyさん
2009/02/12(木) 13:08:50ID:???0619nobodyさん
2009/02/12(木) 17:37:15ID:???0620nobodyさん
2009/02/12(木) 22:36:13ID:???0621nobodyさん
2009/02/12(木) 23:54:55ID:???なぜか1.0のメンテナンス終了が2010年の1月で1.2のメンテナンス終了が2009年の11月なのでどちらで作っていくべきか迷ってるんですが。。。どれが良いと思いますか?
0622nobodyさん
2009/02/13(金) 02:57:30ID:???最近始めたので、1.2使ってる
なので、どれがいいかは分からない
1.2でルーティング周りのクラスが追加されていて、特にsfRouteCollectionを使用すると、より簡潔にrouting.ymlを記述出来るようなので、
これから始めるのなら、1.2の方がいいんじゃないの?
0623nobodyさん
2009/02/14(土) 03:58:23ID:???そうでないなら1.2。
0624nobodyさん
2009/02/14(土) 19:37:59ID:???同じような人、結構いそうな気がするけど。
0625nobodyさん
2009/02/15(日) 02:18:10ID:???どんなバグだったか忘れたけど
0626nobodyさん
2009/02/15(日) 02:23:40ID:???0627nobodyさん
2009/02/15(日) 02:29:06ID:???0628nobodyさん
2009/02/15(日) 04:25:24ID:???単純なパフォーマンスでも5.2系の方が優れてるはず
0629nobodyさん
2009/02/15(日) 12:28:12ID:???メール送信を実装しようと思ったのですが、
$mail = new sfMail();
とすると、
Class 'sfMail' not found
になってしまいます。
なにか設定が必要なのでしょうか?
0633nobodyさん
2009/02/15(日) 14:07:13ID:???0634nobodyさん
2009/02/15(日) 14:11:46ID:LyJslojLだね。Redhat/CentOSの5は5.1。
>>628
そりゃま、完全に1から自分でインストールできるんならね。
流石にPHP4はもう使わなくてすむとは思うがw
0635nobodyさん
2009/02/16(月) 01:09:30ID:???smfony 1.2の場合
sfContext::getInstance()->getController()->genUrl($internal_uri, $absolute);
↑url_forの実装
$internal_uriに内部URL
$absoluteは相対パスならfalse、絶対パスならtrueを渡す
0636nobodyさん
2009/02/16(月) 08:41:43ID:???0637nobodyさん
2009/02/16(月) 12:40:27ID:???0638nobodyさん
2009/02/16(月) 13:00:38ID:Eg6IU/sqリポジトリにあげる前に一度symfony plugin:install プラグイン名しちゃって
No release available for plugin プラグイン名
というエラーメッセージがでたんです。
で、その後ファイル上げてから何度やっても同じメッセージでインストールできなくなっちゃいました。
ためしに別のサーバーに入れてみたら普通にインストールできました。
symfony cc
とか
pear clear-cache
とか
rm -f cache/.pear
とか
pear channel-update plugins.symfony-project.org
とかやってみたけどだめでした。
サーバー再起動もだめでした。
どなたか方法ご存知の方いらっしゃいませんか?
0639633
2009/02/16(月) 16:25:53ID:???ありがとうございます。
$this->genUrl()
でダメだったのであきらめてました。
でも、なんでこんなに長いんだろう・・・;
0640nobodyさん
2009/02/16(月) 16:48:05ID:???0641nobodyさん
2009/02/16(月) 23:37:58ID:???補足
アクション内からなら、
sfContext::getInstance()->getController()を
$this->getController()に変更出来る(やってることは同じ。少しは短くなった?)
また、内部URLではなく、ルート名と、クエリパラメータにする値が分かっているのなら、アクション内で
$this->generateUrl($route, $params, $absolute)を呼ぶことでURLを生成することができます。
ここで、
$routeはルート名
$paramsはモデルオブジェクトか値の配列。
ただしモデルオブジェクトが渡せるのは、ルートのoptions['type'] === 'object'の時のみ。
(一言でうまく説明出来ないので、詳細はsfObjectRoute::generate()のソース見て)
配列であれば、タイプに関係なく渡せる。
クエリパラメータが不要な時は空配列(array())
$absoluteは>>635同様、絶対パスか相対パスかどうか
わたしは、アクション内でリダイレクトのURLを作成する際にgenerateUrl()を使用しています。
0642nobodyさん
2009/02/17(火) 20:01:10ID:K56TvPG0まぁ、副問い合わせも使うんだし、当たり前といえば当たり前か。
やってみたことある人いる?
0643nobodyさん
2009/02/18(水) 08:04:45ID:???DBテーブル定義を修正しようとして、schema.ymlを修正し、
./symfony propel-build-all を実行すると、
DBテーブルの内容が全部消えてしまいます。
今はダンプファイルを取っておいて、あとで書き戻すことで対応していますが、
何かもっと洗練された方法はないでしょうか?
0644nobodyさん
2009/02/18(水) 09:08:41ID:???0645643
2009/02/18(水) 09:25:54ID:???propel-load-data というコマンドがあるようです。
しかしこれは、DBにセットするデータをyamlファイルで用意してやらなければ
なりません。WEBブラウザなどからDBに入力したデータをyamlファイルに書き出
す方法は無いようなので、yamlファイルを作るのはちょっと手間に感じられます。
これならダンプファイルを取っておいて、それをエディタで修正してロードす
るほうが現実的なような...。
0646nobodyさん
2009/02/18(水) 12:45:51ID:???どうしたらいいですか?
0647nobodyさん
2009/02/18(水) 19:49:24ID:???自分は
http://www.symfony-project.org/plugins/sfPropelSqlDiffPlugin
これをつかってるよ。
0648643
2009/02/18(水) 21:35:13ID:???ありがとうございます。参考にさせていただきます。
Plugins | sfPropelMigrationsLightPlugin | 1.1.2 | symfony | Web PHP Framework
http://www.symfony-project.org/plugins/sfPropelMigrationsLightPlugin
こんなのもあるようです。Rails の Migration と同じなのかしら。
0650nobodyさん
2009/02/18(水) 21:51:22ID:???$c =new Criteria();
$c->add(TJobPeer::ID,
"(t_job.ID IN ( SELECT v_rel_job_area.JOB_ID FROM v_rel_job_area WHERE v_rel_job_area.DISTRICT_ID = 1 ))
AND
(t_job.ID IN ( SELECT t_rel_job_category.JOB_ID FROM t_rel_job_category WHERE t_rel_job_category.CATEGORY_ID IN (1, 5, 6) ))
AND
( (t_job.STATUS IN (1, 2)) OR (t_job.STATUS = 0 AND t_job.ID IN ( SELECT t_rel_job_publish.JOB_ID FROM t_rel_job_publish WHERE t_rel_job_publish.PUBLISH_ID = 1)) )
", Criteria::CUSTOM);
$rs = TJobPeer::doSelect($c);
0651nobodyさん
2009/02/19(木) 20:08:27ID:???Propelなら、モデルのsaveメソッドを呼び出した後、単にgetすればOK。
Doctrineは知らんw
0652nobodyさん
2009/02/24(火) 21:06:31ID:???symfony1.0の時はされたと思うんだけど、1.2からされなくなってるみたいで。
あと、1.2で実行したSQL文そのものって取得できますか?(1.0でのgetLastExecutedQueryのような)
0653nobodyさん
2009/02/24(火) 21:19:50ID:???SQL表示されるよ
symfonyどこにインストールしてるか知らんけど、pearから取ってきたのなら、
javascriptを有効にした上で、
data/symfony/web/sfに対して、仮想ディレクトリ(エイリアス)を作るか、
プロジェクトのwebフォルダにコピーすれば、いけるはず。
また、この情報は、実行したログを解析してるだけだろうから、ログ直接眺めてみたらいいんじゃない?
1.2から使い始めたので、getLastExecutedQueryとか分かんね。
これも、ログ見たらいいんじゃないの?としか言えない
0655nobodyさん
2009/02/25(水) 13:06:51ID:???>>654
database.ymlのclassnameをprodと同じにしてたのが原因だったみたいです。。
DebugPDOに変えたらSQL表示されました
getLastExecutedQueryはログがどうやってSQL取り出してるか探してみます
0656nobodyさん
2009/02/25(水) 13:11:42ID:???絶対実行とセットだから、サブクエリやろうとすると独自拡張に頼らざるを得ない
0657nobodyさん
2009/02/27(金) 14:01:43ID:???セッションIDをURLで埋め込むから出来ないよね?
0658nobodyさん
2009/02/28(土) 23:20:00ID:???0659nobodyさん
2009/03/03(火) 15:02:29ID:???$sql = BasePeer::createSelectSql($criteria, array());
0660nobodyさん
2009/03/10(火) 07:45:12ID:???あのさ、$c->add(ModelPeer::ID , 1);
とかやってごらん
idのとこが?になってるだろ?
?を置換する独自拡張が必要という意味だって思わなかった?
あと、第二引数は参照になってるから、 array()なんてやっちゃ駄目だよ。
勉強になったかな?
0661nobodyさん
2009/03/11(水) 06:50:03ID:???不具合があっても画面真っ白でエラーも表示されないってことない?
レスポンスが情報吐く前にコケてるのか知らないけど
この状態になるとすげーデバッグしにくい。
高度にレスポンス管理するのも考えものだよなぁ
0662nobodyさん
2009/03/11(水) 08:53:10ID:???Apacheのエラーログ見たら
PHPレベルのFatalエラー吐かれてない?
dev環境だけ表示される場合もあるし、
/var/log/messagesかも。
0663nobodyさん
2009/03/11(水) 09:09:27ID:???apacheログのこと忘れてた!と思って見たら
exit signal Segmentation faultが大量に・・
調べたらxdebugの設定ミスだった
助かりました。ありがとう!
0664nobodyさん
2009/03/13(金) 13:57:23ID:???なにから勉強すればいいのかわかりません。
定番のチュートリアルなどあるのでしょうか?
いくつか見つけたのですが、バージョンが古いようで・・・
主にsfFormの使い方とデータの登録・取得、ログイン処理などを覚えたいのですが・・・
0665nobodyさん
2009/03/13(金) 14:29:07ID:???symfony 1.2ならJobeet
http://www.symfony-project.org/jobeet/1_2/
11日目までは日本語訳されてる。
http://d.hatena.ne.jp/Kiske/archive?word=jobeet
なんと12日目も公開されてた。感謝。
ログイン周りは13日目かな。
0666664
2009/03/14(土) 00:20:34ID:???1.2向けのチュートリアルが始まっていたのですね!
翻訳してくれている方もいるとは・・・
さっそく試してみたいと思います!
0668664
2009/03/14(土) 03:16:17ID:???Cakeは標準でコンポーネントなどが充実していて便利なのですが、
それらのクセが強くて、
ちょっと外れたことをしようとするとえらい面倒で・・・
とくにAuthコンポーネントやSecurityコンポーネントなど。
また、Cakeで作られたサイトは、
だいたい、ちょっと見ただけですぐCakeで作られていると分かります。
それくらいクセが強いです。
うまくいえませんが、こんなかんじです。
0669nobodyさん
2009/03/14(土) 09:25:05ID:???キャッシュ機能を使って、任意の文字列をキャッシュしたいのですが、
どのようにすればよいのでしょうか?
分かる方がいましたら教えてください!
0670nobodyさん
2009/03/14(土) 15:43:13ID:???fillin がうまく動かないのですが、これはどこに問題があるのでしょうか?
○仕様:page/hoge → page/fuga に遷移
○actions.class.php
public function executeHoge() { $this->hoge = "ほげ"; }
public function executeFuga() { }
public function handleErrorFuga() { $this->forward('page', 'hoge'); }
○hogeSuccess.php
<?php
echo form_tag('page/fuga');
echo $sf_request->getError('hoge');
echo input_tag('hoge', $sf_params->get('hoge'));
//echo input_tag('hoge', $sf_request->getParameter('hoge', $hoge));
?>
</form>
○fugaSuccess.php
<h1>おめでとう!</h1>
○validation/fuga.yml
fillin:
enabled: on
fields:
hoge:
sfStringValidator:
min: 3
min_error: "ほげは3字以上で入力してください。"
0671670
2009/03/14(土) 15:48:40ID:???○hogeSuccess.php
<?php
echo form_tag('page/fuga');
echo $sf_request->getError('hoge');
echo input_tag('hoge', $hoge); // 直した行。
//echo input_tag('hoge', $sf_request->getParameter('hoge', $hoge));
?>
</form>
うまく動かない、というのは、バリデーションが働いてhogeSuccess.phpを表示
したとき、ユーザの入力値ではなく、デフォルト値"ほげ"が表示されてしまう
ということです。
その下のコメントアウトした行のように書けば動きますが、この記述だと
fillin: enabled: off にしてもユーザの入力値になるので、fillinが働いてい
るとは言えないと思います。
なお、コメントアウトした行の記述が冗長なのは、以下の理由です。
○[symfony] テンプレートで使える$sf_params->get()の2番目の引数について
http://gomojp.blog77.fc2.com/blog-entry-54.html
以上です。どなたかアドバイスをお願いします。
0672670
2009/03/14(土) 16:11:20ID:???symfonyでhierselectができる!の補足(fillin時の手当) | LinuxなWEBデザイナーの覚書き。
http://php-sql-gdgd.jugem.jp/?eid=13
> fillinを受ける側のフォームは、各input_tag等のフォームヘルパー関数の引
> 数2つ目(デフォルト値を入れるところ)をnullにする。
> ※私は最初「''」を指定した状態でフィルインできませんでした。object系
> のフォームヘルパーを使ってDBからデフォルト値を持ってきてる場合はどう
> なるんだろう??今度実験してみよう…
たしかに、hogeSuccess.php を
echo input_tag('hoge', null); // さらに直した行。
と書くと、バリデーションが hogeSuccess.php に差し戻したとき、フォームに
ユーザの入力値が入っていました。fillinが動作したようです。
しかしこれでは、デフォルト値の設定ができなくて困ります。page/hoge では
$hogeの値である"ほげ"がフォームに入っていて、バリデーションが動作したと
きは、ユーザの入力値が表示されてほしいのです。
0673670
2009/03/14(土) 16:30:13ID:???試行錯誤して、
echo input_tag('hoge', null, array('value'=>$hoge));
と書いてみたら、希望していた通り、デフォルト値もユーザ入力値も表示され
ました。
しかしこれもかなり冗長なので、ためしに
echo input_tag('hoge', $hoge);
に戻したところ、今までと違って、問題なく表示されたのです。
なんで?!最初のコードと少しも変わらないのに?!
とりあえず動作はするようなので、このまま開発を進めることにします。
お騒がせして申し訳ありませんでした。
0674nobodyさん
2009/03/16(月) 15:50:44ID:???する方法は無いんだろうか?
二つのアクションがあって、大部分のフィールドは共通なんだけど、片方にだ
けいくつか追加フィールドがあるので、バリデーションの設定の大部分が共通
になる。うまくまとめられたらいいと思うんだけど。
0675674
2009/03/16(月) 16:50:44ID:???0677nobodyさん
2009/03/17(火) 10:32:44ID:???0678nobodyさん
2009/03/18(水) 16:33:36ID:???0679nobodyさん
2009/03/20(金) 20:30:44ID:bZdrj/Cj1.1以降でSymfonyをステートフルにするには、sfFormでCSRF対策フィールドを1リクエストごとにユニークにすればいいんだよね?
ソースを嘗めたらそんなに難しくなさそうな気がしたんだけど、何か勘違いしてるかな?
いや、「PHPのフレームワークでステートフルなのはPiece Frameworkだけ、なんて文章をちらりと読んだんでね。
もちろん、↑のやり方だと、sfFormで値を持ちまわしているところしかステートフルにならんのは理解してる。
Piece Frameworkのステートフル機能のウリは、getだろうと初回のpostだろうと(その気になれば)ステートフルに出来るってところなんだろうとは思うけど。
0680nobodyさん
2009/03/22(日) 04:10:40ID:???1.2使ってるんですが、フォームからunsetで消した項目に、
POSTされた際にアクション内で値をセットするにはどう書けばいいのでしょうか?
送信された値から別の値を生成してインサートする、みたいなことがやりたいです。
0681nobodyさん
2009/03/22(日) 18:32:07ID:???0682nobodyさん
2009/03/22(日) 22:34:47ID:XhaR9twF自分は1.1だが、そーゆーことやりたいときはbindする前の配列いぢくる。 一度validateしたいときは、
1.普通にbind
↓
2.NGならおしまい、OKなら値生成→配列に格納
↓
3.バリデータを置き換える
↓
4.もう一度bindしてvalidate
かな。まぁ、sfFomオーバーライドすればもう少しスマートに出来ると思うが。
>>681
だね。もう少ししっかりした、1.1/1.2対応の解説書は欲しい。
0683nobodyさん
2009/03/23(月) 21:55:16ID:???0684nobodyさん
2009/03/23(月) 22:14:03ID:???0685nobodyさん
2009/03/24(火) 07:21:18ID:???ほぼ全てとか何言ってるんだろこの人
0686nobodyさん
2009/03/24(火) 14:15:27ID:???symfony 1.0 の環境に、sfCSRFPluginを導入して利用しようとしているのです
が、うまく動作しないのです。
sfCSRFPlugin - symfony-doc-ja - CSRF対策用プラグイン - Google Code
http://code.google.com/p/symfony-doc-ja/wiki/sfCSRFPlugin
コードを見ると、METHOD=POSTの時だけ、トークンの値をチェックするようになっ
ているのですが、どういうわけか、このフィルタの中では、POSTの場合でも
GETだと認識されて($_SERVER['REQUEST_METHOD']が"GET"となる)、チェック
がいつも働かないのです。
このフィルタ以外の場所、例えばactionクラス等では、GETかPOSTかを正しく検
出できています。
どうにも原因が分からないのですが、どなたかアドバイスをいただけないでしょ
うか?
0687nobodyさん
2009/03/24(火) 18:45:26ID:???0688nobodyさん
2009/03/25(水) 11:35:03ID:???0689nobodyさん
2009/03/25(水) 13:42:58ID:???書き込む前に確認しようよ。
自分がどれだけ恥ずかしいことを書いているかを。
2chだけでなく日常生活でも、寒いことを言っては
場を凍りつかせているんだろうね。
0690nobodyさん
2009/03/26(木) 11:33:19ID:???ことってできませんか?
0691nobodyさん
2009/03/26(木) 12:26:50ID:???0692nobodyさん
2009/03/26(木) 13:00:31ID:???0693690
2009/03/26(木) 13:08:38ID:???filters.ymlなどで設定する仕組みが、symfonyには用意されていないでしょうか?
>>691
後出しですみませんが、1.0限定でお願いします。
>>692
sfRequest::getMethod() ですね。
0694nobodyさん
2009/03/26(木) 13:11:39ID:???だっけな。なんかそんなのあったわ
0695690
2009/03/26(木) 13:21:03ID:???たぶんそれは、↓だと思うのですが、
メソッドへのバリデーションを制限する - 第10章 - フォーム
http://symfony.xrea.jp/1.0/book/10-Forms.html#restricting.the.validation.to.a.method
どのメソッドに対してバリデーションを実行するか、の設定であって、
POST以外を弾くという設定ではないみたいです。
やっぱりPHPコードを書かなきゃ駄目なのかな。
0696nobodyさん
2009/03/26(木) 13:37:01ID:???postしか許可しないactionを別に指定するブラックリスト方法は
何かの都合でaction名を途中で変えた場合に、
設定だけが残る可能性があるから疑問
0697nobodyさん
2009/03/26(木) 19:40:45ID:???0698nobodyさん
2009/03/28(土) 22:39:09ID:???0699nobodyさん
2009/03/29(日) 00:23:38ID:WiWw0VPXenvがdevでwebdebug trueでもどこにも出てる気配ないんだけど。
なんか最初のうちは1.1の時みたいにwebdebugに円柱のボタンがあった気もするんだけど・・・・
logにsfDoctrineLoggerっていうボタンはあるけどクエリーは何も出てない。
いろいろいじってるうちにおかしくなったのかな?
0701699
2009/03/29(日) 09:22:10ID:WiWw0VPXほうほうDebugPDOですか。
すんません、Doctrineの時はどうすればいいのでしょう?
paramかattributesになんか書くのでしょうか?
0702nobodyさん
2009/03/29(日) 11:32:28ID:???0703nobodyさん
2009/04/01(水) 00:43:45ID:???Z^Z^Z^みたいな。
何でですかね・・・。
0704nobodyさん
2009/04/01(水) 01:29:49ID:???0705nobodyさん
2009/04/01(水) 10:57:37ID:???DB2かぁ、動作報告あったっけ?
まずは propel db2 でgoogleじゃない?
あるいは doctrine db2 か。
0706nobodyさん
2009/04/01(水) 12:37:40ID:???0707nobodyさん
2009/04/01(水) 22:27:12ID:???Validator、Helperなどが
マルチバイトに対応していない事わかりまし。
ソースコードのマルチバイト対応情報が
あればおしえてぷりーず。
と書いたところで
1.2はマルチバイト対応済みじゃん・・・
くやしいのでそのまま投稿。
なんでバックポートしてないんだ。
0708nobodyさん
2009/04/03(金) 12:08:01ID:???ソース読んで勉強したいのですが・・・
0709nobodyさん
2009/04/03(金) 21:10:14ID:???0710nobodyさん
2009/04/04(土) 17:50:58ID:???0711nobodyさん
2009/04/21(火) 22:02:48ID:oOMQhPeYHttpじゃないMetaってあるの?
setMetaでよくね?
■ このスレッドは過去ログ倉庫に格納されています