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

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

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2010/11/01(月) 21:43:26ID:???
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※sage推奨
※質問時も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
0809nobodyさん2011/02/03(木) 14:02:31ID:???
俺もその場合はビヘイビアに一票。ていうかビヘイビア一択。

よくわからないのは、モデルとコントローラー共通に必要な処理はどこに置くかということ。
今の所ビヘイビアとコンポーネントに同じコード書いてる。もっと良い方法ない?
0810nobodyさん2011/02/03(木) 14:11:10ID:???
モデルとコントローラの両方で必要な処理がどういう処理かわからん
0811nobodyさん2011/02/03(木) 14:24:25ID:???
設計みなおしたほうがいいし、
仮にそう言うのがあれば普通にクラス書いてVender
0812nobodyさん2011/02/03(木) 14:37:48ID:???
>>810
最近あったのは、携帯サイトで、絵文字の変換処理とか。
DB前後で変換かますからモデルでやるんだけど、DBに入れなくて良い時はコントローラーでやる必要があったり。
全部コントローラーで処理することもできるがそれだとあちこちのコントローラーに同じコードが要るので、モデルでやりたい。
0813nobodyさん2011/02/03(木) 14:41:13ID:???
>>808,809
ありがとうございます。
なるほど、ビヘイビアってそういうものなのか。
振る舞いって言葉の通り、どのモデルでも使えるような、特定のモデルとは切り離された抽象的な「振る舞いを変えてくれるもの」と思ってた。
0814nobodyさん2011/02/03(木) 14:46:21ID:???
>>812
>DBに入れなくて良い時はコントローラーでやる必要があったり。
ここが良くわからないんだけど、
DBに入れる入れない関係なく、ロジックならモデルでやっちゃわない?
もしかしてモデルでやらない方がいい理由があったりする?
0815nobodyさん2011/02/03(木) 14:48:18ID:???
>>812
MVCを厳密に守るとコード最適化に反してしまう例の一つに見えるな
MVCを守るなら、コントローラーだけでやるのが正解ぽい
0816nobodyさん2011/02/03(木) 14:52:35ID:???
>>814
そのモデルを使わないコントローラーもあるんだけど、
そのためにモデルをusesに追加すべき?
違和感があるんだけど、モデルをDBと結びつけて考え杉なのかな
0817nobodyさん2011/02/03(木) 15:01:28ID:???
なんでモデルなんだ
コンポーネントでやればいいじゃん
helperのbiforeVenderとかでもいいか
0818nobodyさん2011/02/03(木) 15:07:08ID:???
内部的には実体参照で保有して、DBにも実体参照で保持。
表示の際にPCなら画像に変えるとか、SBは変換かけるとかする。

あとformから入力があるサイトなら入力データの絵文字も考慮しなきゃならん。
なんかライブラリでも使ったほうが速い
0819nobodyさん2011/02/03(木) 15:26:07ID:???
絵文字を扱うコントローラーが
絵文字を扱うモデルを使わないってどういうこっちゃ
0820nobodyさん2011/02/03(木) 16:34:24ID:???
絵文字を扱うモデルの意味がわからん。
ブログの記事内に絵文字埋め込んでるから、
findで受け取る際にキャリア毎に変換したいとかか?

いずれにせよ、コントローラで俺は書くな。
<select>のoptionsをDBから生成したい時はモデルに書いてるけど
0821nobodyさん2011/02/03(木) 16:44:54ID:???
>>808 だけど、MVCにまたがる処理はlibsにライブラリクラス作れって言ってるだろう
外部ライブラリならvendorでいいけど。
0822nobodyさん2011/02/03(木) 18:08:13ID:???
マニュアル変わったの最近?
きれいになったのはいいけどやたら重いな。
0823nobodyさん2011/02/03(木) 23:26:56ID:???
どうでもいいけどサニタイズとかエスケープとかって言葉は
文脈(どこに出力するか)が決まらなきゃその内容も決まらないんじゃないのか
0824nobodyさん2011/02/03(木) 23:39:37ID:???
どうでもいいならわざわざ書くなよ
0825nobodyさん2011/02/03(木) 23:46:43ID:???
2chで何言ってんだお前
0826nobodyさん2011/02/04(金) 00:11:13ID:???
>>823
ここはCakeのスレで、Cakeがサニタイズって命名してるだろ。
ならそれに従うまでだ。
0827nobodyさん2011/02/04(金) 01:25:00ID:???
http://book.cakephp.org/view/1183/Data-Sanitization
この囲みの文も日本語訳の方に載せといてくれればいいのにね。
一応cake使う上では基本なんだから。
0828nobodyさん2011/02/04(金) 03:21:44ID:???
ああそうか、SQLインジェクション対策もあったな
CakeのActiveRecordに投げっぱなしだったから存在を忘れてた

