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

【PHP】フレームワーク CakePHP 14ホール目【v2.1】

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

※他フレームワークとの比較等はスレ違いです
テンプレは>>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

前スレ
【PHP】フレームワーク CakePHP 13ホール目【v2.0】
http://kohada.2ch.net/test/read.cgi/php/1320768310/
05565532012/08/30(木) 12:27:23.14ID:/uv7B1Aq
>>554
例えば、
if(!$this->Model>save($this->data))$this->flash("保存失敗",/index);

という感じに保存に失敗したら、真っ白の画面に「保存失敗」とだけ表示して数秒後に指定ページへ飛ばしたいのですが
実際はViewまで読み込んでしまう現状です。
exit()てきな動きをすると思ってたのですが、ひょっとして勘違いですか?
0557nobodyさん2012/08/30(木) 13:58:28.85ID:???
return;すれば?
0558nobodyさん2012/08/31(金) 11:00:18.38ID:???
>>556
そういうときは2系だと Controller::redirect を使うんだけど、
その書き方だと1.3なのかな?
0559nobodyさん2012/08/31(金) 13:18:33.55ID:???
renderとかflashだと処理は終了しないので>>557の言うように処理の中断もしたいならreturnするのが正解

>>558
redirectとflashは別物だよー
0560nobodyさん2012/09/07(金) 23:58:12.87ID:???
何でこんなに盛り上がってないんだ
cakephp2本も出るというのに
0561nobodyさん2012/09/08(土) 00:41:43.49ID:???
オワコンだから
0562nobodyさん2012/09/08(土) 01:18:50.89ID:???
Cakeがオワコンかどうかはさておき、
2chで情報交換する時代じゃなくなったよな
0563nobodyさん2012/09/08(土) 01:25:56.12ID:???
>>560
いつでるの?
0564nobodyさん2012/09/08(土) 02:31:39.98ID:???
>>562
かといって公式コミュニティはなんかお堅い感じがするし、ブログに書いても反応があるかわからないし
でもcodeなにがしが転けたりしているのを見ると技術者向けコミュニティっていうのは本当に運用が難しいんだろうな

>>563
29日だとか
執筆陣から期待が高いぜ
http://www.amazon.co.jp/dp/4774153249
0565nobodyさん2012/09/08(土) 09:50:55.77ID:???
Cakeがオワコンなのは事実だがスレが盛り上がらないのは
2chがオワコンなのが原因
最近どこのスレでも会話が成立しなくなってきてて困る
0566nobodyさん2012/09/08(土) 11:04:20.78ID:???
最近2chの過疎ぶりがひどい
ブラウザの「最近読み込んだスレ」のほとんどが、俺の書き込みで止まってる
内容は普通だから、俺が悪いんじゃないぞ
0567nobodyさん2012/09/08(土) 12:32:12.69ID:???
雑談板は普通に人いるけどな
専門板が過疎ってるだけ
なぜなら未だにsage進行にこだわったり
質問したらテンプレ嫁、みたいな10年前から進歩してないオッサンが
幅きかせてうざいから
0568nobodyさん2012/09/08(土) 12:52:04.55ID:???
規制が厳しいせいもあるかも
auひかりとか使ってたらほぼ書き込めないだろ?
0569nobodyさん2012/09/08(土) 13:21:35.98ID:???
専門晩に来なくなった人達は、どこに行ってるんだろうな?
公式フォーラムとかその辺がかわりに賑わっているわけでもないし
0570nobodyさん2012/09/08(土) 14:40:44.18ID:???
1.3系で作ってた過去のシステムを全部1.3.15に上げたぜ
もう1.x系のリリースはないだろう

しかし2.x系のリリースはバージョンアップが激しくて手が出しにくいな
2.0、2.1、2.2と4ヶ月スパンくらいで出てないか?
1.2から1.3までは1年半くらいかかったのに
0571nobodyさん2012/09/08(土) 14:57:41.60ID:???
2系はガンスルーしてるわ
対応めんどくさいから新規案件もガンガン1.3使い回して作ってる
うちみたいな零細には余計な手間かける余裕が一切ないからな
0572nobodyさん2012/09/08(土) 15:32:24.19ID:???
>>569
ツイッターで独り言つぶやき続けてる印象
あいつらマジで非コミュだな、匿名掲示板で議論もできないのかよ
0573nobodyさん2012/09/08(土) 15:34:11.67ID:???
まあ、このスレも>>565以下殆ど俺の自演なんだけどな
0574nobodyさん2012/09/08(土) 16:16:43.77ID:???
>>572
ツイッターで書いてると、他の全部がめんどくさくなるからな
ブログとか俺も全然書く気がしない
0575nobodyさん2012/09/08(土) 16:36:12.19ID:???
2系はそんなに変更点多くないし、1.3系よりかなり早くなってるよ。
更新はともかく、新規案件なら2系で作ってもメリットはあると思う。
0576nobodyさん2012/09/09(日) 19:53:39.13ID:???
cakeってオワコンなの!?

