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

【PHP】フレームワーク CakePHP 12ホール目【笑】

レス数が900を超えています。1000を超えると表示できなくなるよ。
0001nobodyさん2011/07/01(金) 16:33:46.28ID:???
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

前スレ
【PHP】フレームワーク CakePHP 11ホール目【v1.3】
http://hibari.2ch.net/test/read.cgi/php/1297860755/
0818nobodyさん2011/10/28(金) 03:53:00.84ID:0WPYyAnp
スマホアプリ用のJSON返すだけの画面のないWeb APIで
CakePHP2.0使おうかと思ってるんだけどどうっすかね?
Web APIの数は数十本くらいになると思うんだけど
その程度でCakePHPはやめとけとか他のフレームワークの方がいいよとか
意見聞かせてください。
0819nobodyさん2011/10/28(金) 03:59:15.54ID:???
データベース結果からJSON返すの楽だし止める理由は無いです
0820nobodyさん2011/10/28(金) 04:08:11.79ID:???
>>817
それ、設計がおかしくないか?
セレクトメニューから件数選ぶのが定石だと思うが。
0821nobodyさん2011/10/28(金) 06:51:50.59ID:???
http://book.cakephp.org/ja/view/1323/%E3%82%B3%E3%83%B3%E3%83%86%E3%82%A4%E3%83%8A%E3%83%96%E3%83%AB
お前らコレ使ってる?
なんか複雑なクエリ発行したいときに便利そうだが
0822nobodyさん2011/10/28(金) 09:40:50.71ID:???
>>820
言葉が足りなかった。件数の設定をやめさせる、というわけではないよ。

コントローラでlimitをパラメータから取得して、paginateのオプションに
明示的に設定してから、paginateを実行する。
0823nobodyさん2011/10/28(金) 11:33:30.55ID:k+uCwlGG
Amazon SimpleDB用のデータソースを作った人いる?
0824nobodyさん2011/10/28(金) 12:42:59.99ID:???
>>818
実際やってるけど楽です
管理画面も同時に作ってます
0825nobodyさん2011/10/28(金) 12:45:33.90ID:???
>>821
使ってます
recursiveとjoinsと組み合わせて
0826nobodyさん2011/10/28(金) 14:26:18.96ID:???
Containable使わないとか有り得ない程度には思ってる
0827nobodyさん2011/10/28(金) 15:09:23.87ID:???
俺も。
時々Containableでは賄いきれなくてbindModelとか使うはめになるとチッって思う。
0828nobodyさん2011/10/28(金) 16:10:21.67ID:???
俺はもうjoinsを中心に使ってる。
色々付けたり外したりしてると、わけわからんようになってくるしw
0829nobodyさん2011/10/28(金) 16:33:42.39ID:???
Containableって要はなんなの?
わかりやすく説明して賢い人!
0830nobodyさん2011/10/28(金) 16:54:11.63ID:???
ボクもContainableしりたい
0831nobodyさん2011/10/28(金) 17:45:15.20ID:???
containableは基本的に全部のモデルを関連づけておいて、必要に応じて取ってくるモデルを選択するやりかた
bind,unbindするより500倍扱いやすい

http://book.cakephp.org/ja/view/1323/%E3%82%B3%E3%83%B3%E3%83%86%E3%82%A4%E3%83%8A%E3%83%96%E3%83%AB
>コンテイナブルを使わないならモデルの unbindModel() を使用することになります。複数のモデルを切り離すなら、
>unbindModel() を何度も実行しなければなりません。コンテイナブルによって同じことをより簡潔に行えます。
0832nobodyさん2011/10/28(金) 18:19:37.84ID:???
>>831
関連付けってアソシエイションのことだよね?
関連付けたモデルを取得しないってのは
recursiveでやるじゃなかったっけ?
0833nobodyさん2011/10/28(金) 18:33:08.66ID:???
paginate使ってる人、
groupオプション(GROUP BY)付けてページネートしてみて
ページが1ページしかないように返してくるから
これってバグだよね?

