トップページphp
1001コメント305KB

【PHP】フレームワーク CakePHP 8ホール目【1.3】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/03/18(木) 10:00:59ID:6+kHM8kH
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※sage推奨
テンプレは>>1-5くらい

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0373nobodyさん2010/05/14(金) 13:58:58ID:???
サニタイズってもSQLインジェクション対策の部分とXSS対策の部分があるから
なんでもかんでもエスケープだのタグを無効化だのしとけばいいってわけじゃない。
データをDBに出し入れする時とビューで表示させる時で分けて考えれば良いよ。
0374nobodyさん2010/05/14(金) 16:21:59ID:???
>>372
sageはメール欄にな
0375nobodyさん2010/05/14(金) 16:28:01ID:???
つか1.3はどんな機能が拡張されていくんだろうかな…

出て早々だが、バージョンアップが楽しみだ
0376nobodyさん2010/05/14(金) 18:08:01ID:???
1.3の中では正直機能追加してほしくない・・・
0377nobodyさん2010/05/15(土) 07:54:07ID:???
>>375
え?
0378nobodyさん2010/05/16(日) 05:54:58ID:???
下記サイトの記述に従って、PaginateをModel中で上書きしたところ、Viewで、
”Undefined variable: paginator”と出るようになってしまいました。

どうすれば、View中で$paginatorを取得する事ができるでしょうか。

http://book.cakephp.org/ja/compare/249/Custom-Query-Pagination


model/group.php:
 class Group extends AppModel
 {
    function paginate($conditions=null, $fields=NULL, $order=NULL, $limit=20, $page = 1, $recursive = null, $extra = array()) {
       $conditions = array("Group.id" => "1");
       
       return $this->find('all', compact('conditions', 'fields', 'order', 'limit', 'page', 'recursive'));
    }   

    (以下略)
 }


views/group/index.ctp:
 <?php echo $paginator->prev('< 戻る', array('class'=>'effectived'), null, array('class'=>'disabled')); ?>
 (以下略)