ちょうどcakeで作ろうと思ってたのに…
今なら変えられるけど代わりのいいフレワないのだろうか…
0577nobodyさん2012/09/09(日) 20:05:22.24ID:???
Yiiがいいらしい
使ったことないけど
0578nobodyさん2012/09/09(日) 20:19:59.28ID:???
英語できないからcake一択
0579nobodyさん2012/09/09(日) 20:26:41.47ID:???
英語ができるならyiiか…

一回お試しで簡単に触ってみるか

なんかcakeと似てるらしいし

どうもです
0580nobodyさん2012/09/09(日) 20:41:24.37ID:???
そんなにCakeって日本語の資料多い?
2009年あたり以降、日本ではあまり使われていない気がするが
0581nobodyさん2012/09/09(日) 20:50:36.97ID:???
他と比べたことないからわからないけどググったりCakePHP辞典とかは役に立ってるよ
1.Xのとか情報が古くても
0582nobodyさん2012/09/10(月) 15:53:53.54ID:???
Cakeオワコンっていうなら何があるっちゅーの?
まぁ、PHP自体があれかもしれんがな
0583nobodyさん2012/09/10(月) 16:01:44.70ID:???
そもそもフレームワーク自体オワコンで生PHPの時代かも


openpneだって2までは良かったんだけど3からシンフォニー()とか変なの採用してクソ重くなっただけでなくカスタマイズ性も落ちた
0584nobodyさん2012/09/10(月) 16:20:01.42ID:???
まぁ、フレームワーク使うのは開発者が開発しやすくするためだからな
利用者にはほとんどメリット無いよ
0585nobodyさん2012/09/10(月) 23:20:40.72ID:???
>>582
フレームワークの中ではYiiが一番良い

>>583
生はないだろ・・・めんどくさすぎるわ
0586nobodyさん2012/09/11(火) 03:14:36.56ID:???
何だよ cakephp.org のサイトが落ちちゃってるんで、
前から騒いでる Yii ってのでも覗いてみようと思ったら
そっちのサイトも落ちてるじゃねーかw

>>585
前からことあるごとにYiiの宣伝に勤しんでるようだが、
(別人かも知れないがな)
どう良いのか書かねぇと誰も話を聞いてくれんぞ
0587nobodyさん2012/09/11(火) 04:59:28.19ID:???
すれち
0588nobodyさん2012/09/12(水) 00:44:18.90ID:???
Eclipse 3.7.2 Indigo

一般 > ファイルの関連付けで
*.ctp をしっかり PHP エディター(デフォルト)に関連付けて
いるにも関わらず、Eclipseから*.ctpファイルを開いても
*.phpファイルを開いた時のフォントが適用されていません。

どこか設定が間違っているのでしょうか?

0589nobodyさん2012/09/12(水) 00:59:24.23ID:???
cakePHP使っているのに
標準のバリデーションを使わずに、
自前でController内でバリデーション処理を組み込んでいるのですが
こーいうことはしないほうがやっぱり良い?
0590nobodyさん2012/09/12(水) 01:03:11.83ID:???
DRYに書けるならいいんじゃね
0591nobodyさん2012/09/12(水) 01:08:25.46ID:???
>>590
実は、まだcakePHPのバリデーション機構をあまり理解していなくて(時間がないので)
既存のPHPの知識だけでコントローラ内でバリデーション処理を組んでます。
(FW使ってる意味ねーじゃんw)
0592nobodyさん2012/09/12(水) 01:10:40.04ID:???
あっそw
0593nobodyさん2012/09/12(水) 02:19:19.08ID:???
>>591
コントローラは質素に作るのが定石。
そのやり方はたぶんまずい。
使い方が分からなければ、ロジックをモデルに書いておいて後でリファクタリング。
0594nobodyさん2012/09/12(水) 02:33:05.48ID:???
>>593
アドバイスサンクスです。
※現在は、モデルは形上テーブル数分用意してますが
特にこれといったコードを書いていないです。。。
おいおい勉強してゆきます。
0595nobodyさん2012/09/12(水) 02:45:41.26ID:???
>>594
まずこれを読むといいと思ってどこかに上がってた翻訳を探してたんだが
見つけられなかったスマン。
http://bitfluxx.com/2008/01/23/cakephp-best-practices-fat-models-and-skinny-controllers.html

