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

    元スレ【PHP】フレームワーク CakePHP 10ホール目【v1.3】

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

    601 = :

    何言いたいのかわからんけど
    フレームワーク使ってるとそれと同じような事やってるじゃん
    モデル、コントローラでぐるぐるデータ回して、
    最後にビューでも回してるよ

    602 = :

    >>601
    説明不足ですまん。

    $list = $this->Member->find('all');
    $output_list = array();
    foreach ($list as $i => $col) {
     $output_list[$i] = $col;
     $output_list[$i]['Member']['body'] = nl2br($col['Member']['body']);

     if ($col['Member']['image'] != "") {
      $output_list[$i]['Member']['image_url'] = Router::url('/img/') . $col['Member']['image'];
     }
    }

    みたいなことをコントローラーでやって、
    ビューでは最小限のコードでforeachして出力するってこと。

    604 = :

    >>602
    それちょっといじりたいときにコントローラ弄らなくちゃダメじゃない?って思ったら>>600に書いてあったw
    フレームワーク使ってる場合はどっちみちビューでforeachするから$listの時点で十分扱いやすい形になってるなと思う

    605 = :

    >>604
    そもそもの話のネタが「デザイナーにテンプレいじらせるのって無理じゃない?」
    って事だからね。ビューに手を加えるよりも、コントローラーに手を加える方が
    プログラマーとしてはやりやすいし、デザイン変更も対応しやすいから。
    ま、MVCに反するから今は>>602みたいに書いてないけどね。

    606 = :

    お問い合わせフォームのメールアドレスに
    空白入れて送信される場合があるんだけど、save前に

    $this->data['Inquiry']['email'] = trim($this->data['Inquiry']['email']);

    ってする以外にお手軽な方法無いですかね?

    608 = :

    つまりjQueryで対処するんですね。
    Cakeのモデル処理で出来るかな?と思ったのですが、
    >>606みたいなやり方以外無さそうですね。

    609 = :

    はぁ?
    なんでバリデーションしないの?
    アホなの?死ねよ屑が

    610 = :

    酷い言われようでワロタww

    611 = :

    >>606
    つ beforeValidate()

    612 = :

    は?
    beforeValidate?
    普通にバリデーションルール書けばいいだけだろうが
    アホしかいないのかよここは。

    613 = :

    適当に書いておけば顕示欲の強いバカが勝手に答えてくれるから楽で仕方ない
    >>609=>>612
    あざーっす^^^^

    614 = :

    何が起きてるんだ……

    615 = :

    trimで余計な空白消して対応しようってのがやろうとしてることじゃないのか?
    validationで弾いてどうすんだよ

    616 = :

    >>606 がなにをしたいのか書いて無いからなぁ。
    trim()使ってるところを見ると、半角スペースだけのデータになるのが嫌なのか、
    それともメールアドレスのカラムに半角スペースだけで問い合わせされるのがダメなのか、
    どっちなんだ。

    まぁ、コントローラーのbeforeFilter()でtrim()して、
    モデルのバリデートでrule => email, allowEmpty => false を使うのが良いと思うが。
    beforeFilter() ではちゃんとアクション名の確認や、$this->data['Inquiry']['email']の有無は調べてからな。

    618 = :

    お前な、サイト運営したこと無いのかよ。
    素人がスペース認識できずに「なんでエラーになるの!」って
    クレーム言ってくる場合があるんだよ。もう少し頭使えよ。

    620 = :

    emailの前後に空白入れられるってことか。
    Email欄に空白だけで登録してくるんだと思ってたわ
    だったらbeforeValidateでtrimでいいや
    そんなケース聞いたことないわ

    それかもう一個ルール追加してemailルール検査前に空白が入ってないか調べてそれ用のエラー文はく

    621 = :

    質問の内容に嘆くのは勝手だけどみっともないから黙っててほしいわ

    622 = :

    入力に対してtrim()は基本だろ。
    まぁ全角スペースもあるからほんとはもう一工夫必要だけど。

    623 = :

    >>616
    controllerで$this->dataをいじるとユーザーの入力値をいじることになるから
    なるべくmodelで対応したほうがトラブりにくい
    このケースはどっちでも良いけど
    でもなるべくmodelでやるべきことはmodelほうがベターかと

    624 = :

    >>623
    俺はコントローラーの仕事だと思うけどなぁ。
    もしかしたらコントローラーじゃないかもしれないけど、
    モデルだと遅いと思うんだが。
    コントローラー内でNULLバイト攻撃されないように、
    なるべく早い段階で、入力値からNULLなどを削るようにしてるんだ。
    trimは実はbeforeValidateと迷ったけど、
    まぁ似たような処理なのでついでにやってる感じ。
    コントローラーで入力値をいじるとトラブルになるかな?

    625 = :

    お知らせをトップページでは5件表示して「一覧」を押すと
    ページネーション出来る表示の仕方ってあると思います。

    自分はコントローラーのアクション毎に分けて
    function top_news() // トップページに表示させるお知らせ。find()で取得
    function news_list() // 「お知らせ一覧」ページで表示。paginate()で取得

    としているのですが、みなさんはどうしてますか?
    findでデータを取得するだけだから、1つの関数内にまとめて、
    件数で分岐したりしているのでしょうか?

    626 = :

    トップページはrequestActionで取得。キャッシュして
    一覧は普通にnews/indexで。

    627 = :

    >>626
    自分もトップページでrequestActionして取得しているのですが、
    その時、取得するアクションって>>625に書いたように分けていますよね?
    つまり、

    ■トップページの「お知らせ」箇所のビュー
    $list = $this->requestAction('/top/news');
    ■トップページ一覧
    コントローラーのfunction indexでpaginateしてデータを取得して、ビューに出力。

    628 = :

    ↑すみません、書き間違えました。

    ■トップページの「お知らせ」箇所のビュー
    $list = $this->requestAction('/top/news');
    ■お知らせ一覧
    Newsコントローラーのfunction indexでpaginateでデータを取得して、ビューに出力。

    630 = :

    あ、indexとは分けてるよ

    function indexはほぼbakeしたままを
    requestAction用には別のメソッドつくってそこでpaginateしてる

    てか、本当はindex()アクションで
    if ($this->params['requested']) {
    return $this->paginate();
    }
    ってやるのがベストかな

    631 = :

    ああ、627さんの言ってる意味がわかりました。
    トップページの一覧では
    $list = $this->requestAction('/news/index/limit:3');
    みたいにするんですね。fieldの指定を変えたい場合は、ifで分岐させると。

    自分はトップページならTopコントローラーですべてをまとめていたのですが、
    やり方が間違っていたようです。参考になりました。ありがとうございます。

    632 = :

    そうそう。

    あと>>630はたぶんエラーでるな
    if ($this->params['requested']) {

    if (!empty($this->params['requested'])) {
    こうじゃないとrequestActionじゃないときにエラー吐くと思うわ

    634 = :

    うん。設計しなおせ

    635 = :

    ぐぐったら必ず1.2の情報ばかり出てくるのにいい加減ムカついてきた
    今みんな1.3使ってるのではないの?

    636 = :

    互換な点が多いから、わざわざ1.3で書き直してないだけ。1.2の情報はほとんど使える。

    637 = :

    素朴な疑問だけど、ポータルサイト(例えばトピックイットみたいな)
    の場合のキャッシュってどういう考え方したらいいの?

    動的サイトだから定期的に表示される内容が変わるよね?
    だからビューキャッシュしても意味ない気がするんだが。
    「○○一覧」とか出来るだけ動的ではない箇所をelementキャッシュするとか?

    自分の認識が間違っていると思うので、どなたか駄目出ししてください。

    638 = :

    更新処理は知ったら消せばいいと思ったりしないのか?お前の脳みそは

    639 = :

    ビューじゃなくてデータをキャッシュするのは駄目なん?

    640 = :

    データというかモデル

    641 = :

    モデルキャッシュは良いですね。
    ポータルサイトの場合、ログインして表示・非表示と切り替えることは多いし。

    と言うわけでモデルキャッシュのやり方を調べます。

    642 = :

    ビヘイビア誰か作ってるよ
    てかモデルのキャッシュならmysqlのqueryCache有効にしたらほとんど恩恵なくない?

    643 = :

    レンサバだとMySQLの設定はほとんど触れないからね

    648 = :

    appを管理用と公開用とで分けてるんだけど、
    管理画面で更新したら、公開用のキャッシュを削除したり出来る?
    やっぱ、普通にulink(キャッシュまでのパス) 書くしかないの?

    650 = :

    app_controllerわけてるだけならキャッシュの場所同じじゃないの?
    cacheClear関数だっけ?で消せるんじゃないの?
    つーかやってみろよ


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

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


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