エラーメッセージ: ”Undefined variable: paginator [APP/views/group/index.ctp, line **”
0379nobodyさん2010/05/16(日) 07:57:11ID:???
コントローラーでPagenatorHelper読み込んでないとかじゃないよな
0380nobodyさん2010/05/16(日) 11:43:49ID:???
あと paginate メソッドもいろいろと間違っていると思う
が、modelの中で上書きは関係ないから、まずは>>379あたりからひとつひとつチェックしていくべし
0381nobodyさん2010/05/17(月) 23:13:07ID:???
ひとつのビューに複数ボタンを設置して、押されたボタンによって処理を分けたいのですが、
押されたボタンの名前が入る変数はdataで良いのでしょうか?

<input type="submit" value="登録" name="toroku" />
を押した場合、どの変数にどの様に格納されるのか教えてください。
0382nobodyさん2010/05/18(火) 01:58:05ID:???
>>381
var_dump()なり、pr()なり、debug()なりする。
そんなもん、いちいち聞くな。

自分で実行したもんは、血となり肉と成る。
0383nobodyさん2010/05/20(木) 12:42:48ID:???
http://pc11.2ch.net/test/read.cgi/php/1240977569/
381の様なのが多いからだよな
0384nobodyさん2010/05/21(金) 09:47:01ID:???
突然、あるコントローラのアクションが2回呼ばれるようになっちゃった
今は問題の切り分けのために、アクションの中身はfile_get_contentsで文字列書き込んでるだけのシンプルな形。
なぜかわかる人、教えてください・・・
0385nobodyさん2010/05/21(金) 10:01:20ID:???
>>384
バージョンは?
0386nobodyさん2010/05/21(金) 10:12:08ID:???
>>384
2回呼ばれるというのは何をもって言ってるの?
アクションの先頭でdebug()おいて二回表示されるとか?
たんにfile_get_contents()が二回されてるだけ?
0387nobodyさん2010/05/21(金) 10:32:14ID:2DyunNSv
>>385
1.2.6です

>>386
$text = file_get_contents('test.txt');
$text .= 'a';
file_put_contents('test.txt', $text);

アクションの中身はこうなってて、1回叩くだけでtest.txtの中身が「aa」になっちゃいます・・・
0388nobodyさん2010/05/21(金) 10:52:26ID:???
>>387
debug( file_get_contents('test.txt') );
file_put_contents('test.txt', date() ,FILE_APPEND);

で、問題を切り分けてみたら?
03893872010/05/21(金) 12:42:28ID:2DyunNSv
>>388
今出先なので後で試してみます
0390nobodyさん2010/05/21(金) 19:30:09ID:???
必要なのはまずdebuggerの環境だとおもうけど。
0391nobodyさん2010/05/21(金) 22:22:23ID:dGPdEg+u
LLのフレームワークは使用するのに
どうしても多量のバッドノウハウが必要になるからな・・・
0392nobodyさん2010/05/22(土) 00:43:25ID:???
バッドノウハウが必要ないFWって?
0393nobodyさん2010/05/22(土) 02:23:34ID:???
>392
皆が理想としてるFWじゃ?
0394nobodyさん2010/05/22(土) 10:58:36ID:???
あぁ、宗教の話か。
0395nobodyさん2010/05/22(土) 12:01:59ID:???
>>387
test.txtに"a"が入ってるなら

$text .= 'a';が .= になってるから結果が"aa"になるに決まってんじゃん
0396nobodyさん2010/05/22(土) 14:31:49ID:???
ひねくれ過ぎワロタw

バッドノウハウの総量の話だろw
0397nobodyさん2010/05/22(土) 15:08:38ID:???
cakeで普通に書いててバッドノウハウが必要なことなんかあるっけ?
0398nobodyさん2010/05/22(土) 15:38:56ID:???
うん、あり過ぎるね
しかも基本的な所にわんさと
慣れると不感症になるけどね
俺もそうだけどさ
0399nobodyさん2010/05/22(土) 16:13:48ID:???
>>398
例えば?
0400nobodyさん2010/05/22(土) 16:52:58ID:???
多過ぎていちいち列挙すんのめんどくせ
誰でも分かるほんの一例としては
バリデーション周りやらAuth周りやら
挿入周りにすらあるし
挙げ始めたらキリないって
0401nobodyさん2010/05/22(土) 18:45:35ID:???
>>400
例えばってんだから、ひとつ例を挙げればいいだろ。
それとも挙げられないのに、さもあるように言うnoobさんですか。
0402nobodyさん2010/05/22(土) 19:07:46ID:???
挙げた一例から
何がバッドノウハウに該当するか
自分で判断出来ないだけでしょw
0403nobodyさん2010/05/22(土) 19:11:39ID:???
まぁ、例えば?って聞いてる人に対する答えにはなってないわな
0404nobodyさん2010/05/22(土) 19:21:24ID:???
>誰でも分かるほんの一例としては
>バリデーション周りやらAuth周りやら
>挿入周りにすらあるし

これでピンとこない分からないレベルの奴に
いちいち手取り足取り指導なんてしませんよw
0405nobodyさん2010/05/22(土) 19:31:42ID:???
0406nobodyさん2010/05/22(土) 19:39:37ID:hO+yRnh4
bakeのおまじないとかあったしなw
0407nobodyさん2010/05/22(土) 20:16:03ID:???
>>404
手取り足取りとかピンと来る、という表現がnoobなんだよ。
0408nobodyさん2010/05/23(日) 00:17:55ID:???
あたしのためにケンカはやめて!
0409nobodyさん2010/05/23(日) 01:11:22ID:???
意味ないこと書きこむ暇があったらバッドノウハウの一例でも書きこめよ
0410nobodyさん2010/05/23(日) 01:21:00ID:???
必要なバッドノウハウって意味分からないんだが。
0411nobodyさん2010/05/23(日) 01:42:35ID:???
security componentとかかな。
0412nobodyさん2010/05/23(日) 02:39:02ID:???
うるせぇな。
空気嫁よ。
多すぎるって言ってるだろ。
0413nobodyさん2010/05/23(日) 09:03:16ID:???
ま、どんな言語、FWにもバッドノウハウはつきものだと思うよw
0414nobodyさん2010/05/23(日) 18:07:02ID:???
Cakeは実装部ソース見ないといけないとかごくごく普通だしね
阿藤快もなんだかなあって言ってたよw
0415nobodyさん2010/05/23(日) 20:33:53ID:???
バッドノウハウの定義って何だっけ?
ORマッパーのGROUP BYとか、そのへんも含まれる?
0416nobodyさん2010/05/24(月) 00:37:05ID:???
つーか、オフコン、クラサバVB、java 黎明期、struts+spring全盛、RoR & Cakeと
渡り歩いてきた爺さんとしてはCakeのソースが一番汚なくて、パッと見判別がつかねぇな。

クラサバはなんちゃってPGが溢れた時期でソース自体が汚くて見る気が起きなかったし、
javaも似たようなもんだが、Cakeはなんつーか、ほんとにこんな方向に発展したかったん
だろうか、と素朴に思うよ。

まぁspringのxml見たいに、書いてるxmlが本当に意味があるんだろうか、という異次元の
悩みよりはマシだが、ちょっとそのproject離れるとCakeは一から追わんとワカランな。
0417nobodyさん2010/05/24(月) 00:39:55ID:???
つか単にPHPが一番汚く書けるってだけじゃねえのオッサン
0418nobodyさん2010/05/24(月) 00:40:28ID:???
汚いってのはお前らのコードが汚いってわけじゃなくて、コードパターンが
なんつーかとにかく汚い、arrayと->の洪水ってか、xml hellに似てるよ。
0419nobodyさん2010/05/24(月) 00:44:43ID:???
おっさんからみてRoRはどう?

配列地獄を使わないPHP FWとかはどう?(これでも->からは逃れられないか)
そうなってくるとCakeっつうよりPHPの言語仕様の問題になってくるな
0420nobodyさん2010/05/24(月) 01:03:14ID:???
Quercusとかあるし
フレームワークもJavaVMで書く方向になればいいのに。
PHP以外の好きな言語で書けるし、
ライブラリやエンタープライズ向けの環境も自動的についてくる。
0421nobodyさん2010/05/25(火) 08:40:56ID:???
言語が使えるってだけで、その言語のライブラリが全て動作するかっていったら
結構動かないからな。

独特の挙動も多いし厄介。

0422nobodyさん2010/05/25(火) 18:49:36ID:kFSX6Hgc
formヘルパーで
メールアドレス[ ] (name属性はemail)
メールアドレス(確認)[   ](name属性はemail_confirm)
みたいなのを作ったんですが
email_confirmのバリデーションで
'rule' => array('equalTo', $email )としたいのですが可能ですか?
マニュアル見ても本見ても変数使ってるところがなくて悩んでます。
バージョンは1.3です。

0423nobodyさん2010/05/25(火) 19:18:13ID:???
>>422
sageてー

その位置に変数使えないでしょ?
独自バリデーションを作ればOK

便利系validationをみつくろってプラグイン化してくれている人がいるから、探すもよしだな
0424nobodyさん2010/05/25(火) 19:21:50ID:???
お、すいません。
了解です!ありがとうございます。
0425nobodyさん2010/05/25(火) 19:30:13ID:???
結局コントローラでバリデーションの定義しました。
汚いですが…
0426nobodyさん2010/05/25(火) 20:51:59ID:???
今からCakePHP始めるなら1.3がいいですかね?
0427nobodyさん2010/05/25(火) 20:57:46ID:???
なんで?
0428nobodyさん2010/05/25(火) 21:03:08ID:???
便利な機能がありそうだからって感じじゃないかな
でも不具合も多そうだし、これから触るのであれば安定版使うほうがいいだろJK
04294262010/05/25(火) 21:41:26ID:???
1.3.0も安定版って書いてあったんで^^
0430nobodyさん2010/05/25(火) 21:49:24ID:???
マジで
0431nobodyさん2010/05/25(火) 22:19:42ID:???
俺は語尾が好きな数字のモノを使ってるよ
0432nobodyさん2010/05/25(火) 22:33:17ID:???
す スイーツきた!
0433nobodyさん2010/05/26(水) 15:07:53ID:3pytNVWj
Var.1.3で、"app/plugins/プラグイン名/views/layouts"内の、
レイアウト使うにはどうすれば良いですか?
Ver.1.2なら、"app/views/layouts"内のレイアウトより優先的に使えてたのですが。
0434nobodyさん2010/05/26(水) 15:51:21ID:???
>>433
1.2と同じようにプラグインの中のレイアウトを読んでくれてるけど、うまくいかない?
04354332010/05/26(水) 16:02:21ID:???
>>434
すいません勘違いしておりました。
ありがとうございました。
0436nobodyさん2010/05/27(木) 03:36:15ID:cH14ywiE
Cake初心者でbake使ったことないけど、
Bakeって使えるの??
0437nobodyさん2010/05/27(木) 03:37:34ID:cH14ywiE
あ、あとCake使えるようになったら、他のPHPフレームワークもスグ理解できる
ようになるかな?
0438nobodyさん2010/05/27(木) 13:07:13ID:???
あなた次第だね
0439nobodyさん2010/05/27(木) 18:36:08ID:???
Cakeの勉強会楽しそうだなぁ
0440nobodyさん2010/05/28(金) 00:34:38ID:???
Cakeの.htaccess設定って本買って勉強するような技術?
公開鯖に上げられないんだけど。
0441nobodyさん2010/05/28(金) 01:16:27ID:???
>>440
いいえ。
0442nobodyさん2010/05/28(金) 01:36:12ID:???
勉強会行く人いる?
このスレの住人と会えたらいいなーと思ってるけど。
0443nobodyさん2010/05/28(金) 08:59:16ID:???
>>442
行くよ
0444nobodyさん2010/05/28(金) 11:24:16ID:???
いくら?
0445nobodyさん2010/05/28(金) 13:17:03ID:???
cssファイル内で画像を設定するとき、例えば

background-image: url("/(アプリ名)/img/aaa.png");

などとしますが、上記のアプリ名の部分が変更された場合に自動で追従するには
どうすればいいものでしょうか?
04464452010/05/28(金) 13:43:33ID:???
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1776&forum=7

こんな感じのが一般ですかね??
0447nobodyさん2010/05/28(金) 14:15:22ID:???
>>445
1.2ならvendors、1.3ならpluginsに入れてしまう。という手もあると思う。
0448nobodyさん2010/05/28(金) 14:18:04ID:???
app::importしてviewに表示ってことですか?
0449nobodyさん2010/05/28(金) 17:04:27ID:???
>>445
background-image: url("/app/webroot/img/aaa.png");

でいいじゃないの
0450nobodyさん2010/05/28(金) 22:05:07ID:???
オープンになっているプラグインの一覧ってどっかない?
0451nobodyさん2010/05/29(土) 14:01:50ID:???
>>449
CakePHPってこんなことまでできるんですか??
0452nobodyさん2010/05/29(土) 14:14:23ID:???
> 445
俺だったらシンボリックリンク使うかな。
0453nobodyさん2010/05/29(土) 14:34:13ID:???
>>542 ftpのみの環境だと無理だろ
0454nobodyさん2010/05/29(土) 18:00:38ID:???
>>542に期待
0455nobodyさん2010/05/30(日) 08:02:11ID:???
>>542 モデルに書いた方が後でごちゃごちゃしないのでオヌヌメ
0456nobodyさん2010/05/30(日) 15:07:32ID:???
質問です。
CAKEの本でなにか初めての人向けのお勧めの本ってありますか?
リファレンス的な本はCakePHP ポケットリファレンス買おうと思ってるのですが
探してみたんですがあまり評価のよろしくないものが多いので・・
おねがいーします。
0457nobodyさん2010/05/30(日) 15:27:57ID:???
>>456
CakePHP1.2ガイドブック
http://www.amazon.co.jp/dp/4839932468/
0458nobodyさん2010/05/30(日) 16:30:06ID:???
>>457

この本ってアマゾンの評価みてもわかりにくそうな印象が・・
大丈夫でしたか?
またサンプルもCDも付属なし、ダウンロードもできないっぽいですが・・
0459nobodyさん2010/05/30(日) 16:31:49ID:???
CakePHPは1.3がでてしまったからなー。
どの本も時代遅れさー。
0460nobodyさん2010/05/30(日) 16:33:16ID:???
俺はいろいろ本を買ったが、一番役に立ったのは「CakePHP ポケットリファレンス」だった
0461nobodyさん2010/05/30(日) 16:44:35ID:???
>>459
>>460

そうなんですよねー、1.3って1.2と比べて機能とかけっこう違いあります?

CakePHP ポケットリファレンスはamaの評価もよいしリファレンス本は必要なんで
買う予定なんですけど、他の本ってどれもイマイチ評価悪いんですよねー。。
457さんの本は値段も微妙に高いしちょっと買うのに躊躇が・・。
0462nobodyさん2010/05/30(日) 18:34:09ID:???
>>458
尼のコメには
>ソースコードは
http://github.com/yandod/cakephp-guidebook
http://cakephp.cba-japan.com/
>からどうぞ。
って書いてあるけど
0463nobodyさん2010/05/30(日) 20:53:48ID:???
ガイドブックは読みにくいけど内容は一番まともだと思う
さわりの部分をひととおりさらうにはいい
でもそんな目的のためにあの値段は高過ぎる・・・
半分の薄さで簡潔に書いてくれて半額のほうがいい本になって売れると思うけどなぁ
0464nobodyさん2010/05/30(日) 21:50:27ID:???
http://bakery.cakephp.org/articles/view/cakephp-1-3-1-now-with-delicious-sprinkles
0465nobodyさん2010/05/30(日) 22:49:56ID:???
ガイドブックはざっくり目を通すには悪い本ではないと思う
ただ誤植が多くて、サンプルがどのコードに対応するのか分かりにくい
手を動かして練習するには不向きな気がする
0466nobodyさん2010/05/30(日) 22:55:03ID:aCIlDOev
ショッピングカートの
注文部分みたいなのどうやって作ればいい?
カートの中身→住所入力→支払い方法入力→確認画面→完了みたいなの。

希望としては、URL直接入力でいきなり途中のページ、たとえば支払い方法入力
ページにいけたりしてほしくなく、決めたとおりの順序でしか
表示されないようにしたい。
だからURLは全部同じになるのかな?

でも可能なら、戻るや進むは理想どおりに動いてほしい。
これはURL同じじゃ実現は難しいのかな?

どうするのが一番いいんだろう。
別にCakePHP以外の話でもいいんだけど、
こういうところ、みんなどうやって作っているのか気になる
0467nobodyさん2010/05/30(日) 22:59:54ID:???
>>466
cakeに関係なく普通はセッション使うのでは。
0468nobodyさん2010/05/30(日) 23:03:25ID:???
フラグを立てればいいかも
0469nobodyさん2010/05/30(日) 23:08:21ID:???
>>466
セッションに前の画面から来たという証を入れといて
次の画面で照合する。
これをやらないとCSRF脆弱性に繋がるよ。
0470nobodyさん2010/05/30(日) 23:12:42ID:???
session_regenerate_id(true)とかは?
0471nobodyさん2010/05/30(日) 23:14:58ID:???
CAKE本についてありがとうございました。
参考にしてみます。

近所の図書館にガイドブック1.2あったんでとりあえずそれでしのいで
1.3の本でてから買うことにしました。
0472nobodyさん2010/05/31(月) 00:07:26ID:???
>>469
そういうこまごまな雑用を
やらなくてすむのがフレームワークじゃないんですか?
■ このスレッドは過去ログ倉庫に格納されています