ググってみると、
http://d.hatena.ne.jp/aroundthedistance/20090728/1248784179
こんな記事もあるんだけど、
2009年の記事なのに未だに(1.3使用)直ってないってこと?
0834nobodyさん2011/10/28(金) 19:31:34.10ID:???
モデルの関連づけがいまいちわからないのですけどいいサイトあったらおしえてください
0835nobodyさん2011/10/28(金) 22:04:00.46ID:???
結局cookbook以外は断片的な情報集めるしかない気がする
0836nobodyさん2011/10/28(金) 22:14:35.50ID:???
実開発でもそうだった。
検索して、ヒットしたブログ記事を参考に実装してた。
0837nobodyさん2011/10/28(金) 23:14:17.04ID:???
>>832
recursiveでもできるよ。
だけど、containableを使うともっと細かく制御できる。
例えば、
usersテーブルに
hasOneでprofilesテーブルと
postsテーブルが
関連付けされててusersとprofilesだけ欲しい場合

$this->Users->find('all', array('contain' => 'Profile'));で取れる。
08388372011/10/28(金) 23:20:05.03ID:???
さらに、ProfileにState(都道府県)を関連づけしてる場合

$this->Users->find('all', array(
  'contain' => array(
    'Profile' => array('State')
  )
));
で取れる。
0839nobodyさん2011/10/29(土) 02:46:57.22ID:???
>>833
誰かこれどう?1.3以上の人試してくれない?
コントローラの設定で、
var $paginate = array(
  'Model' => array(
    'group' => 'Model.id',
    'order' => 'Model.id DESC',
    'limit' => 5,
  )
);
としてみるだけでいい
ページネーションのページ数が1になる
(ページ数(pageCount)が入っている配列はView内で $paginator->params() で取得可能)
0840nobodyさん2011/10/29(土) 02:54:42.55ID:???
>>839
・paginateメソッドがgroupに対応するとより複雑なグルーピングなどに対応できないなどの
拘束が生まれるので仕様
・バグじゃないから直らない
・記事の通りコールバック書け
0841nobodyさん2011/10/29(土) 12:19:25.54ID:???
>>838
都道府県にはprefを使って欲しい。
stateじゃアメリカ合衆国の州をイメージする
0842nobodyさん2011/10/29(土) 14:14:52.28ID:???
>>840
まだ直ってないのか・・・
バグというより非対応って考えなきゃいけないのか
0843nobodyさん2011/10/29(土) 18:13:26.22ID:???
>>837-838
これはわかりやすい!直感的にイメージできた。GJ!
0844nobodyさん2011/10/30(日) 09:00:13.02ID:???
CakePHPで画像のサムネイルをリアルタイム(アクセス毎)で生成してるんだけど、
40画像ぐらい表示させると、表示しない画像がちらほら出てくる・・・

実装としては、大きな画像をサーバ上に置いて、
・<img src="<?php echo $html->url('/thumbnails/view/1234'); " />
 のようにimgタグでコントローラにリクエスト
・渡されたIDをもとに画像のパスが保存されてるテーブルをfind()
・その画像からサムネイルを生成して返す
という感じ。

1人がアクセスするたびに、40個画像があれば、
CakePHPが40個起動するのはやっぱりこの実装は問題ありなのかな?
同時接続数にひっかかってる気もする