XSSについては出力段階でエスケープって言うのはCake以外でも基本じゃね?
0829nobodyさん2011/02/04(金) 10:18:51ID:???
2ちゃんで質問して解決したことが一度もねえよ
0830nobodyさん2011/02/04(金) 10:42:48ID:???
それはお前の質問の仕方が悪い。
俺は何度もこのスレに助けられた
0831nobodyさん2011/02/04(金) 11:06:21ID:???
このスレで役に立ってる情報なんてねえよw
0832nobodyさん2011/02/04(金) 11:35:40ID:???
お前がそう思うんならそうなんだろう お前ん中ではな
0833nobodyさん2011/02/04(金) 15:12:57ID:???
公式のフォーラムにあった
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=2021&forum=3

と同じ部分で詰まっているのですが、
誰も回答していない事を見ると、argSeparatorを指定したら
逆ルーティング出来ないのでしょうか?
0834nobodyさん2011/02/04(金) 17:33:25ID:???
debugを0にしてても存在しないコントローラーでアクセスした際にCakeのエラーが表示されて
Cakeであることがバレてしまうのですが、エラー用の特定のページを表示させるには
どうするのが一番良いでしょうか?
dispatcher.phpを書き換えるという手段を思いつきましたがもっと良い方法ないでしょうか
0835nobodyさん2011/02/04(金) 17:37:36ID:???
htaccessでエラーページに飛ばすとかは?
0836nobodyさん2011/02/04(金) 17:43:17ID:???
ん?
missing controllerとかmissing viewとか書いてない?
このページを編集するにはこういうファイルをAPPに作れって書いてない?
0837nobodyさん2011/02/04(金) 17:49:00ID:???
>>834
俺の場合は、AppErrorを作ってやっている
0838nobodyさん2011/02/04(金) 17:51:13ID:???
>>836
書いてないです
layoutsが中途半端に反映されたページの残骸みたいなものが出てきて、
ソースを見るとCakeのクレジットのコメント部分が出ていて、Cakeだとわかります
cake/libs/error.php内でvar_dumpするとmissingControllerと出てきます

>>837
それでやってみます
0839nobodyさん2011/02/04(金) 20:02:31ID:???
>>838
404にもctpファイルがあるんだぜ
作ってなければデフォルトなんだぜ
0840nobodyさん2011/02/04(金) 22:39:54ID:???
DBクエリ情報のTookで一部、259(ms)とか物凄く時間がかかっている
クエリがあるんだけど、インデックスも指定してあるし、特におかしなSQLでもない。

体感的にもそれほど長い時間待たされている感じはないんだけど、
クエリ情報が間違っているのかな?
0841nobodyさん2011/02/04(金) 22:46:59ID:???
スレチってことも分からんのか?
0842nobodyさん2011/02/04(金) 23:00:23ID:???
Cakeで出力されるクエリ情報が正しいか否かの質問なんですが、
スレチなんですね。わかりました。
0843nobodyさん2011/02/04(金) 23:14:40ID:???
お魔のその質問でクエリがただしいかどうかどうやって解決するんだ?
自分で発行されたクエリ調べて、正しいか読んでろ
質問あるならそのクエリもってSQLの質問受け付けてるようなところ行って来いよ
嫌ならすぐ死ね
0844nobodyさん2011/02/04(金) 23:18:30ID:???
クエリ情報ってSQLから引っ張ったの直接表示してるだろ。どう間違えるの
0845nobodyさん2011/02/04(金) 23:40:18ID:???
cake通さないで実行時間計測してみればいいのに
1000msとかならともかく259msなら、体感差はそこまではっきりとは出ないだろうし
0846nobodyさん2011/02/05(土) 00:22:01ID:???
この際、実際のSQLはどうだって良いんだよ。
phpMyAdminとかで実行しても259msもかかんないんだし。

それよりも、「Cakeのクエリ情報は正しいのか?」という
ただ1点のみの問いかけなんです。
0847nobodyさん2011/02/05(土) 00:25:25ID:???
し ら ね ー よ

