のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,840人
昨日:no data人
今日:
最近の注目
人気の最安値情報

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

    元スレsymfony PHPフレームワークpart2

    php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    201 : nobodyさん - 2010/10/04(月) 17:08:59 ID:???.net (-1,-29,-5)
    継承元がBaseFormDoctrineだとmodelも必要になりそう。
    202 : nobodyさん - 2010/10/04(月) 17:35:35 ID:???.net (-1,-29,-29)
    BaseFormからextendして、DBに何か保存するならsaveメソッドの中で直接何か書きなはれ
    203 : nobodyさん - 2010/10/05(火) 18:10:52 ID:???.net (+13,-30,-306)
    sfValidatorSchemaCompare も sfValidatorEmail等 も、バリデート失敗時は「Invalid」が表示されますよね。
    普通は国際化して、「入力が正しくありません」などに変えると思います。
    新規登録画面でパスワードを2回入力させて、そのチェックに sfValidatorSchemaCompare を使っているので、
    失敗時には「入力が正しくありません」じゃなくて「パスワードが一致しません」にしたいんです。
    なんとかエラーメッセージを区別できないもんでしょうか?

    ソースを見た感じ、"throw_global_error"オプションを設定して、自分でcatchしてハンドリングすればできそうな気もしているのですが
    どこでどうハンドリングすればいいのか分かりません。
    sfValidatorSchemaCompare.class.phpの117行目の「$error = new sfValidatorError($this, 'invalid', 」の
    'invalid'を書き換えればひとまず対処できますが、sfValidatorSchemaCompare を他の用途で使うときに
    適切でないエラーメッセージになってしまうので、ソースを直接いじるのは遠慮したいです。

    どのように対処すればよいでしょうか?
    204 : 203 - 2010/10/05(火) 18:40:45 ID:???.net (-1,-29,-23)
    コンストラクタの$messageで変更できました。
    長々と失礼しました。
    205 : nobodyさん - 2010/10/06(水) 15:21:59 ID:???.net (+43,+20,-18)
    コアを書き換えるなよ・・・
    206 : nobodyさん - 2010/10/07(木) 10:02:16 ID:???.net (+48,-29,-30)
    今更知ったけど、netbeansってsymfony対応してたんだな

    http://netbeans.org/features/php/index_ja.html
    /nox/remoteimages/8e/2e/41ed52dcb60daa903ccd77662d63.png
    208 : nobodyさん - 2010/10/08(金) 20:09:07 ID:vQ/FE4Nt.net (-15,+29,-105)
    Eclipseでやると、別窓でコマンド叩く用のシェルと自前のチートシートをエディタで開いてないとダメで、
    スキーマ書き換えると、lib下やらをリフレッシュしないといけないから
    毎度毎度面倒なんだよね。
    209 : nobodyさん - 2010/10/08(金) 23:30:00 ID:???.net (-1,-29,-7)
    コマンドはExternal Toolsでいいだろ
    210 : nobodyさん - 2010/10/09(土) 01:22:13 ID:???.net (+7,-30,-161)
    ExternalToolsはリフレッシュもしてくれるんだねぇ。便利。
    php symfony doctrine:build --all --and-load --no-confirmation
    php symfony doctrine:data-load
    php symfony cc
    このへんはいけるけど、
    symfony generate:module frontend hoge
    なんかは対応できないよね?
    スレチだけど。
    211 : nobodyさん - 2010/10/09(土) 08:43:14 ID:???.net (-1,-29,-1)
    >>210
    ${string_prompt}
    212 : nobodyさん - 2010/10/09(土) 16:33:33 ID:???.net (+45,+22,-3)
    便利すぎるだろ。。。
    213 : nobodyさん - 2010/10/10(日) 04:23:44 ID:???.net (-1,-29,-32)
    自前で簡易キャッシュ機構作りたいんですけど、
    レイアウト有り/無しのhtmlをファイルに保存するにはどうしたらいいですか?
    wgetで取って保存、ってのは無しでお願いします。
    214 : nobodyさん - 2010/10/10(日) 10:25:22 ID:???.net (+57,+29,-4)
    それは自前で作るじゃなくて作ってもらうって言うんだ
    215 : nobodyさん - 2010/10/10(日) 17:54:56 ID:???.net (+57,+29,-14)
    いや、ヒントだけでよかったんだよ。
    いま開発環境ないPCだけど、Renderフィルター覗けばなんか分かりそうな気がしてきた。
    216 : nobodyさん - 2010/10/10(日) 19:46:16 ID:???.net (-1,-29,-30)
    forward404Unless()で404エラーページに飛んだとき、
    prod環境でも第2引数を画面に表示するにはどうすればいい?
    217 : nobodyさん - 2010/10/10(日) 21:13:44 ID:???.net (+13,-30,-72)
    初心者ですいません。
    Table:
    columns:
    id:
    name:
    のように定義した状態で、
    executeCreate内でnameフォームの値を取得するのに「$request->getParameter('name')」や「$form['name']->getValue()」
    としてみたのですが、値が取得できません。
    フォームの値を取り出すにはどのようにやればいいのでしょうか?
    218 : 217 - 2010/10/10(日) 22:15:33 ID:???.net (+3,-30,-38)
    $requestArray = $request->getParameter($form->getName());
    $requestArray['name']

    で取得できたんですけど、毎回こうやらないとダメなんでしょうか(汗)
    219 : nobodyさん - 2010/10/11(月) 00:09:02 ID:???.net (+3,-30,-92)
    leftJoin時のSQL発行回数について質問です。
    SQL1回の発行で済ませて欲しいのに、2回実行されているようです。
    なぜでしょうか?

    #schema.yml
    User:
     columns:
      id:
      name:
     Thread:
      local: id
      foreign: user_id
      type: many

    Thread:
     columns:
      id:
      user_id:
     relations:
      User:
       local: user_id
       foreign: id
       type: one

    220 : nobodyさん - 2010/10/11(月) 00:10:20 ID:???.net (+9,-30,-131)
    #action.class.php
    public function executeIndex(sfWebRequest $request)
    {
     $this->thread = Doctrine_Core::getTable('thread')
      ->createQuery('t')
      ->where('t.id',$request->getParameter('id'))
      ->leftJoin('t.User u')
      ->execute();
    }

    #indexSuccess.php
    お名前は<?php echo $thread->getUser()->getName() ?>

    似たような話題で、http://blog.asial.co.jp/591 も見てみたのですが、
    バージョン違いなのか全く動きませんでした。
    221 : nobodyさん - 2010/10/11(月) 01:17:59 ID:???.net (+4,-30,-159)
    >>220
     $this->thread = Doctrine_Core::getTable('thread')
      ->createQuery('t')
      ->where('t.id',$request->getParameter('id'))
      ->leftJoin('t.User u')
      ->execute();

     $this->thread = Doctrine_Core::getTable('thread')
      ->createQuery('t')
      ->where('t.id = ?',$request->getParameter('id'))
      ->leftJoin('t.User u')
      ->fetchOne();

    に変えたらどう?
    222 : nobodyさん - 2010/10/11(月) 02:17:36 ID:???.net (+3,-30,-104)
    fetchOne()に変えて、$thread['User']['name'] で取得できました!
    SQLも新しく発行されていないようです。
    ただ、$thread->getId() の構文が使えなくて $thread['id'] に全部書き換えないといけませんけど><
    223 : nobodyさん - 2010/10/11(月) 02:55:20 ID:???.net (-1,-29,-27)
    サンプルに合わせて言い方変えちゃいましたけど、
    実際はfetchArray()で取得して、foreach()でループさせました。
    とりあえずうまく行ったようです。
    224 : nobodyさん - 2010/10/11(月) 20:37:48 ID:???.net (+2,-30,-53)
    $form->isValid()に失敗したとき、失敗の内容はどうやって取得できますか?

    具体的には、CSRFチェックに引っかかったとき、自動的にhoge/newにリダイレクトさせたいんです。
    225 : nobodyさん - 2010/10/12(火) 00:52:35 ID:???.net (-1,-29,-9)
    >>224
    sfErrorSchemaにでも、入ってるんじゃないの?

    $form->getErrorSchema()だったかな?
    226 : nobodyさん - 2010/10/13(水) 20:37:10 ID:???.net (+52,+20,-20)
    特定のユーザーを、強制ログアウトさせるにはどうすればいいですか?
    227 : nobodyさん - 2010/10/14(木) 10:37:08 ID:???.net (+11,-29,-50)
    >>226
    myUserの初期化メソッドで通常の処理の後にIDみて強制ログアウトする処理を足す。
    228 : nobodyさん - 2010/10/14(木) 17:05:40 ID:???.net (+11,-29,-122)
    >>227
    すいません、そうゆう意味じゃないです。
    たとえば、管理者が荒らし行為真っ最中のユーザーを見つけたら、
    そいつのセッションやらクレデンシャルやらをクリアしてログアウトさせることをイメージしてました。

    セッションにユーザーIDを入れておき、
    全セッションファイルをトラバースして、
    「id|i:(\d)+:123;」みたいにマッチしたファイルを削除すればいいかな?
    symfony関係なくなっちゃうけど。。。
    229 : nobodyさん - 2010/10/14(木) 17:34:03 ID:???.net (+13,-30,-309)
    Doctrineで書いたコードの、selectがうまく反映されません。
    count()をやめて、execute()にして返ってきたDoctrineCorectionをcount()すると正しい件数が取得できます。
    でも重いので、SQLのcount()でなんとか処理したいです。

    public static function getLoginDays($id)
    {
     return LoginTable::getInstance()
      ->createQuery('l')
      ->select('DATE_FORMAT(l.created_at,"%Y-%m-%d") as days, count(*) as num')
      ->where('l.user_id = ?',$id)
      ->groupBy('DATE_FORMAT(l.created_at,"%Y-%m-%d")')
      ->orderBy('days')
      ->count();
    }

    #symfonyが発行したSQL
    SELECT COUNT(*) AS num_results FROM log l WHERE l.user_id = '1' GROUP BY DATE_FORMAT(l.created_at, "%Y-%m-%d");

    結果、日付の区別無しに、ログの総数が返ります。
    230 : nobodyさん - 2010/10/14(木) 17:44:03 ID:???.net (-2,-30,-27)
    恥ずかしいミスした!
    DoctrineCorectionは、DoctrineCollectionの間違いでした^^;
    231 : nobodyさん - 2010/10/14(木) 19:07:30 ID:???.net (+14,-30,-139)
    >>228
    それならis_active int(1)とかでフラグ項目をDBのユーザーテーブルに持たせておいて、公開側では
    myUserの初期化で$dbuser->getIsActive()の値を調べて強制ログアウトさせればいいんじゃない?
    強制ログアウトさせたいユーザーは、管理者が裏画面からis_activeの値を更新して強制ログアウト側に
    落とす。

    username password is_active
    232 : 231 - 2010/10/14(木) 19:08:38 ID:???.net (-2,-30,-41)
    ごめん、途中送信。

    username password is_active
    testuser ****** 1     ⇒ログインできる
    nguser ****** 0     ⇒ログインできない&強制ログアウト
    233 : nobodyさん - 2010/10/14(木) 20:07:47 ID:???.net (+55,+27,-5)
    myUserにコンストラクタ定義すると、深い迷路に迷い込めそうな予感。。。
    234 : 229 - 2010/10/15(金) 17:53:24 ID:???.net (+58,+30,-34)
    ちょっと語弊がありました。
    グループ化された日付が1つだけの場合、グループ化されていないままのレコード総数が返ります。
    日付が複数の場合、正しい値が返ります。
    235 : nobodyさん - 2010/10/15(金) 17:59:07 ID:???.net (+3,-30,-187)
    分かったら当たり前だけど、myUserのコンストラクタは

     public function __construct(sfEventDispatcher $dispatcher, sfStorage $storage, $options = array())
     {
      parent::__construct($dispatcher, $storage, $options);
     }

    って書かないとダメなのね。__construct()とだけ書いてちょっと泥沼になった。
    236 : nobodyさん - 2010/10/15(金) 18:25:07 ID:???.net (+2,-29,-34)
    テンプレート内でvar_dump()すると、指定した変数以外もすんごい量がダンプされるんですけど
    $thisとかも見に行ってるんですか??
    237 : nobodyさん - 2010/10/15(金) 21:08:43 ID:???.net (-1,-29,-38)
    >>236
    変数といってもDoctrine_Recordのオブジェクトが入ってる変数だったらものすごい量でて当たり前。
    240 : nobodyさん - 2010/10/18(月) 18:21:55 ID:???.net (+52,+29,-17)
    >>239
    認証とセッションデータをごっちゃにするなよ
    245 : 239 - 2010/10/21(木) 01:56:28 ID:???.net (+53,+25,-20)
    認証情報はセッションに入ってるものだと思ってました。
    認証情報はどこに保存されているんでしょう??
    247 : nobodyさん - 2010/11/06(土) 13:24:52 ID:???.net (+39,+11,-4)
    問題があるとしたらファイル名に「'」を使ってることかな
    248 : nobodyさん - 2010/11/07(日) 05:37:42 ID:???.net (+28,+0,-14)
    php初心者というかパソコン初心者レベルだな
    249 : nobodyさん - 2010/11/08(月) 03:03:57 ID:???.net (+3,-30,-121)
    セッション(認証?)が30分程度で切れてしまいます。
    以下の設定だけでは、変更できないんでしょうか?

    #.htaccess
    php_value session.gc_maxlifetime 86400
    php_value session.gc_probability 1
    php_value session.gc_divisor 100

    #setting.yml
    all:
    user:
    class: myUser
    param:
    timeout: 86400
    250 : nobodyさん - 2010/11/08(月) 20:05:11 ID:???.net (-2,-30,-38)
    factories.ymlに書くんだと思う

    user:
    class: myUser
    param:
    timeout: 86400

    こんな感じ
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / php スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について