概要はここでわかる。
http://blog.syuhari.jp/archives/172

俺も始めコントローラにゴリゴリ処理を書いて納品したあとで
この知識を知って、この記事を早く読めばよかったと心から悔やんだ。
コントローラに複雑な処理を書くとあとで泣きを見る確率激高だ。
趣味でやってるんならじっくり覚えていけばいい。
0596nobodyさん2012/09/12(水) 05:14:49.77ID:???
>>595
ありがとうございます。
モデルの本来の使い方をやっと知った感じです。

コントローラに何でも詰め込んでいましたが
モデルに検索機能とかを移動させたら大分コードがすっきりしました。
0597nobodyさん2012/09/12(水) 10:25:29.96ID:???
バリデーションて使ったことないんだけど
ユーザー入力からのデータを保存する際には使った方がいいのか
0598nobodyさん2012/09/12(水) 11:06:09.67ID:???
君次第だ
0599nobodyさん2012/09/12(水) 13:35:01.67ID:???
どうでもいいってことか
0600nobodyさん2012/09/12(水) 14:33:36.86ID:???
Cake2.2にしたけど、どうしてもredirectするとセッションが空になるという問題が起きて
2日ぐらい調べているけどわからない
海外フォーラムとか見ても多発してるが解決策がない模様
1.3に戻すか…
0601nobodyさん2012/09/12(水) 16:00:33.62ID:???
>>600
あぁ、どっかで回避策読んだなぁ、、、
割と簡単に解決できるようなこと書いてあった。
0602nobodyさん2012/09/12(水) 18:21:16.88ID:???
うーむぐぐってもぐぐっても解決法が見つからん
古いバージョンのなら出てくるんだけど、当然試してもダメだった

よく調べるとリダイレクトすると空になるんじゃなくて、
リダイレクト前後でsession_id()が異なる値を返し、リダイレクト前にwriteした値が正しく保存されてないようだ
何故こうなるのかがわからない
0603nobodyさん2012/09/12(水) 19:14:19.36ID:???
>>600
Cakeってこういうバグたくさんあるからいやなんだよ
0604nobodyさん2012/09/12(水) 19:19:58.01ID:???
同感。まだまだ旧バージョンを使い続けた方がいいみたいだな
1.3も1.3.10ぐらいまではひどいバグあった、テーブル全消し喰らったり
0605nobodyさん2012/09/12(水) 19:24:44.80ID:???
Cakeに限った話じゃないが、セッションてデバッグしにくいよな
0606nobodyさん2012/09/12(水) 20:06:50.64ID:???
セッションがどれぐらい保持されるかっていう設定もややこしすぎるしCake
0607nobodyさん2012/09/12(水) 23:23:35.18ID:???
セッション切れは多分存在しないcssとかjsとか呼び出しちゃってんじゃないか
なんでもcakeのバグとか言わない。
0608nobodyさん2012/09/13(木) 00:03:27.42ID:???
>>600
普通にできるけど?
0609nobodyさん2012/09/13(木) 07:33:06.03ID:???
既存のWebアプリに外部に機能を提供するAPIを追加したいんだけど
APIでのユーザ認証はどんな風に実装するのが普通でしょうか?
APIへのセッション情報の受け渡し方法が判らないです・・・
0610nobodyさん2012/09/13(木) 08:19:36.38ID:???
クッキーで渡すしかない?
0611nobodyさん2012/09/13(木) 10:08:21.91ID:???
Oauth
0612nobodyさん2012/09/13(木) 11:09:41.72ID:???
>>611

トークン管理(発行・破棄)とか多重ログイン対応とか考えると大変そう・・・
0613nobodyさん2012/09/13(木) 11:11:51.90ID:???
あっそ
0614nobodyさん2012/09/15(土) 18:54:29.08ID:???
score_daily