ソース嫁
0848nobodyさん2011/02/05(土) 00:36:53ID:???
>>846
CakeのログではかれたSQLをそのまま実行したら、キャッシュの結果を返さないか?
0849nobodyさん2011/02/05(土) 05:01:31ID:???
最近のRDBMSは優秀だからね。
直近のSQLの結果は、キャッシュされる可能性があるね
0850akiyan2011/02/05(土) 10:50:42ID:???
いやクエリキャッシュは明示的に設定してやらないと発動しませんから
いい加減なこと書いて初心者を惑わせるのはどうかと
0851nobodyさん2011/02/05(土) 11:27:12ID:???
>>850
自分の環境を理解してないほうが悪い。
0852nobodyさん2011/02/05(土) 12:13:48ID:???
authComponentで強制的にログイン画面に
リダイレクトされるのを防ぐにはどうしたらいいですか?

非ログイン状態だと右上にずっとログイン用のフォームが出てる
イメージです
0853nobodyさん2011/02/05(土) 12:53:42ID:???
そのページをallowにしてやらんと。
てか根本的に理解が足らんと思うわ
マニュアルやチュート何度も読み返してこい
0854nobodyさん2011/02/05(土) 13:01:50ID:???
$this->Auth->allow('*');
でいけたわ
必要なアクションのみdenyで登録ってことか
0855nobodyさん2011/02/05(土) 13:20:32ID:???
聞くなしらべろ
0856nobodyさん2011/02/05(土) 13:58:50ID:???
うるせえ。偉そうすぎるんだよ
0857nobodyさん2011/02/05(土) 14:29:17ID:???
cakeスレなのにみんな辛口だよな
0858akiyan2011/02/05(土) 15:24:41ID:???
>>851
RDBMSが優秀だからクエリキャッシュするなんて見当違いも甚だしいレスをつけておいて責任転嫁はいかがなものかと
0859akiyan2011/02/05(土) 15:30:22ID:???
曖昧な知識で適当なアドバイスするくらいなら、何もしない方がマシですよ
0860nobodyさん2011/02/05(土) 15:40:40ID:???
akiyanの名前を騙って書き込むくらいなら、何もしない方がマシですよ
0861nobodyさん2011/02/05(土) 16:37:26ID:???
切羽詰まりすぎな人が多いから、イライラしている人が多いと思う
0862nobodyさん2011/02/05(土) 16:43:50ID:???
違う。わからないくせに質問者を恫喝するから荒れるんだよ。
分かっている人はきちんと答えてるし。
0863nobodyさん2011/02/06(日) 04:12:11ID:???
ググるときに1年以内とか絞りこむとだいぶ1.2の情報消えるな
0864nobodyさん2011/02/06(日) 07:22:03ID:???
期間指定ってかなり便利だよな。サイドバーも使いやすいし
0865akiyan2011/02/06(日) 15:01:09ID:???
>>862
同感です
全体的に口調が荒すぎてスレの雰囲気悪くなってますよね
0866nobodyさん2011/02/06(日) 16:41:08ID:???
他のスレでもいるけど、1人の粘着が荒らしてるだけだけどね。
0867nobodyさん2011/02/06(日) 17:11:49ID:???
お前らまだこんなの使ってたのかw
0868akiyan2011/02/06(日) 17:18:07ID:???
使ってないならこのスレ来なきゃいいのに
0869nobodyさん2011/02/06(日) 20:49:55ID:???
気になって仕方ないんだろうなw
0870nobodyさん2011/02/06(日) 21:39:44ID:???
app\vendors\thumbnail.php

APP::import('Vender','Thumbnail');
$Thumbnail = new Thumbnail();

最新版です。
なぜ読み込めないのでしょうか?
0871nobodyさん2011/02/06(日) 21:47:28ID:???
app\vendors\thumbnail.php

APP::import('Vender','thumbnail');
$Thumbnail = new Thumbnail();


なんだ小文字にするのか、、、、

