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

【PHP】フレームワーク CakePHP 16ホール目【v2.4】

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

※他フレームワークとの比較等はスレ違いです

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

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja

http://kohada.2ch.net/test/read.cgi/php/1354593996/l50
0075nobodyさん2013/09/17(火) 13:45:38.86ID:???
controllerはわりと理解した
viewもわりと理解した
modelがよくわからない
他人が書いたソースを眺めるだけじゃなく、ちゃんと書籍なりで勉強すべきかな
0076nobodyさん2013/09/17(火) 13:54:53.58ID:???
フォームのinput submitでハマった。
普通なら/xxxx に飛ぶのに/xxxx/ に行ってしまって、その後のボタン処理が滅茶苦茶。
結局判らずリンク先をダイレクトに指定して回避したけど気持ち悪い。
Twitter Bootstrapを最近入れたけどCakePHPのフォーム処理と使い勝手が悪い感じがする。
0077nobodyさん2013/09/17(火) 13:59:43.68ID:???
入門書はいくつかあるけど中級以上向けのガイドが欲しいな
実際に開発始めると、例みたいに簡単な1コントローラ、1モデル、1ビューの構成に片付かない
1コントローラ複数モデルになると一気にコントローラが太るのを何とかしたい
0078nobodyさん2013/09/17(火) 14:21:37.80ID:???
>>74
なんか苦戦してるみたいだけど、
具体的に詳しく書けば何らかの助言は貰えると思うよ。

よくは分からないけど、あなたは今良くない方向へ向かっている気がする。
同じ努力をするなら少し方向を考え直した方がいいのでは?
0079nobodyさん2013/09/17(火) 16:36:07.83ID:???
複数形で書いたり単数形で書いたり、気持ち悪いったらありゃしない
0080nobodyさん2013/09/17(火) 16:37:37.77ID:???
>>76
フレームワークが暗黙的にいろんなデータを補完しているから、
初心者だとよくはまる失敗の典型ではないかと思います。

詳しく見れば必ず解決できるはずなんだけど、最初は調べ方すらわからないのが普通。