って名前のテーブルを定義しようとしたら
score_dailies にしろってエラーがcakeから返されるんだけど
どうも daily は形容詞であり、複数形など無いので
凄く納得が行きません。

テーブル名称は、複数系にしなくちゃならないのでしょうか?
0615nobodyさん2012/09/15(土) 18:58:42.11ID:???
daily_scores


いやならmodelにuseTableで指定すればいいだけ
0616nobodyさん2012/09/15(土) 19:28:52.44ID:???
>>615
!!!Good!!!
0617nobodyさん2012/09/17(月) 13:46:54.01ID:???
コントローラーのアクション関数中で$this->redirectを書いたら
それ以下の行は実行されないという認識であってまっすか
0618nobodyさん2012/09/17(月) 14:23:03.05ID:???
>>617
第3引数次第。デフォルトではそれでOK。
0619nobodyさん2012/09/17(月) 16:12:43.15ID:???
>>618
なるほど�dです
0620nobodyさん2012/09/18(火) 10:50:35.32ID:???
Cake2.2
core.phpで Configure::write('debug', 0);としていても、エラー時にCakeのエラー表示が出てしまいます
出さないようにするにはどこで設定するのでしょうか?
0621nobodyさん2012/09/18(火) 22:18:22.36ID:???
php のエラーじゃなくて?
0622nobodyさん2012/09/18(火) 22:38:41.86ID:???
です。Cakeのエラーです。

引き続き調べていてわかったのは、PHPにエラーがある場合にそうなります。
存在しないURLを入れた場合には、CakePHPのエラー表示用の?ソースコードが吐かれます。頭にCakeのコメント付きの。

これでは困るので、なんとかならないでしょうか。何かおかしいと思うのですが…。
エラーがなければ正常に動いています。
0623nobodyさん2012/09/19(水) 00:47:19.09ID:???
error_reporting(0) はしてみた?
0624nobodyさん2012/09/19(水) 08:58:59.05ID:???
コントローラとかビューでdebug上書きしてるんじゃないの
0625nobodyさん2012/09/19(水) 10:46:33.83ID:???
2でどのくらい速くなったの?ざっと見た所構造同じだし、速くできるような違いが見当たらなかったが
モデルの遅延読み込みで速くなったって、アソシエーション使ってなければ関係ないんじゃないの?
0626nobodyさん2012/09/19(水) 16:01:01.46ID:???
>>625
http://d.hatena.ne.jp/cakephper/20120828/1346162341
0627nobodyさん2012/09/19(水) 16:03:18.26ID:???
>>626
�dクス
Verあがるたびに遅くなってるw
0628nobodyさん2012/09/19(水) 16:28:46.26ID:???
2.1でテストしている限りには速く感じたけど、
>>626見ると、バージョンアップしていく毎に遅くなるのか。

まぁ、機能が増えるから遅くなるのはわかるけども
0629nobodyさん2012/09/19(水) 16:56:44.01ID:???
このやり方じゃボトルネックがよく分からんが、
DBをメモリに乗せてないだろうからDB接続を確立させるコストが一番高いんだろうな

そういう意味じゃどのFW使っても大差ないと思うし、バージョンの差分などは気にするほどでもないと思う。
0630nobodyさん2012/09/19(水) 16:58:04.41ID:???
つまり1.3でも大差ないってことだ
0631nobodyさん2012/09/19(水) 18:20:17.13ID:???
感覚的には1.3系より2系の方が速く感じるけどな
0632nobodyさん2012/09/19(水) 19:49:16.34ID:???
っていうか、実際早いんだろ
0633nobodyさん2012/09/19(水) 20:54:32.34ID:???
少しはな
0634nobodyさん2012/09/20(木) 01:40:17.08ID:???
じゃぁ良かったじゃん
0635nobodyさん2012/09/20(木) 04:06:56.13ID:???
元が遅いからそんなによくない
0636nobodyさん2012/09/20(木) 10:15:47.13ID:???
じゃぁ何が早いのさ
0637nobodyさん2012/09/20(木) 10:32:10.03ID:ir1LF+Ba
Cake2.2を使ってます。
各アクションのsetメソッドで1つづつ値を渡す方法でなく
AppControllerから一括でViewの全てのディレクトリのctpに変数を渡す方法ってありますか?

