トップページ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
0483nobodyさん2010/06/03(木) 11:33:09ID:???
>>482
ない
あと同じ質問以前にあったから検索すること
0484nobodyさん2010/06/03(木) 14:10:48ID:???
>>482
Search Plugin 使うとよい
0485nobodyさん2010/06/04(金) 03:35:38ID:NZTGzHeO
MediaPluginって、モデルごとにサムネイルサイズ指定できない?
Configure::write()での指定をモデルごとに入れてやろうかとも思ったけど、
viewで表示する際ソースのheight/widthに数値入るから不具合起こりそう
なんかいい解決方法ないですか?

複数のモデルでmediaファイルアップされるってのは想定されてないところ見ると普通じゃないのかな
04864822010/06/04(金) 06:54:54ID:???
ありがとうございます。プラグイン調べて見たいと思います。
0487nobodyさん2010/06/04(金) 10:09:17ID:???
cakeにプラグインがあるなんて知らなかった。
情報thx!!

0488nobodyさん2010/06/04(金) 14:09:11ID:???
>>485
>複数のモデルでmediaファイルアップされるってのは想定されてないところ見ると普通じゃないのかな

Attachement モデルで group とかで指定できるでしょ。
これができるから、mediapluginってつえーんだよね。
0489nobodyさん2010/06/04(金) 15:29:41ID:???
>>488
それはそうなんだけど
サイズ指定ね。
モデルによって必要なサムネイルサイズが違うって普通にあることだと思うんだけど、
サイズ指定はConfigure::write()のMedia.filter.imageでAppで共通の設定でしょ
ビヘイビアの引数とか、Attachmentモデルとからへんで指定できてよさそうなのにってはなし
0490nobodyさん2010/06/05(土) 09:45:21ID:xxd6/1g9
CAKEPHPのチュートリアルとか見て勉強中なんですがECLIPSE
でデバッグできると知り、なんとか設定してみました。

が、CAKEで動かそうとするとデバッグできません。
最初の一行で止まるOPTIONでデバッグすると、CAKE内部で止まるのですが
sample_controller.phpとかの行でブレークポイントをつけても無視されてしまいます。

デバッグの構成は

XDebug、Default PHP Server使用で
ファイルは /cakephp/samples
URLは   http://Localhost/cakephp/samples

としています。
なにが原因でしょうか? わかるかた教えてください
0491nobodyさん2010/06/05(土) 18:22:49ID:???
入門書でも買って一から勉強したら?
0492nobodyさん2010/06/07(月) 09:14:03ID:???
CakePHP 1.3.2 released
http://bakery.cakephp.org/articles/view/cakephp-1-3-2-released
0493nobodyさん2010/06/07(月) 09:16:39ID:???
CakePHP1.3.1のキャッシュ関係のバグが直ってるぽい

あと質問時にあげなくても良いからね。って見てないからあげるんだろうが
0494nobodyさん2010/06/07(月) 10:03:53ID:???
IDださなきゃ騙りが出るだろーが
IDだせ
0495nobodyさん2010/06/07(月) 10:12:48ID:nY/RardB

告知させて。
現在のところあまり盛んに動いてるオンライン勉強会がないので
あたらしくグループつくりました。
オンラインでチャット・生中などいろいろ(未定)で
できれば毎晩だらだら勉強やる予定です。
熱意のある人いたらたまーに課題だしてってアプリ作るなんてのも
ありかなと思ってます。

初心者の人はもちろん、おれが仕切って教えてやるわって人も大歓迎です。
0496nobodyさん2010/06/07(月) 10:13:55ID:nY/RardB
グーぐるグループ
「初心者歓迎 PHP勉強会 2ch発」
ttp://groups.google.co.jp/group/2ch-php
php.2ch@gmail.com