問題になってる FormHelper::create() のパラメータを書いて見れば?
0081nobodyさん2013/09/17(火) 16:40:07.14ID:???
>>79
アングロサクソンに合わせるしか無いのであきらめろ。
世界の文化を上書きできるならもう一度戦争してみればいい。
0082nobodyさん2013/09/17(火) 16:52:47.46ID:???
複数形が単純に「s」つけるだけならいいけど、company→companiesみたいに単純なものじゃないときにどうしていかわからないよ
0083nobodyさん2013/09/17(火) 17:35:09.83ID:???
どうでもいいけどdataの複数形は?
0084nobodyさん2013/09/17(火) 17:37:54.93ID:???
datum
0085nobodyさん2013/09/17(火) 17:41:21.66ID:???
>>83-84
ギャグじゃなければ逆
0086nobodyさん2013/09/17(火) 18:00:02.50ID:???
はっ!
0087nobodyさん2013/09/18(水) 15:18:46.52ID:???
ちょっと聞いてみるんですけど、
FoodsテーブルにcolumnとしてDish_id, Calorie, (質問には関係ないけどFoodnameも)が有って、
Dishesテーブルの内容を、それぞれのrowに属するFoodのCalorieの合計の大きい小さい順に
paginatorの機能を使って並び変えられるようにしたい時、どうするのが一番良いですかね?
DishesテーブルにCalorieの合計値を属性として持たせる、と言うのは思いついたんですがどうでしょうか?
CakePHPは2.2を使ってます。
0088nobodyさん2013/09/18(水) 15:59:01.32ID:???
>>87
間違ってないので良いんではないでしょうか
0089nobodyさん2013/09/18(水) 16:05:46.78ID:???
>>88
そうですか、ありがとうございます。
ただそうなると、もしFoodsテーブルのcalorie情報とDishesテーブルのcalorie合計値情報が
絶対矛盾しない様にしたいと思ったらトランザクションとか使わないといけないですよね?
もしくはcronとかを回してFoodsテーブルとDishesテーブルで矛盾が出たら検知するプログラムを走らせるとか?
0090nobodyさん2013/09/18(水) 21:07:53.48ID:???
MySQL ならトリガー使えばDB側で正確さを担保できる
0091nobodyさん2013/09/19(木) 01:15:58.79ID:???
>>55だけど!モデル理解するの無理そうだから。もうコントローラーにHTML書いて書いてく!
0092nobodyさん2013/09/19(木) 01:47:34.39ID:???
お、おう・・・
0093nobodyさん2013/09/19(木) 05:11:21.97ID:???
フレームワーク使う意味ないやんw
0094nobodyさん2013/09/19(木) 11:46:18.88ID:???
>>93
でもちゃんと理解できるまでそうするっていうのならありじゃない?
理解してないのに使うなは禁句
0095nobodyさん2013/09/19(木) 12:02:37.73ID:???
ネタなのかマジなのかわからないのが沢山混じってるな・・・
0096nobodyさん2013/09/19(木) 22:23:16.57ID:???
cakeを使うメリットを教えてほしいんだが、何がそんなにいいの?
0097nobodyさん2013/09/19(木) 23:00:16.87ID:???
勘違いしてるようだが
他FWに比べて、いいから使ってるわきゃない
0098nobodyさん2013/09/20(金) 00:26:53.84ID:???
日本語資料が(他と比べると)多い
それが一番じゃないかな?
0099nobodyさん2013/09/20(金) 00:31:48.40ID:???
最初になんとなくCakeを選んでしまった
今は後悔している
0100nobodyさん2013/09/20(金) 04:37:03.54ID:???
>> 96 97 98
96だが、日本語の資料が多いだけか。
他FWに比べて他のメリットってなにもないよね。
参考になったよありがとう。
0101nobodyさん2013/09/20(金) 05:51:49.74ID:???
特定のページに行くとセッションが切れるのなんなの?
0102nobodyさん2013/09/20(金) 07:38:57.90ID:???
>>101
特定のページの作りがおかしいんだろうな
0103nobodyさん2013/09/20(金) 09:51:34.51ID:???
>>101
ファイルの存在しないパスのアセットを取得しようとしてるかも。
一度CSSとかfaviconとかの記述をチェックして下さい。
0104nobodyさん2013/09/20(金) 16:20:28.57ID:???
AuthってAppControllerに指定してる?
してないならセッション切れの原因になると思う
俺も一部のコントローラーだけ指定してたらそうなった
0105nobodyさん2013/09/20(金) 17:24:32.38ID:???
>>100
cakeはcontrollerの部分はすごく便利
だが、modelはダメダメ
viewもわりと使いやすい
0106nobodyさん2013/09/20(金) 17:31:35.17ID:???
俺は基本デザイナーで、片手間でフレームワークを覚えなくちゃなんなくて
仕方なく始めたのがCakePHP1.3だった。

で、特に不満もなく今に至るという感じで、
なんとか2系にはシフトできたけど
ほかのフレームワークを試せるほど余裕が無い。

Cakeをある程度使えるようになるまで時間がかかったから、
それと同じぐらいの手間をかけてまで
他にまで手を広げようという意欲がわかないだけで、
簡単に他のを試せるならCakeを使っていないかもしれない。