こういう所が腐ってるところ
複数形とかウザすぎ
0872nobodyさん2011/02/06(日) 21:51:21ID:???
違った。終わってるね。
0873nobodyさん2011/02/06(日) 21:58:42ID:???
Vendor
Vender
お前酷いな
0874akiyan2011/02/06(日) 23:25:34ID:???
>>871
webフレームワークの潮流も知らないでよくそんな偉そうな事言えますね
Railsとか勉強されてはどうですか?
自分の知識の無さを棚に上げてフレームワークのせいにするなんて幼稚園児の発想ですよ
どうせ自分の年収が低いのは日本経済の責任だとか愚痴ってるんでしょ新橋の立ち飲みやで
どうしようもない人間ですね カス クズ 人間のゴミ
0875nobodyさん2011/02/06(日) 23:28:07ID:???
まぁ落ち着け
できないやつは文句ばっかりなのは実感するところだけどさ。
0876nobodyさん2011/02/06(日) 23:30:24ID:???
>>874
何で自分のこと言ってるの?
0877nobodyさん2011/02/06(日) 23:51:46ID:???
858 :akiyan:2010/10/20(水) 00:32:48 ID:???
いやホントに
改めて言うのも照れてしまうけれど花金明け土曜日0時なら俺は言える
「CakePHPこそフレームワークの完成形だと」
The Standard Languageの座を揺るぎないものとしたPHP
20世紀エンジニア達の知の結晶とも言うべきMVC
ここにRuby on Railsというスパイスが加わってCakeは生まれた
全くこれは何だっていうんだい 奇跡なんて陳腐なもんじゃない
おそらくはCOBOLが生まれた時点でPHPの誕生は決定済みであったろうし
Rubyは図らずもCakeの為に作られたと言っていいんじゃないか
RubistやDHH、それに20世紀を生きた全てのエンジニア達が費やした途方もない時間
それらはすべてCakeに繋がった Cakeのために彼らの汗が流された
逆じゃないんだ Cakeは結果じゃない
Cakeが始まりであって、Cakeの生誕のためにRailsがあり、Rubyがあった
20世紀を生き、そして21世紀に歩を進める全てのwebに関わるエンジニアのための心臓、それがCake
俺はCakeの時代に現役でいられたという事を誇りに思うだろう
死ぬ間際に息子と娘と孫と妻、そしてCakeの事を思うだろう
あぁCakeよCake お前は俺の中にあるし、Cake内部にも俺がいる
うまく言葉にできねぇな、とにかくCakeはもう21世紀エンジニアの魂だ
そして最後に
最愛の妻と友人、そしてペニーオークションに幸あれ
0878nobodyさん2011/02/07(月) 00:19:49ID:Y103Gns6
>>874
気にするなよ、Webの仕事では、
PHPを使う仕事ではPHP(CakePHP)を使うし、
Ruby使う仕事ではRuby(Rails)を使うでいいんじゃね。
書き方の細かなことはいいじゃねか、普通はCakePHPもRailsもどっちも使えるだろ。
0879nobodyさん2011/02/07(月) 00:32:57ID:???
モデルの仕組みが全くわからん
0880nobodyさん2011/02/07(月) 01:17:13ID:???
Cakeは便利だけど、そりゃだめなところもいっぱいあるさ。
好みの問題もあるけど、誰もが首をかしげるものもある。
Cakeは万能じゃない。