ちなみに ZOZOTOWN(http://zozo.jp)はCakePHPではないと思うけど、
上記のような感じでアクセスされて生成している模様
0845nobodyさん2011/10/30(日) 10:55:31.34ID:???
ZOZOTOWNみたいなアクセスの多いサイトがアクセスの度にサムネイルを生成してるわけがない。
実装に問題あり。
0846nobodyさん2011/10/30(日) 12:54:12.82ID:???
サムネイルは本画像保存時に同時に作成するのが普通では?
0847nobodyさん2011/10/30(日) 18:03:57.54ID:???
さすがに40個を毎回作成してたら不具合出るわw
0848nobodyさん2011/10/30(日) 23:20:56.06ID:???
>>846だな
サムネイルキャッシュは公開ディレクトリに置くか、tmpディレクトリに生成して生PHPで読みに行かせるのがいいと思う
0849nobodyさん2011/10/31(月) 00:54:49.04ID:???
PHP通すなら、HTTPヘッダでブラウザにキャッシュさせることも考えたほうがいい。
Mediaビューが便利。
08508442011/10/31(月) 06:30:50.20ID:???
みなさんありがとうございます。

>>845
してると思います
ただ、生成したあとキャッシュしてるかもしれませんが、、、
http://imgc.zozo.jp/goodsimages/2207214/2207214_18_D.jpg?w=70&h=84
例えばこの画像だけど、
wやhの値を変えると、その大きさになります
http://imgc.zozo.jp/goodsimages/2207214/2207214_18_D.jpg?w=111
こんな感じで適当な値を全て保存してるはずないので
アクセスしたときに生成してるんだと思います

>>846
はい、最初はそう考えましたが、
様々な大きさにフレキシブルに対応したいと思って、
>>844のような実装にしたくなったのです

一度生成した画像はそのまま保存して、
その大きさの画像があれば、その保存したものを取りに行くという実装にしようかな?
ZOZOTOWNのような人気サイトはどう対応してるのか・・・
0851nobodyさん2011/10/31(月) 07:09:00.82ID:???
結局グランドデザインまで関わる設計の問題だろう。
後は自分で考えなさいな。CakePHPはそこまでお世話できないよ。
0852nobodyさん2011/10/31(月) 12:08:18.41ID:???
>>850
そりゃ、サイズを入力したらそのサイズで表示(生成)されるよ。

でも、基本的にはショッピングサイトの画像サイズなんて決まってるから、
サイトで使用する画像だけ先に生成されるようにしてるんだろ。
だから、1アクセスで全ての画像を作成するんじゃないと思うよ。
0853nobodyさん2011/10/31(月) 12:13:10.79ID:???
キャッシュしてなかったら即死だろ
0854nobodyさん2011/10/31(月) 14:39:06.95ID:???
joins に関して質問なんですが、
User が複数の Item を持っているという仮定で、以下のようにすると Apple か Orange のいずれかをもつユーザーが抽出されます。

$options['joins'] = array(
 array(
  'table' => 'items',
  'alias' => 'Item',
  'type' => 'INNER',
  'conditions' => array(
    "Item.user_id = User.id"
  )
 )
);
$options['conditions'] = array(
 'OR' => array(
  'Item.name = "Apple"',
  'Item.name = "Orange"',
 )
);
$users = $this->User->find('all', $options);

これを Apple と Orange 両方持つユーザーを抽出したい場合どうしたらいいでしょうか?
MySQL のクエリは素人同然ですが、なにかヒントなどでもありましたらアドバイス下さい。
0855nobodyさん2011/10/31(月) 18:48:00.13ID:???
cakephp2.0正式版がでたら勉強しようと思うのですが
いつごろでるか予定は発表されてますか?
0856nobodyさん2011/10/31(月) 19:36:30.56ID:???
stableもう出てるよ
0857nobodyさん2011/10/31(月) 19:39:16.86ID:???
いまCodeIgniterを使っているんですけどCakePHPに乗り換えたいと思います
cakephpのライセンス情報はどこに載ってますか?
0858nobodyさん2011/10/31(月) 20:17:55.13ID:???
クライアントに出力するビューからコメントを全部取り除いてくれるプラグイン有りませんか
0859nobodyさん2011/10/31(月) 20:54:23.92ID:???
Formヘルパーのinput('date')でフォーマットをYのみにするとDBに値が入らないんです。
YMDとかDMYとか年月日全て指定すれば値が入るんですが。
今beforeValidateで無理矢理データを整形してるんですけど皆さんどうしてます?
0860nobodyさん2011/10/31(月) 20:57:21.01ID:???
>>857-859
ggrks
0861nobodyさん2011/10/31(月) 21:33:56.58ID:???
>>860
しね
0862nobodyさん2011/10/31(月) 22:07:16.70ID:???
>>856
stableというのは正式ばんなんでしょうか
0863nobodyさん2011/10/31(月) 23:17:00.61ID:???
>>862

正式ばんってなんだ

stable = 安定版だけど
0864nobodyさん2011/11/01(火) 00:53:36.92ID:???
安定板というのをつかうのがふつうなんですか
0865nobodyさん2011/11/01(火) 01:02:34.11ID:???
質問に答えろカス
0866nobodyさん2011/11/01(火) 01:14:50.00ID:???
10年前の2chみたいだ
0867nobodyさん2011/11/01(火) 02:04:57.18ID:???
CakePHPがphpのフレームワークでいちばんもりあがってるというのは本当ですか
0868nobodyさん2011/11/01(火) 03:34:05.50ID:???
はい
0869nobodyさん2011/11/01(火) 04:05:34.99ID:???
ありがと
0870nobodyさん2011/11/01(火) 07:33:05.24ID:???
CakeDCのTagsPluginをダウンロードしようとして3ドル支払いしてもダウンロードできねーぞ
金返せやゴルァ
0871nobodyさん2011/11/01(火) 13:03:35.99ID:???
>>870
有料なのか?
0872nobodyさん2011/11/01(火) 13:19:26.19ID:mfdF/wRx
http://www.inworks.jp/archives/103
↑のブログの意見と同じくsmartyの
利便性がそれほど感じれず、そして、この利便性の割に
何故これほど普及したのかがよく分かりません。
優れているのはsmartyじゃなくてMVCという
考え方のほうだと思うんですけどどうなんでしょ
0873nobodyさん2011/11/01(火) 13:27:43.98ID:???
>>249-285
0874nobodyさん2011/11/01(火) 13:42:39.88ID:???
なんでも一個ぐらいサイト作ってみて、
こういうサイトならこれだな。っていうのを見つけとけばいいだけの話じゃ。
0875nobodyさん2011/11/01(火) 14:21:28.38ID:???
smartyで書いてって言われれば誰が書いても同じようなコーディングになるのがメリット
php自体がテンプレートだから不要という意見もあるが、自由すぎて書く人によってコードの質が代わってくる
そこを埋めてくれるのがsmarty
一人しか開発に携わらないならフレームワーク+smartyなんて時間がかかるだけだよ
0876nobodyさん2011/11/01(火) 15:34:31.28ID:???
http://hoge/user_name のようなURLは使いたくなくて
標準の http://hoge/users/view/user_id みたいにしたいんですが
エンジニア以外やcakeを使っていない人を説得できるうまい方法が
あったら教えてください…
0877nobodyさん2011/11/01(火) 15:48:02.23ID:???
自分の言葉で正直に言えば納得するよ
0878nobodyさん2011/11/01(火) 15:48:27.60ID:???
標準は開発者側の楽をしたいための甘え
前者のほうがみやすい
0879nobodyさん2011/11/01(火) 15:51:12.54ID:???
Cake2.0で、定数「APP_PATH」って消えた?
0880nobodyさん2011/11/01(火) 16:49:15.06ID:???
>>876
ユーザー名とサイトのパスが被らないように一段掘り下げて users から始めたい
社内アプリなんで user_name でURLを永続化させる意味がない
とか理由があるんでしょ?なぜ他人に聞く
0881nobodyさん2011/11/01(火) 17:07:38.77ID:???
クライアントに出力するビューからコメントを全部取り除いてくれるプラグイン有りませんか
0882nobodyさん2011/11/01(火) 17:40:16.80ID:???
>>881
そんなもん、afterFilterで正規表現で置換すればいいじゃん
0883nobodyさん2011/11/01(火) 21:43:02.89ID:???
pearでamazonの情報ゲットするみたいな処理は複数のコントローラから呼び出しいんですけど
cakephpのコンポーネントに書くのがふつうですか?
0884nobodyさん2011/11/01(火) 23:30:24.20ID:???
webroot にある files って何が入るの?
0885nobodyさん2011/11/01(火) 23:45:13.83ID:???
公開したい画像やCSS
0886nobodyさん2011/11/01(火) 23:47:41.47ID:???
いわゆる
/var/www/html直下だよ。
0887nobodyさん2011/11/02(水) 01:01:01.14ID:???
おまえらちゃんと質問にこたえてください
0888nobodyさん2011/11/02(水) 01:55:43.60ID:???
>>887
おまえの質問はどれだよw
0889nobodyさん2011/11/02(水) 03:01:48.18ID:???
>>888
すまん。883なんだ。ありがとうございます
0890nobodyさん2011/11/02(水) 09:10:25.41ID:???
>>883
普通です
0891nobodyさん2011/11/02(水) 10:32:38.35ID:???
>>850
亀だけどphpThumb使ってんじゃねーの?
Cake関係ないけどさ。
0892nobodyさん2011/11/02(水) 10:40:51.01ID:???
>>880
ありがとうございます
user/user_name で妥協してもらえるようにします
0893nobodyさん2011/11/02(水) 10:54:20.47ID:???
どこかの外部サイトから、自分のサイトにリンクで飛んできた場合、
どのようにして、リンク元のアドレスを知ることを出来るでしょうか?
0894nobodyさん2011/11/02(水) 12:22:13.86ID:???
>>893
こちらへどうぞ
http://hibari.2ch.net/test/read.cgi/hp/1317832246/
0895nobodyさん2011/11/02(水) 13:54:57.66ID:???
view内のJavaScriptを全部Minifiedしてくれるプラグインありませんか
0896nobodyさん2011/11/02(水) 15:12:23.06ID:???
ありません
0897nobodyさん2011/11/02(水) 15:55:00.74ID:???
ないのかよ
0898nobodyさん2011/11/02(水) 16:31:28.48ID:???
cakephpつかってる有名なサイトはありますか
0899nobodyさん2011/11/02(水) 17:25:41.36ID:???
あります
0900nobodyさん2011/11/02(水) 18:59:40.99ID:???
アソシエーションされたモデルのbehaviorのafterFindが動かないのは仕様?
ググってもこれといった情報なくてtriggerで強制的に叩いてるんだけどみんなどうしてる?
0901nobodyさん2011/11/02(水) 20:15:06.72ID:???
>>890
ありがとう
09028442011/11/02(水) 20:57:27.21ID:???
>>891
え、使ってますけど、なにかあるんですか?
0903nobodyさん2011/11/02(水) 22:06:11.89ID:???
>>899
なあにそれ
0904nobodyさん2011/11/02(水) 23:49:38.53ID:???
mozilla developperなんちゃらってサイトはまだcake製だっけか?
0905nobodyさん2011/11/03(木) 01:28:26.81ID:???
cakephpでgreeとかクックパッドみたいなでかいサイトあるの
0906nobodyさん2011/11/03(木) 01:41:16.27ID:???
nanapi
0907nobodyさん2011/11/03(木) 01:59:59.87ID:???
nanapiで使ってるんだ。すごい
0908nobodyさん2011/11/03(木) 02:47:51.32ID:BQfojvD+
CakePHP2.0の情報がほとんど無くて困る。
Cookbookもまだ英語だし。ブログとかでも情報皆無だし。
これから開発で使いたいんだけどどうすればいい?
0909nobodyさん2011/11/03(木) 02:58:24.30ID:???
>>908
ほんやくしてよ
0910nobodyさん2011/11/03(木) 03:28:44.79ID:???
翻訳の人も一所懸命進めてる途中っぽいけど、
待ってたってどうにもならんから英語で読めばいいんじゃないすかね
英語ドキュメント恐怖症を直せば自分のためにもなるし読める情報も増えるし一石二鳥。
0911nobodyさん2011/11/03(木) 10:32:06.69ID:???
>>908
わからなくなったらソースを読めば良いよ。
0912nobodyさん2011/11/03(木) 10:39:33.71ID:???
他人の書いたソースを解析するくらいなら自分で書いた方が速いな
0913nobodyさん2011/11/03(木) 11:18:26.53ID:???
CakePHPのCookieおかしくない?
あとSessionも
0914nobodyさん2011/11/03(木) 11:29:31.40ID:???
Sessionおかしいと思う
だましだまし使ってるけど
0915nobodyさん2011/11/03(木) 14:12:18.21ID:???
やだ…>>912のコードリーディング能力低すぎ…!?
0916nobodyさん2011/11/03(木) 15:42:44.18ID:???
翻訳手伝いたいけど、長期的に関わる気にもなれないし、気が向いたときに1ページ位ずつ翻訳できないかな
0917nobodyさん2011/11/03(木) 15:52:36.86ID:???
CakePHP2.0でController/AppController.phpを置いておいても読み込んでくれないのでしょうか
なかみを呼ぼうとするとPHP Fatal error: Call to undefined method がでちゃうんですけど
レス数が900を超えています。1000を超えると表示できなくなるよ。