そういう人は多いのじゃないかと思うがどうだろう。
0107nobodyさん2013/09/20(金) 17:58:36.98ID:???
俺がCakeに手を出した頃(2009〜10)が多分Cakeの全盛期だったんだと思う
その頃はまだFuelPHP等も流行ってなく、PHPのMVCフレームワークといえばどの本も大体Cakeを筆頭に挙げてた
で俺も勝ち馬に乗るつもりで手を出してみたんだけど、使ってみたらイマイチで他に新しいのがどんどん出てきた
けどキッツキツの仕事のスケジュールの中ではコードの再利用や学習コストを考えると他に以降できない
気に入らない点のいくつかは2で改善したし一応使い物になってるのでそのままって感じ
0108nobodyさん2013/09/20(金) 18:10:37.86ID:???
後発が良いツールなのは世の常だけど、
情報量が少ないとわざわざ覚えようと思わないよね
0109nobodyさん2013/09/20(金) 18:48:44.64ID:???
情報量に関してはCakeが特にいいと思わないな。
英語でもいいから公式ドキュメントをもっと充実して欲しいね、使い込む人用に。
ネットの記事や本も2より1の時の方が多かったよね、3になったら更に減ったりするのかな。
0110nobodyさん2013/09/20(金) 18:51:58.92ID:???
ドキュメント十分だろ。これ以上はソース読めレベル。
0111nobodyさん2013/09/20(金) 20:07:24.91ID:???
ドキュメントって何だか文系向けだよね。
体系的・科学的じゃない。
0112nobodyさん2013/09/20(金) 20:09:43.10ID:???
100だが
Struts(java)⇒Symfony1系⇒ZendFW1系⇒Symfony2系⇒Cake2系と変遷してきた。

ドキュメントは公式のページで充分だしわからないとこはソースみりゃいいよね。
どんなFWでも同じ。

初めて触ってみたけどcakeの良いとこが多少学習コストが低いかもくらいしか見つからなかったんだ。
それで聞いてみた。
0113nobodyさん2013/09/20(金) 20:27:59.86ID:???
公式ドキュメント全然十分じゃないよ。開発中知りたい事が全然載ってない。
初心者騙しにしかなってない。
わからなかったらソース読めとかアホかそんな効率悪い事できるのは暇人だけ。皆働いてんだよ。
0114nobodyさん2013/09/21(土) 00:07:12.40ID:???
Haveの複数形はhasでいいの?havesになったりしない?
0115nobodyさん2013/09/21(土) 00:39:39.41ID:???
俺はどうも複数形には慣れないな
単数形にすることも出来るけど、フォーム処理で躓く時あるし
0116nobodyさん2013/09/21(土) 00:53:11.30ID:???
一応テーブル名複数形、モデル名単数形のコーディング規約にしてるけど
数人でプロジェクト組むと、うっかり守らない奴が出るんだよなあ
0117nobodyさん2013/09/21(土) 01:19:39.04ID:???
>>114
名詞でhaveなんか使うのか?別にいいけど。。。
0118nobodyさん2013/09/21(土) 01:21:56.95ID:???
ちなみに名詞で have って言ったら「(莫大な富とかを)持ってる人」みたいな意味です。
その場合は単数形が have で、複数形が haves だよ。
0119nobodyさん2013/09/21(土) 01:27:56.10ID:???
英語文化は尊重するけど、英語じゃない単語の扱いが半端無く面倒くさい。
0120あ2013/09/21(土) 01:41:26.10ID:???
iphoneアプリのサーバ側でcakephpを使おうと思ってます。
会員制のアプリで、アプリからブログの更新ができるようにしたいです。
ログイン後のトークン発行など、、ここらへんがよくわかりません。。
どんな流れになるのでしょうか?
よろしくお願いします。
0121nobodyさん2013/09/21(土) 03:32:29.71ID:???
>>120
http://book.cakephp.org/2.0/ja/tutorials-and-examples/blog-auth-example/auth.html
0122nobodyさん2013/09/21(土) 09:22:19.71ID:IxVA/8jO
わかる方がいれば、教えてほしいんですが以下のSQLをCakePHP用に
書き直す場合にどのようにすればよいでしょうか