参加希望の人いたら、メールくださいな。
0497nobodyさん2010/06/07(月) 10:17:38ID:???
平日やんの?
0498nobodyさん2010/06/07(月) 10:36:57ID:???
cakeなんて勉強会するほどのものじゃないだろ
0499nobodyさん2010/06/07(月) 10:39:58ID:???
あちこちのスレで宣伝してるしPHPの勉強会ということだろう
まぁそんなボランティア精神あふれる社会人はいないけどな
学生か初心者同士が教えあう趣旨ならいいかもしれんが
狭いコミュがいやだから2chにいるわけでわざわざ登録してまでここからいくやつはいるのだろうか・・・
引き抜くならmixiとか教えてgooとかからのほうがいいぞ
0500nobodyさん2010/06/07(月) 10:45:21ID:???
あcakeじゃなくてphpか
学びたいなら2chなんかから一歩外に出たほうがいっぱいあるだろうに
なぜあえて2chとかつけたがるのか甚だ疑問だ
0501nobodyさん2010/06/07(月) 11:17:18ID:nY/RardB
>>497

平日というか、とりあえず毎日でもチャットかスカイプとかで何人か雑談的に
あーだ、こーだ最近のネタとかPHPについて話す場を作って、たまーに課題でアプリでも作って
やってければなってかんじです。
マジメに教えるための素材作ってオフの勉強会みたいにやるのは、たぶんこれまでの
グループとかみても運営に負担かかって衰退するだけなんで気楽にやれればなーってかんじです。

>>498-500