作りたい物が小規模で、Cakeを使ってて回りくどいと感じてるなら、
CodeIgnighterは良い選択肢かもしれない。
Cakeよりもっと厳格なスタイルで開発がしたいなら、
Symfonyを試してみると良いかもしれないぞ。
ZendFrameworkはシラネ
0881nobodyさん2011/02/07(月) 10:55:24ID:???
そこで俺はCakeの命名規則に沿った
オレオレフレームワークを作ったのだった
0882nobodyさん2011/02/07(月) 15:01:26ID:???
で、それをオープンソースにすると
0883nobodyさん2011/02/07(月) 15:32:20ID:???
どんなときにCakePHPで作ってどんなときにDrupalやxoopsなどのCMSでサイトを作りますか?
そこの判断基準を教えてください
0884nobodyさん2011/02/07(月) 16:13:13ID:???
吊るしでいいときはCMS
オーダーメードのときはCake
0885nobodyさん2011/02/07(月) 16:24:23ID:???
CMSで納得する客って今まで会った事無いな。
依頼時は「オープンソースでも結構です」とか言いつつ、
結局は、あれして・これしてってなるのが目に見えてるし。
0886nobodyさん2011/02/07(月) 18:15:12ID:???
まあそこを納得して頂くのがプロの営業マン
0887nobodyさん2011/02/07(月) 18:37:23ID:???
CMSのカスタマイズはCakeより面倒だからなぁ。
プラグイン・モジュールで対応できないなら、Cakeかな。
0888nobodyさん2011/02/07(月) 18:47:22ID:???
昔CakePHPで挫折してCIに移ったものです
CIはセッションがなんちゃらとPHP4とPHP5をサポートしているのが気に食わなくなりZend Frameworkの勉強を始めました
なんかやっぱりCakePHPってやっぱり難しいですね
0889nobodyさん2011/02/07(月) 19:31:03ID:???
だってなんだか♪だってだってなんだもん♪
0890nobodyさん2011/02/07(月) 19:32:01ID:???
cakephpの命名規則に従ってサイト作ると
URLがなにかイマイチな感じになる。
/items/
とか日本語の感覚だったら
/item/
になると思うんだけど
命名規則に従って作ってますか?
0891nobodyさん2011/02/07(月) 19:36:03ID:???
routes書けよ
0892nobodyさん2011/02/07(月) 19:42:35ID:???
Zend FrameworkではaaaBbbって書くとaaa-bbbでアクセスできる
0893nobodyさん2011/02/07(月) 20:08:31ID:???
>>890
そこは別にitemで良いじゃん。Cakeで変えられるんだし。
0894nobodyさん2011/02/07(月) 22:25:53ID:???
私はcakephpの勉強をするために参考になるサンプルを探しています。
1.3.x系ですでに出来上がっているECサイトの礎になるようなものは無いでしょうか?
分類マスタやアイテムの登録ができ、お買い物カート等のコンポーネントや二重登録防止
ajax時と通常時での認証やエラー出力が合理的に分離されているソースコードが見たいです。
BakeSaleはバージョンが古いようでした。
大変お手数ですが、どなたかご教示願います☆
0895nobodyさん2011/02/08(火) 01:35:20ID:???
Cakeって自動で不規則な複数形も面倒見てくれるの?
historiesとかchildrenとか
0896nobodyさん2011/02/08(火) 03:15:55ID:???
最後の1文字は余計だったと思うよ
0897nobodyさん2011/02/08(火) 03:27:28ID:???
>>895
正直そこまでやらんでもって思うが、特殊な複数形のやつとかは、
Inflectorクラスのプロパティに色々書いてあるぞ。
https://github.com/cakephp/cakephp/blob/master/cake/libs/inflector.php#L40
0898nobodyさん2011/02/08(火) 13:21:05ID:???
不規則な複数形は完全に英語ネイティブな人向けの機能だよね
personsでもいいじゃん!

とか思ってるから全然英語が上達しないんだろうか・・・
0899nobodyさん2011/02/08(火) 13:42:54ID:???
cakephpのcookbookはどうしてあんなに重いんですか?
0900nobodyさん2011/02/08(火) 13:56:14ID:???
ページ数が多い本だからかな
0901nobodyさん2011/02/08(火) 15:10:54ID:???
hasManyとbelongsToでアソシエーションしたテーブルのデータを1ページで複数レコードをsaveAllを使って一括更新しようとしています。

更新時に外部キーに設定したフィールドのレコードに空の値が送られてしまいます。
それ以外は正常に更新されています。

$form->hiddenで値を渡そうとしても、発行されているSQLの値は空になり、リレーションが壊れてしまいます。

どなたか回避策をご教授願います。
0902nobodyさん2011/02/08(火) 15:19:09ID:???
>>899
ほとんど静的ページなんだから、ビューキャッシュしたらいいのにな
0903nobodyさん2011/02/08(火) 15:31:21ID:???
>>901
formはとりあえず置いといて、
ShellでModelだけ扱うコード書いていけるか試す。
0904nobodyさん2011/02/08(火) 16:52:25ID:???
新しいCookbookはブラウザにキャッシュしてるよ
0905nobodyさん2011/02/08(火) 17:38:00ID:???
あほですわ
0906nobodyさん2011/02/08(火) 18:21:33ID:???
>>899
なんかクソ重いフレームワーク使ってるんじゃないかな
0907nobodyさん2011/02/08(火) 18:52:39ID:???
けしからんな
CakePHPで組み直してやれよ
0908nobodyさん2011/02/08(火) 19:15:53ID:???
公式サイト重くてよく落ちてるよね。
Cakeはローカルで使えるヘルプを用意するべき。

ヘルプをオンラインでしか提供しないのは、googleの広告収入目当てなのかね。
せこいな・・・

>>906
本家のサイトが重いと「駄目なフレームワークなんだな」という印象を与える。


>>904
特定のサイトを明示的に永久キャッシュさせるのってどうやるの?
普通はキャッシュはいつの間にか消えちゃうと思うけど
レス数が900を超えています。1000を超えると表示できなくなるよ。