select
カラムA,(select カラムB from テーブル where カラムA=t1.カラムA order by rand() limit 1)
from
(select カラムA from テーブル group by カラムA) t1;
0123nobodyさん2013/09/21(土) 12:05:47.80ID:h7jpowpU
>>122
直書き 一択
0124nobodyさん2013/09/21(土) 12:12:42.26ID:???
>> 113
調べることが暇人ってなんだ?
やりたいことが載ってないって応用力ないんだなww
答えそのものが載ってないとできない奴っているよねw
cakeが初心者用のフレームワークって納得したよ。
0125nobodyさん2013/09/21(土) 12:29:05.54ID:???
たとえばさ、モデルのバリデーションの指定方法一覧ぐらいは、公式が用意してくれてもバチはあたらないと思うんだ
ソース検索して開いて見るより、ドキュメントがあったほうが見やすいだろ?
0126nobodyさん2013/09/21(土) 12:38:54.14ID:???
2系を使っています。コントローラとアクションが
存在するか調べる機能ってないですかね?
小一時間ググったのですが、見つけられませんでした・・・
0127nobodyさん2013/09/21(土) 12:48:08.89ID:h7jpowpU
>>126
特別な方法はないと思う

Shellプラグインの作成で結構地味に調べたのを記憶してる
0128nobodyさん2013/09/21(土) 12:54:35.00ID:???
ないのかよ
0129nobodyさん2013/09/21(土) 12:55:01.64ID:???
> 125
公式
http://book.cakephp.org/2.0/en/models/data-validation.html

ソース
lib/Cake/Utility/Validation.php

公式に全部載ってるかどうか知らんが、1つでも載ってたらソース見ないの?
どんなチェックしてるか知らないのに実装するの?

> 126
http://phpspot.net/php/pg%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%8C%E5%AD%98%E5%9C%A8%E3%81%99%E3%82%8B%E3%81%8B%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF.html
0130nobodyさん2013/09/21(土) 14:04:59.28ID:???
>>129
cakeの機能としてはないんですね。
ビューの一部をDBに保存してるのであればと思いましたが、
ないということなので定数からパスを作成して調べます
0131nobodyさん2013/09/21(土) 16:43:48.92ID:McaoFmaC
フォームのデータの受け取り方がどうしてもわかりません。
具体的にはコンボボックスやラジオボタンで選択されたデータをコントローラーで知りたいのですが、