なんとなくやってみるかんじだよー。
mixiとかも考えてみる。
0502nobodyさん2010/06/07(月) 12:11:08ID:???
>>494
変なのが、きちゃったじゃないかよ。。。
05034952010/06/07(月) 14:10:32ID:???
     *      *
  *     +  うそです
     n ∧_∧ n
 + (ヨ(* ´∀`)E)
      Y     Y    *
0504nobodyさん2010/06/07(月) 17:51:30ID:BTwl7tPr
チュウがしたいの
http://www.youtube.com/watch?v=wR36kSH4qeM
0505nobodyさん2010/06/08(火) 11:06:13ID:???
1.3系の次は2.0になるみたいだね
0506nobodyさん2010/06/08(火) 11:15:15ID:???
>>505
そだよ。
ちなみに2.0はPHP5のみ
0507nobodyさん2010/06/08(火) 11:24:51ID:???
すっきりする
0508nobodyさん2010/06/08(火) 21:32:11ID:???
今まで4が切られていなかったのが奇跡
つーか、PHP4+CakePHPのプロジェクトなんて、片手で数えられるくらいしかないんじゃないか?
0509nobodyさん2010/06/08(火) 22:00:39ID:???
1.3.0入れてBlogのチュートリアルやったんだけど、
記事個別のviewやdeleteのリンクの最後が"/id:1"のようになってしまっていて、動きません
"id:"が余計で"/1"に変えてみたら動くのですが、こうなるのはソースのどこが間違っているのでしょうか?
公式が堂々と間違えているのにぐぐっても特に何も出ない
0510nobodyさん2010/06/08(火) 22:10:19ID:???
>>509
1.3英語版のマニュアルの方を見ると良いです。
'id'=> が余計だね。
0511nobodyさん2010/06/08(火) 22:13:04ID:???
>>510
日本語版はテキスト古いとか出てたので英語版見ながらやったんですが…
もいちどチェックしてみます
0512nobodyさん2010/06/08(火) 22:22:57ID:???
どうやら1.3じゃない版を見ていたっぽい
ctp内の'id'=>を消したらいけました
0513nobodyさん2010/06/08(火) 23:06:25ID:???
1.2以上でセキュリティコンポーネントのrequireAuthを使えてる人いる?
0514nobodyさん2010/06/10(木) 05:07:20ID:???
>>506
どーせなら5.3のみにしてもらってもいいくらいだな。
5でもそれぞれ地味に挙動違うし
0515nobodyさん2010/06/10(木) 06:23:37ID:???
hasOneとbelongToて何が違うの?
機能的には同じものを提供しているように思うんですが
0516nobodyさん2010/06/10(木) 07:04:46ID:???
>>514
それLithium
0517nobodyさん2010/06/10(木) 08:37:39ID:???
>>515
バカだな

ニートなお前は
親に依存してるだろ?→belongsTo
でも逆に親から見ると
親はお前を養ってるだろ?→hasOne

お前兄弟いる?いるなら
親はお前(ら)を養ってるだろ?→hasMany
0518nobodyさん2010/06/10(木) 08:52:47ID:???
>>515
ちがうよ!全然違うよ!
User hasOne Profile だけど、 User belongsTo Country になる。
この場合、Country hasMany User が成り立つ。(別に設定する必要はないが)

相手側から見てhasManyが成り立てばbelongsToだよ
0519nobodyさん2010/06/10(木) 08:55:02ID:???
なぜ使い分けるかは、それぞれ提供されてる機能が違ってくるから。
慣れるまでは>>518を参考に区別しておくと良いよ
0520nobodyさん2010/06/11(金) 09:02:47ID:iUDx5l1B
GoogleブックにCake本が。

オープンソース徹底活用 CakePHPによるWebアプリケーション開発
http://books.google.co.jp/books?id=_6uO_tNQRTUC&printsec=frontcover#v=onepage&q&f=false
0521nobodyさん2010/06/11(金) 16:49:02ID:???
>>520
これ一番わかりやすい本だと思うんだけど絶版なんだよね
全ページを見せてくれてもいいのになあ
0522nobodyさん2010/06/11(金) 19:58:24ID:???
data[0][aaa]
data[0][bbb]
data[0][ccc]
data[1][aaa]
data[2][bbb]
data[3][ccc]
のような配列のバリデーションって出来ますか?
0523nobodyさん2010/06/11(金) 20:14:27ID:???
>>520
本屋にまだ置いてあるでしょ
0524nobodyさん2010/06/12(土) 00:17:39ID:???
CakePHP: the rapid development php framework
Not Found
Error: The requested address '/' was not found on this server.

でハマっています。
Configure::write('debug', 0); を0以外にするとエラーにならなくなります。
どこから調べていけばいいでしょうか…。
0525nobodyさん2010/06/12(土) 03:08:55ID:???
routes.phpとかテンプレートあるかどうかとか。
0526nobodyさん2010/06/12(土) 07:58:43ID:???
>>524
ん?debug 1だとエラーが出ないってこと?
そしたら、layoutsファイル内にecho $content_for_layoutが無いとか?
0527nobodyさん2010/06/12(土) 12:55:30ID:???
debug時になにかしらエラーが出てると思うんだけど
0528nobodyさん2010/06/12(土) 21:20:41ID:???
cakeインスコで聞きたいんですけど(1.3入れました。)
mod_rewriteが効いてない?みたいで
cakeのディレクトリにあるindex.phpが404で開きません。

apacheのhttpd.confと
cakeの3つの.htaccessのRewriteBaseも解説本通り修正したんですが
ほかに何か問題になりそうなところってありますか?
05295282010/06/12(土) 21:40:47ID:???
自己解決しました。
.htaccessのRewriteBase外したらおkでした。
0530nobodyさん2010/06/13(日) 18:44:53ID:???
>>524
それDB接続に失敗しててもなるよ。
0531nobodyさん2010/06/15(火) 12:18:42ID:???
共有SSLを使おうと思ったら、 https://レンタルサーバ/ドメイン名/ と、
サブディレクトリがくっついてきて、そのままだとCakePHPの吐き出す絶対パスが
合わなくなってしまいます。

mod_rewriteのrewritebaseで設定すればいけると思いますが、ホスト名によって
rewritebaseを複数設定することは可能でしょうか?
0532nobodyさん2010/06/17(木) 13:15:31ID:???
cake/libs/session.php
を改造したいんですが、
直接ファイルに手を入れずに別の場所において修正する事は可能でしょうか
ヘルパーを改造したいときに
cake/libs/view/helpers/*.php

app/views/helpers/

置くのと同じイメージでできればと思ってるんですが
0533nobodyさん2010/06/17(木) 13:39:37ID:???
views以下のテンプレートにctpじゃなくてPEARのHTML_Template_Sigmaを使いたいんですが
そういう改造を施した例とかどこかにないでしょうか
HTMLとPHPをなるべく分離したいのです
よろしくお願いします
0534nobodyさん2010/06/17(木) 14:22:14ID:bowe+bRa
>>531
できるんじゃない?

>>532
app/session.phpにコピーすれば、そっちが優先して動くんじゃない?

>>533
Smarty使う方法はたくさん解説されてるから、それを参考にすればよいんでない?
0535nobodyさん2010/06/17(木) 14:37:47ID:???
直訳:ググレカス
0536nobodyさん2010/06/17(木) 16:08:10ID:???
1.3.2のPagenatorで、$pagenator->counter(array('format' => '%count%件'));
とかやって表示件すとか色々出力しているのだけど
Notice (8): Undefined index: limit [CORE/cake/libs/view/helpers/paginator.php, line 543]
Notice (8): Undefined index: limit [CORE/cake/libs/view/helpers/paginator.php, line 545]
ってエラーがでる。
controller側で
$this->paginate = array(
'fields' => 'hoge',
'conditions' => array(...),
'limit' => 10,
'order' => 'id asc',
);
$this->paginate('model');
って、limitの指定をしているのになぜ?
0537nobodyさん2010/06/17(木) 16:44:56ID:???
そのエラーの原因を追えないとか終わってるだろ
もうやめとけ
0538nobodyさん2010/06/17(木) 17:02:15ID:???
わかったlimitが無いんだ!
0539nobodyさん2010/06/17(木) 17:12:17ID:???
そういう理不尽なエラーはしょうもないスペルミスだったりすることが多いな。
0540nobodyさん2010/06/17(木) 17:34:38ID:???
疲れてるとハマるんだよな
0541nobodyさん2010/06/17(木) 18:28:29ID:???
データが来ない。おかしい!ってさんざんモデルだの何だのひっくり返してみて
conditionsがconditonsだったのを発見した時の脱力感・・・
0542nobodyさん2010/06/17(木) 18:29:48ID:???
あるあるw
0543nobodyさん2010/06/17(木) 20:17:00ID:???
そういうのってEclipseとかが教えてくれないの?
0544nobodyさん2010/06/17(木) 20:36:01ID:???
スペルチェックオンにすれば教えてくれそう
0545nobodyさん2010/06/18(金) 09:40:58ID:???
だからCakeはエラー発生箇所が異次元なんだよ。
Strutsの黎明期そっくりだ。
0546nobodyさん2010/06/18(金) 12:07:08ID:???
>>545
他のFW使ったことないけど
PHP系FWのマニュアル見てるとどれも辞書で設定してるし
どっこいな気がする
0547nobodyさん2010/06/18(金) 17:17:03ID:???
ページの先頭にどうしても空行が入ってしまうのですが、
回避する方法はあるのでしょうか?

dispatche.phpのechoしている部分の前に、
「ob_clean();」を追加しても解消しませんでした。
0548nobodyさん2010/06/18(金) 17:42:07ID:???
>>547
回避すること考えるより、どうやって該当箇所を発見するかを考えたほうが遙かに前向きだと思うんだが
0549nobodyさん2010/06/18(金) 18:21:07ID:???
>>547
ソースを全部さらしたら、探してあげてもいい
0550nobodyさん2010/06/18(金) 18:55:36ID:???
>>547
どうせどっかのコードの最後の?>の後に改行が入っているのだと思われる
0551nobodyさん2010/06/19(土) 04:33:18ID:iks7bUVl
1.2なんですけど

viewとかcontrollerとかで、その場でHelper使いたいとき
App::import('Helper', 'Form');とか例えばやったとして
new Formして $form->input();とか使うと、
Undefined property: FormHelper::$Html って怒られます。
自動で FormHelperクラスの $helpersを読み込むのをやってくれないんだと思うんですけど
どうにかして正常に動作させられないですかね?
調べると英語で同様の症状を訴える投稿はありますけど明確な回答が見つからんです。
0552nobodyさん2010/06/19(土) 04:45:21ID:???
Undefined property: FormHelper::$Html

そのまんまなのだがw

HTMLヘルパーも読み込んでみれ
0553nobodyさん2010/06/19(土) 11:10:38ID:???
>>546
知らないなら黙ってた方がいいよ。
0554nobodyさん2010/06/19(土) 11:39:47ID:???
>>553
というと?
0555nobodyさん2010/06/19(土) 15:47:58ID:???
formヘルパーでラジオボタンとかセレクトボックスを生成したときに、
「デフォではxを選択した状態だけど、バリデーションエラー時とかにはユーザーが選択した状態」
にするにはどうしたらいいの?
optionでselected設定しちゃうと、バリデーションエラー時にその設定が優先されちゃって
ユーザーの選択じゃなくなっちゃうんだけども
0556nobodyさん2010/06/19(土) 16:10:46ID:???
$form->うんちゃら('hoge',array('value' => $value));
で普通にいけない?
ユーザからのデータがない場合は、$valueに初期値を設定するようにして、
ユーザからのデー座がある場合は、それを上書きして view に渡す。
0557nobodyさん2010/06/19(土) 16:40:56ID:???
>>556
>ユーザからのデータがない場合は、$valueに初期値を設定するようにして、
やっぱりそれしかないのかな
フォームヘルパー自体でそういう機能を備えてくれてるといいんだけど、
コントローラー側で一手間かかるのを、出来れば省略したい
0558nobodyさん2010/06/19(土) 17:08:19ID:???
>>557
つ array('default' => 'x')

あんまり使ったことないけどね
初期値与えるならcontroller(model)のほうがいいと思うなあ
0559nobodyさん2010/06/19(土) 17:34:03ID:???
>>558
まさにそれ!ありがとう!
確かにモデルと関連させてデフォを決める場合には、ヘルパーで決めちゃわない方がいいかもしれないけど、
とりあえずこれで行くわ
0560nobodyさん2010/06/19(土) 17:40:13ID:???
>>559
あ、最後のはひとりごとだから気にしないで

あと、データが0のときは、デフォルトの値に上書きされるかも。要注意
0561nobodyさん2010/06/19(土) 17:44:38ID:???
1.3から$this->set(compact('foo_bar'))したときにキャメルケースに強制変換されなくなった?
0562nobodyさん2010/06/19(土) 18:02:08ID:???
このスレレベルたけぇな
0563nobodyさん2010/06/19(土) 18:30:07ID:???
>>561
されなくなった
0564nobodyさん2010/06/19(土) 20:21:15ID:???
>>562
それ皮肉だってことが分からない人がいるから、はっきり言ってあげた方がいいよ
0565nobodyさん2010/06/19(土) 20:24:22ID:???
皮肉なんか言ってやるなよ
かわいそうだろ
0566nobodyさん2010/06/19(土) 21:06:08ID:???
まあこのような、わけのわからんこと言い出す連中が
一番低脳だというのは言うまでもない話。
0567nobodyさん2010/06/19(土) 21:50:44ID:???
page以外のnamedパラメータを使ってpaginationすると、URLの最初にpage:xが来てしまいます

例えば
/status:active/page:2 にアクセスすると
nextのリンクは /page:3/status:active になる
といった感じです

コードを追ってみたところ、pagination helperの中でnamedパラメーターを配列として扱って、
array_margeを何度か行っている関係で、pageが配列の一番最初に来てしまって、結果、
URLの一番最初のnamedパラメーターとして表示されてしまっているようです
pagination helper自体をいじって、最終的にpageを配列の一番最後に持ってくれば
正しく動きそうですが、他にもう少しスマートな方法はないでしょうか・・・
05685672010/06/19(土) 22:20:31ID:???
一応、pagination helperの362行目に
if(isset($url['page'])) {
$page = $url['page'];
unset($url['page']);
$url = array_merge($url, array('page'=>$page));
}
を追加したら、page:xが一番最後に来るのを確認できました
05695512010/06/19(土) 23:15:37ID:iks7bUVl
>>552
そりゃわかるんですけど
そもそも読み込まれないのがなんとかならないかという話です。

App::import('Helper', 'Form');
App::import('Helper', 'Html');
$form = FormHelper;
$form->Html = HtmlHelper;

ここまでやればHtmlがないとは怒られないですが、$form->webrootがセットされていなかったりと、
そもそもApp::import('Helper' が用意されているのにも関わらず、
ちゃんと使える状態にならないってのもおかしいのではないかと思い質問させていただきました。
0570nobodyさん2010/06/20(日) 01:15:11ID:???
>>569
controllerで同じ亊してsetで渡しなよ
0571nobodyさん2010/06/21(月) 13:51:06ID:???
>亊
0572nobodyさん2010/06/21(月) 17:40:58ID:???
http://xxxx/(アプリ名)/test.php
で、適切なデバッグレベルの場合はテストが実行されますが、これを無効にする方法はありますか?
本番リリース時などでデバッグレベルを0にした場合、テスト自体は行われませんが
「Debug setting does not allow access to this url.」
などというメッセージが出てきます。

こういう場合はwebroot直下のtest.phpを削除するのが正しいですか??
0573nobodyさん2010/06/21(月) 18:32:34ID:???
>>572
htaccess に404でリダイレクト知るように書けば
0574nobodyさん2010/06/22(火) 20:20:10ID:???
validationって、使うコントローラーによって切り替えたりとかできないですかね?
0575nobodyさん2010/06/22(火) 20:47:10ID:???
ビューの中でfunctionを作って、
その中でヘルパーを使いたいときは
引数で渡す以外にどうすれば上手くできるでしょうか
0576nobodyさん2010/06/22(火) 21:09:04ID:???
>>575
素直に独自Helperに書きましょう
0577nobodyさん2010/06/23(水) 02:28:29ID:???
Authで会員ログイン機能を実装して例えば写真を見せるサイトを作ったとして、
退会すると当然Authによりはじかれてログインはできないけど、
写真に直接アクセスされたとき、はじかれませんよね?
写真一枚表示するのにCakeのコア動かしてAuthログイン判断してってのは負荷が心配だし
なにかいい方法ないですかね?

ファイル名をランダムにしててもメモされたら意味ない
でもメモする位ならファイル保存しない?じゃあよくね??みたいな永久ループしてます。
0578nobodyさん2010/06/23(水) 02:41:17ID:???
まぁほんとに見せたくないならauthかますしかないわな
コストと実利を天秤にかけろ
0579nobodyさん2010/06/23(水) 09:38:51ID:???
>>577
ttp://neta.ywcafe.net/000774.html
この考え方で出力すればよい
(キャッシュは定期的に削除する)

が、どのみちURL叩かれたら退会前でも会員以外の人に見られるのは一緒
mixiが以前そうだったね
0580nobodyさん2010/06/23(水) 12:39:45ID:hpuIM/fT
DBのクエリ実行自体は 20ms ぐらいなのに、HTMLの出力に1〜5秒ほどかかってしまう場合
どこが原因かチェックする方法ってありますか?
Controller自体は、find() を2回使って、出力するHTML自体も20Kb程度です。
0581nobodyさん2010/06/23(水) 12:44:17ID:???
クライアントのCPUが弱い
0582nobodyさん2010/06/23(水) 13:06:06ID:???
>>580
DebugKitつかってる?どこで何ミリ秒かかってるかとか詳細がみれるよ
■ このスレッドは過去ログ倉庫に格納されています