元スレ【PHP】フレームワーク CakePHP 10ホール目【v1.3】
php覧 / PC版 /みんなの評価 :
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関数だっけ?で消せるんじゃないの?
つーかやってみろよ
みんなの評価 :
類似してるかもしれないスレッド
- 【PHP】フレームワーク CakePHP 11ホール目【v1.3】 (1001) - [98%] - 2011/6/30 22:32
- 【PHP】フレームワーク CakePHP 19ホール目【v3.3】 (844) - [96%] - 2023/2/2 14:30
- 【PHP】フレームワーク CakePHP 9ホール目【v1.3】 (1001) - [96%] - 2010/11/1 2:53
- 【PHP】フレームワーク CakePHP 15ホール目【v2.2】 (985) - [95%] - 2013/9/7 8:30
- 【PHP】フレームワーク CakePHP 13ホール目【v2.0】 (995) - [95%] - 2012/4/23 21:16 ○
- 【PHP】フレームワーク CakePHP 17ホール目【v2.4】 (984) - [95%] - 2015/1/10 2:45
- 【PHP】フレームワーク CakePHP 16ホール目【v2.4】 (1001) - [95%] - 2014/3/3 3:00
- 【PHP】フレームワーク CakePHP 14ホール目【v2.1】 (1001) - [95%] - 2012/12/3 19:16
- 【PHP】フレームワーク CakePHP 8ホール目【1.3】 (1001) - [95%] - 2010/7/22 22:16
- 【PHP】フレームワーク CakePHP 17ホール目【v3α】 (955) - [93%] - 2016/11/15 20:45
- 【PHP】フレームワーク CakePHP 5ホール目【v1.2】 (985) - [92%] - 2009/3/7 4:53 ☆
- 【PHP】フレームワーク CakePHP 6ホール目【v1.2】 (933) - [92%] - 2009/8/19 2:06 ○
- 【PHP】フレームワーク CakePHP 7ホール目【v1.2】 (1001) - [92%] - 2010/3/18 1:18 ○
- 【PHP】フレームワーク CakePHP 4ホール目【v1.2】 (1001) - [92%] - 2008/12/19 21:06 ○
- 【PHP】フレームワーク CakePHP 12ホール目【笑】 (1001) - [92%] - 2011/11/8 7:01
- 【PHP】フレームワーク CakePHP 3ホール目【本命】 (1001) - [84%] - 2008/6/19 7:19 ○
トップメニューへ / →のくす牧場書庫について