$this->data[テーブル名][カラム名] データベースのデータじゃなくてコントローラーで設定した値なので使えない。
$this->param['form][???] paramにPOSTデータが全部入るようなのですが、二番目の引数に何を指定すれば求めるものが取得できるのかわかりません。
何を入れてもnullが返ってきます。根本的に考え違いしていますか?
0132nobodyさん2013/09/21(土) 16:56:23.08ID:IxVA/8jO
>>131
間違ってたらごめん。
どんなデータがpostされてるかはchromeなら要素検証から見れるから
それを参考に書いてみるといいと思う。

cakephp2しか触ったことないけど、その場合は下の感じで受け取るね
$this->request->data['model']['id']みたいな感じ
0133nobodyさん2013/09/21(土) 17:01:45.99ID:???
var_dump($this->request->data);
で確認してみるとよさそう
0134nobodyさん2013/09/22(日) 03:28:58.52ID:???
debug()さん「・・・」
0135nobodyさん2013/09/22(日) 03:45:13.84ID:???
2.3.10(たぶん2系)で、AuthのuserModelでバーチャルフィールドを
指定していると、ログイン時になにも入力しなくても
ログインできてしまう問題に遭遇した。

バーチャルフィールドの指定を外すとエラーチェックしてくれるから
バーチャルフィールドが問題だと思うけど、
これを突き止めるのに4時間かかったぜ・・・
似た問題に遭遇してる人は参考にしてください。
0136nobodyさん2013/09/22(日) 03:48:28.58ID:???
>>129
あざっす、そこに載っていたのか
そのページ前からあった?以前英語のページ含め結構探したんだが…

ソースは基本読まないで使うなあ、バグ解析などで必要にならないと読まない
他人のコード読みながら作る時間があったら自分で作るからなあ
0137nobodyさん2013/09/22(日) 03:49:53.63ID:???
>>135
再現してみたいので出来ればもうちょい詳しくお願いします。

バーチャルフィールドの指定ってのは

User::$virsutalFields = array(...);

ってことでいいのかな?
0138nobodyさん2013/09/22(日) 04:17:47.94ID:ILax0A3i
>>136
>他人のコード読みながら作る時間があったら自分で作るからなあ

フレームワーク使う意味ないんじゃ…
0139nobodyさん2013/09/22(日) 04:30:37.36ID:???
なんで?言ってる意味がわからん
0140nobodyさん2013/09/22(日) 12:58:56.82ID:???
作るのが面倒、時間ないからFW使うんじゃないよ
むしろそういう奴は使わない方がいいと思う
0141nobodyさん2013/09/22(日) 13:56:20.61ID:???
は?FWって開発速度を上げるために使うものだろ
他に何のメリットがあるんだよ
0142nobodyさん2013/09/22(日) 14:03:11.87ID:???
>>141
速度だけだと思ってるなら勉強しなおせ。
0143nobodyさん2013/09/22(日) 15:00:26.29ID:???
開発速度あげるだけなら、オレオレが一番早いと思うが。
自分が好きなように作れるんだし
0144nobodyさん2013/09/22(日) 16:08:37.23ID:???
えっ
どんな低機能のフレームワークだよ…
0145nobodyさん2013/09/22(日) 19:24:19.17ID:???
> FWって開発速度を上げるために使うもの
wwwwくそわろた
0146nobodyさん2013/09/22(日) 21:32:19.12ID:???
セッション切れ問題がデータベースを空にしたら治った
原因不明過ぎて怖い
0147nobodyさん2013/09/22(日) 23:04:15.03ID:???
そういうのあるね。特にAuth関係は不可解なこと多い
0148nobodyさん2013/09/22(日) 23:12:27.52ID:1/Rn/nVo
本番でなったら恐ろしすぎるんだけど
0149nobodyさん2013/09/22(日) 23:59:51.35ID:???
ま、nanapiとかランサーズとか
有名な会員サイトで使えてるんだから、何とかなるでしょ
0150nobodyさん2013/09/23(月) 00:16:18.34ID:???
Twitterのあうth認証って新しく作ったアカウントだと拾ってくれなかったりする?
0151nobodyさん2013/09/23(月) 05:48:35.98ID:???
>>146
> セッション切れ問題がデータベースを空にしたら治った
> 原因不明過ぎて怖い

あ、それ簡単だよ。セッションが壊れてるの
MySQLはデフォルトの設定で文字数が定義より多くて
溢れても、途中で切れるだけで処理が正常終了しちゃうんだよね。
その時、壊れたセッションが出来上がる。
0152nobodyさん2013/09/23(月) 10:30:15.39ID:???
>>145
何もおかしいこと言ってないと思うんだけど何が面白いのかな
0153nobodyさん2013/09/23(月) 10:43:47.86ID:???
やっぱそうだよね
俺もそう思っていた
0154nobodyさん2013/09/23(月) 13:37:52.78ID:???
コントローラーに書いてある$thisってなにがはいってるの?
何を指してるの?
0155nobodyさん2013/09/23(月) 13:43:42.09ID:???
マジで言ってんの?
0156nobodyさん2013/09/23(月) 13:49:32.13ID:???
CakeはSecurity.levelの設定をhighにしてるとわけのわからないセッション切れとか問題てんこ盛りで起きる
仕方なくmediumで使うと安定している
0157nobodyさん2013/09/23(月) 14:34:05.91ID:???
>>152
お前も勉強しろ
0158nobodyさん2013/09/23(月) 16:47:11.98ID:???
>>152
「フレームワーク メリット」でぐぐって勉強しましょう。

>>154
クラスを勉強しましょう。
0159nobodyさん2013/09/23(月) 17:10:55.17ID:???
反論できないと見える
0160nobodyさん2013/09/24(火) 10:22:15.50ID:PewVrVzx
cakeのわかりにくさは、モデルのわかりにくさ、単数形複数形の使い分けの分かりにくさに直結してると思う
0161nobodyさん2013/09/24(火) 10:48:16.58ID:???
思いません
0162nobodyさん2013/09/24(火) 11:01:06.76ID:???
マジックメソッド、コールバックメソッド、
リフレクションを用いた初期設定値の自動マージ、
そのあたりの隠蔽された処理の把握に苦戦する。

とは言え、これはCakeに限ったことじゃないが。
0163nobodyさん2013/09/24(火) 12:09:00.22ID:???
>>162
オレもいまCake使ってて
モデルが単数形でコントローラーが複数形だけど
それって他のフレームワークも同じ?
フォームヘルパーとか$this->request->data=$this->Post->read()の値をフォームで使えるようにするらしいけど
$this->set('xxx',$this->request->data);じゃなくて
そのまま使えるけどそれも隠蔽されてるっていうの?
0164nobodyさん2013/09/24(火) 13:18:17.37ID:???
>>153
一人のキチガイが根拠も示さず必死に否定してるけど
開発速度向上はフレームワークのメリットのひとつだよ
0165nobodyさん2013/09/24(火) 13:56:07.30ID:???
>>163
未作成のモデルをCakePHPみたいに暗黙的に呼び出すというのは俺は知らない。
SynfonyにしろCodeIgniterにしろテーブルと関連付けた
アクティブレコードを明示する必要があって、
そこで単数形にするかどうかは好きにすればって感じだったと思う。

> フォームヘルパーとか$this->request->data=$this->Post->read()の値をフォームで使えるようにする

え、そうなん?初耳だわ。
0166nobodyさん2013/09/24(火) 14:28:03.92ID:???
>>165

>ほとんどの場合、このような形式を意識することはありません。
>CakePHPの FormHelper やモデルのfindメソッドは全てこの形式に従っています。
>FormHelperを使っていれば、 $this->request->data で簡単にこの形式のデータにアクセスできるようになっています。

$this->setに代入じゃなくて
$this->request->dataに代入で使える

変なの
0167nobodyさん2013/09/24(火) 14:53:11.90ID:2aQmFqKG
そこまでやってくれなくても… って感じだな
0168nobodyさん2013/09/24(火) 16:31:42.77ID:???
モデルを単数形、テーブルを複数形、コントローラーを複数形っていうルールは他のフレームワークも同じですか?
教えてください
0169nobodyさん2013/09/24(火) 16:36:08.50ID:???
>>164
141を読んでくれ。これをどう解釈するかだ。
0170nobodyさん2013/09/24(火) 17:46:21.20ID:???
単数形、複数形の問題ってビューのコーディング時にも悩むんだよな
0171nobodyさん2013/09/24(火) 18:01:42.34ID:???
>>169
他に何のメリットがあるの?
開発速度以外はデメリットだらけだろ
オープンソースのFWはオレオレ作る時間がない時に仕方なく使うもの
0172nobodyさん2013/09/24(火) 18:10:35.82ID:???
>>171
品質の向上とかあるだろggrks。

cakeが最良とは言わんが、今の時勢でフレームワークを使うことを考慮しないのはありえん。
0173nobodyさん2013/09/24(火) 18:12:57.27ID:???
>>171
メリットのひとつだけど他にもいろいろあるでしょ
0174nobodyさん2013/09/24(火) 18:24:26.00ID:???
>>171
・利用者が多いので、プラグイン作成の手間が省ける
・大規模サイトでも利用されてる安心感
・命名規則が統一してるから、名前付けで悩まなくてもいい
・不特定多数で開発する時、意思の疎通が図りやすい
・コピペで作っても不具合が起きづらい
・公式が現在も開発を続けている安心感

まだ続けてるか?
■ このスレッドは過去ログ倉庫に格納されています