0638nobodyさん2012/09/20(木) 10:52:45.15ID:???
beforeFilterかbeforeRenderあたりに書けば良いんでないの
0639nobodyさん2012/09/20(木) 11:02:18.03ID:???
Cake2.2を使ってます。
掲示板を作っていて、スレタイモデルとレスモデルが
スレhasManyレス
レスbelongsToスレ
になっているのですが、レスが追加された際にスレのmodifiedを自動更新する方法ないでしょうか?
counterCacheを使うとレス数カウントはできるのですが、更新時刻も取りたいです
0640nobodyさん2012/09/20(木) 16:59:36.49ID:???
>>639
そんなロジック実装してないよ。
Modelに書いとけ。
0641nobodyさん2012/09/22(土) 18:00:13.95ID:???
counterCacheの存在を初めて知った
0642nobodyさん2012/09/22(土) 18:06:13.12ID:???
アソシエーション便利だけど、裏ではどんだけ無駄な処理が実装されて動いてるんだろうな
findやsaveを1回する度にCPUが悲鳴を上げているような気持ちになる

気になるので今度lib以下のソース見てみるか
使わない機能はばっさりコメントアウトとかしちゃおうかな
0643nobodyさん2012/09/22(土) 18:12:35.09ID:???
そういうのがもっと整理されれば速度も上がるんだけどね
0644nobodyさん2012/09/22(土) 19:00:02.06ID:???
cakephpは使わないコードはなるべく読み込まないような実装になっているはず
0645nobodyさん2012/10/01(月) 00:47:57.77ID:fpJxZWOx
ファイルのアップロードで、fileに対するバリデーションのことなんですが、
ファイルが指定されていたらファイル形式、ファイルサイズなどをバリデーションにかけて、
指定されていなかったらかけない、という書き方がわかりません
どうしたらいいんでしょうか?
0646nobodyさん2012/10/01(月) 02:38:43.69ID:???
ファイルのアップロードでファイルが指定されている/いないって意味がよく分からないし、
どこで躓いているのかもよく分からないし、
CakePHPのバージョンも分からないので答える気が失せる質問だから、
何となくvalidate 系のコールバックをうまく使えばいいじゃんとしか言えない。
0647nobodyさん2012/10/01(月) 05:38:17.07ID:???
if (isset($_FILE['image'])) {
//ファイルがアップロードされた場合のバリデーション
} else {
return true;
}

素のPHPで言うと、こういう事じゃないの?
0648nobodyさん2012/10/01(月) 07:27:09.08ID:qwXCS9RT
>>646
$form->file()でファイル渡せる状態になってるフォームで、
そこにファイルを指定したときだけファイルの中身のバリデーションをかけたいってことです

>>647
ありがとうございます
allowEmptyみたいな感じで、
<input type="file">にファイルを指定していなければバリデーションルールはスルーする
みたいな簡単にできるものってないんでしょうか?
0649nobodyさん2012/10/01(月) 10:28:51.05ID:???
簡単には出来ないよ。俺もルールは自作してるよ
0650nobodyさん2012/10/01(月) 10:29:01.17ID:???
>>648
>>1
>質問するときはCakePHPのバージョンを書きましょう
0651nobodyさん2012/10/01(月) 10:30:55.20ID:???
俺は簡単にできてるけど、やってみてできなかったの?
0652nobodyさん2012/10/01(月) 20:09:57.83ID:fpJxZWOx
>>649
ありがとうございます自作してみます

>>650
echo Configure::version();してみたら1.3.8って出ました
書き漏れすみません

>>651
allowEmptyでは無理でした
普通にエラー警告(ファイルの形式を見て、jpgでなければ警告を出すようにしてました)が出ました
0653nobodyさん2012/10/01(月) 21:49:36.94ID:???
Cake2本がついに発売されてるのか
2のリリースから1年も経って、やっとまともな本が一冊
うれしい
06546452012/10/01(月) 22:08:47.24ID:fpJxZWOx
>>649
>>647のやり方でうまくいきました
みなさまありがとうございました
0655nobodyさん2012/10/02(火) 01:23:26.02ID:???
いまだ1.3使ってる人いるんだな
何故2系を使わないのか
0656nobodyさん2012/10/02(火) 03:11:43.69ID:???
使う理由がないから
■ このスレッドは過去ログ倉庫に格納されています