トップページphp
995コメント290KB

【PHP】フレームワーク CakePHP 13ホール目【v2.0】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2011/11/09(水) 01:05:10.60ID:???
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 12ホール目【笑】
http://hibari.2ch.net/test/read.cgi/php/1309505626/
0611nobodyさん2012/02/14(火) 03:20:43.81ID:???
趣味か仕事かどっちだ?
0612nobodyさん2012/02/14(火) 03:29:17.24ID:???
仕事で使うならこれからはCodeigniterだよねやっぱり
0613nobodyさん2012/02/14(火) 03:51:01.11ID:???
今からCake覚えて何かいいことあんの?
0614nobodyさん2012/02/14(火) 10:42:41.43ID:???
>>610
好きな方か、仕事で教えてくれる環境にある方。
ぶっちゃけやることは変わらん。
0615nobodyさん2012/02/14(火) 15:53:13.31ID:XKQCpFOZ
CakePhp2.0初心者で勉強しています。
セッションを使用して、異なるコントローラー間でデータの受け渡しを行いたいのですができません。
使用方法が間違っているのでしょうか?

異なるコントローラー間で以下の2行を実行しています。
$this->Session->write('id','hogehoge');
$hoge = $this->Session->read('id');


core.phpのセッション設定は以下の設定です。

Configure::write('Session', array(
'defaults' => 'php'
));
0616nobodyさん2012/02/14(火) 17:04:00.93ID:???
>>615
上の一行をあるコントローラでやって、
下の一行を違うコントローラでやってると言う意味だよね?

まず下の一行を実行する前に

if($this->Session->check('id))
でセッション変数自体が存在しているか確認するのはやってみた?
06176152012/02/14(火) 17:37:28.16ID:???
>>616
返信ありがとうございます。
windows環境で作成をしてて、なぜかPCを再起動したら取得できましたm(_ _)m ナゾです・・ 
0618nobodyさん2012/02/14(火) 23:58:24.06ID:???
>>611
趣味ですが
仕事にも将来的には生かせればと思います
0619nobodyさん2012/02/17(金) 14:11:59.26ID:???
index.phpからcakeにアクセスするだけじゃなくて、
別名を付けたファイル名からアクセスしたい場合、
ファイル内に $_GET['url'] = '/user/index' みたいに書けば良いだけですかね?
表向きはピュアPHPみたいなURLにしたいです。
0620nobodyさん2012/02/17(金) 14:33:54.66ID:???
>>619
意味が分からん。

foobar_controller.php
foobar_index.ctp
foobar_alt_index.ctp

URLとファイル名は必ずしも強固に1体1対応で無くてもいいんだよ。
render('ctpファイル名')でいくらでも描画先変えられるし、redirectでもいい。

特定のURLのみ、URLのファイル名とは異なるctpファイルを読み込みたい場合は、
controller側でfunction URL名(ファイル名)を作ればいくらでも好きなファイルをrender出来る。
0621nobodyさん2012/02/17(金) 14:47:34.93ID:???
>>620
そうじゃなくて、基本的にcakeにアクセスするのって
webtoor内のindex.phpと.htaccessを元にしてるじゃないですか?
それを通さないで、単体のファイルで動かしたいって事です。
0622nobodyさん2012/02/17(金) 14:50:28.33ID:???
勝手に動かせばいい
0623nobodyさん2012/02/17(金) 22:15:37.39ID:???
>>618
cakephp覚えたところで仕事無し
railsならあるぞ
0624nobodyさん2012/02/17(金) 22:18:17.74ID:/liskI/Y
>>623
あなたはないかもしれないが、こちらは一杯あるよ
0625nobodyさん2012/02/17(金) 23:19:48.84ID:???
railsの仕事なんて見たことないな
たまたまだろうけど
0626nobodyさん2012/02/17(金) 23:35:34.41ID:???
cakephpにはrailsのdeviseのような
痒いところに手が届くログイン管理プラグインが無いのが痛い
0627nobodyさん2012/02/18(土) 00:41:23.45ID:???
無かったら作ればいいじゃない
0628nobodyさん2012/02/18(土) 07:14:15.10ID:???
>>621
webroot直下に置いたhtmlファイルとか、好き勝手に動かせるよ。

webroot/phpmyadmin
とかを本番機で動かしてるし。

ここでhtmlなり、ctpなり、好きなファイル置けばいいのでは?
0629nobodyさん2012/02/18(土) 11:05:37.21ID:???
今更のcakeの仕事って、メンテばかりでつまらなそうだな。
0630nobodyさん2012/02/18(土) 11:52:58.83ID:???
仕事がつまらないのは当たり前だろ
楽しさを求める奴って一定の割合でいるけど何なの?世間ナメてるの?
0631nobodyさん2012/02/18(土) 14:10:48.45ID:???
世間w世の中w
0632nobodyさん2012/02/18(土) 14:15:16.70ID:???
>>630
俺は楽しいけど
まぁ自営だし
0633nobodyさん2012/02/18(土) 19:32:45.39ID:???
仕事がつまらないとか言ってる人って、アルバイトしかした事ない学生か、本気で仕事した事ないダメ人間だけだろ。
0634nobodyさん2012/02/18(土) 19:52:11.24ID:???
『整備に当る強兵が しっかりやって 来てくれと 愛機に祈る 親心』

戦闘機とは勝手が違うかもしれんが、職人であり整備士でもあるウェブ開発者が『メンテつまらない』なんて、間違っても言えない言葉だと思うがな。
作品に対する愛着と言うか、親心はないのかと思う。
0635nobodyさん2012/02/18(土) 19:54:15.84ID:???
本気だろうが何だろうがつまらんものはつまらん
愛があってもつまらんものはつまらん
0636nobodyさん2012/02/18(土) 19:54:39.40ID:???
愛着や親心と楽しさは違うだろ
0637nobodyさん2012/02/18(土) 20:03:42.12ID:???
>>636
「自分の子供は糞までかわいい」って話じゃね?
子供の世話とバグ取りや保守作業って同じ感覚でやってたわ
むろんどっちも楽しい。
しかもメンテっつーか仕事なら、やっただけ対価までもらえるんだぞ?
毎日wktkしとるわw
0638nobodyさん2012/02/18(土) 22:23:06.59ID:???
1から作ったものなら良いかもしれんが
他人が作ったものの尻拭いはごめんだ
0639nobodyさん2012/02/18(土) 23:12:25.71ID:???
別にどの業界だってメンテはメンテナーがいるわけよ。
ビルだって自動車だってそうだろ。
仕事として受けたならメンテのプロとしてやらないと。面白くないべ。
0640nobodyさん2012/02/19(日) 00:03:12.80ID:???
普通にバイトでも楽しいけどな。
楽しくいないのは店長や客が嫌な奴だったとか
人間関係の面がほとんどだろ。
0641nobodyさん2012/02/19(日) 00:21:41.04ID:???
今スマホ開発やっててWebAPIをCakePHP使ってんだけど楽しいよ。
俺は仕事は楽しくなくちゃ嫌だわ。
0642sage2012/02/19(日) 00:25:24.87ID:???
CakeやろうがRailsやろうがDjangoやろうが同じ不満をもらすだろうな
0643nobodyさん2012/02/19(日) 09:24:53.81ID:???
CAKEPHP1.3でWEBアプリを作っています。

ブラウザの「戻る」ボタンを押して前の画面に戻る際に、
必ずサーバーに問い合わせるようにしたいのですが、
キャッシュの設定を「session_cache_limiter('nocache')」にしていても
「ページの有効期限切れ」が表示される場合があります。
(具体的には、画面遷移時に一度入力チェックでエラーを表示した後、
次画面に遷移し、ブラウザの戻るボタンを押した場合。)

「ページの有効期限切れ」が表示されず、前画面に戻るには
どのような対応が必要でしょうか。
(ページの有効期限切れは、具体的に何を見て判定しているのでしょうか)
0644nobodyさん2012/02/19(日) 14:32:18.81ID:???
http://mwg.jp/
0645nobodyさん2012/02/19(日) 22:02:58.12ID:???
>>642
そういうことだろうな。
仕事でも趣味でも、開発すること自体楽しけりゃ不平不満なんて出ないどころか毎日Happyさね。

>>643
一般的に考えれば、フォーム(hiddenも含む)データじゃね?
単純な話で、なんかページ同士のパラメータの受け渡しに失敗してるんじゃないかな?
0646nobodyさん2012/02/20(月) 07:49:45.77ID:???
>>643
cakeのセッション設定
既出
0647nobodyさん2012/02/20(月) 13:39:28.34ID:???
みなさんはサイトの一部だけcakeを使う場合、どうしてますか?

例えばサイトのほとんどがHTMLなんだけど、
お問い合わせフォームとか新着情報の表示とかシステム化が
必要な箇所ってありますよね?
0648nobodyさん2012/02/20(月) 16:42:43.00ID:???
公式の1.3パッケージをクリックして落ちてくるのって2.0なのかよ
おかげで数時間ムダにしたわ…
0649nobodyさん2012/02/20(月) 17:31:52.64ID:???
cakePHPで使うDBにNOT NULL付けるのって非推奨なのでしょうか?
値セットしてないカラムも全部NULLになっちゃって。
0650nobodyさん2012/02/20(月) 18:44:49.57ID:???
Model::create(false)でデフォルト値があるカラムを充足しなくなるよ
0651nobodyさん2012/02/20(月) 19:27:11.23ID:???
>>650
どうもです。ぐぐったら解説も出てきました。
http://d.hatena.ne.jp/cakephper/20091221/1261385134

$data初期化してるのにヘンテコな値が入るので???になってたんですが、
よく考えたらモデルの方も初期化せなあかんのですね。
0652nobodyさん2012/02/20(月) 19:44:33.38ID:???
個人的には「NULL撲滅委員会」にお誘いしたい。
COUNT(column)とかで、面倒な挙動が多い・
0653nobodyさん2012/02/20(月) 20:16:24.86ID:???
>>652
実は既にあすこの会員でして・・・
しかし、NULLを避けたいのにcakePHPが勝手に挿入するのを避けられないというー-;

for ($x = 0; $x < 100; $x++) {
$data = null;
$this->cookie->create(false);
$data = $this->cookie->findById($x);
if ($data == FALSE) {
continue;
}
レコードが存在しない時は処理をスキップしたいんですけど、
比較式おかしいですかね?
0654nobodyさん2012/02/21(火) 00:21:24.73ID:???
CakePHPを複合主キーに対応させる為のプラグインってありませんか?
0655nobodyさん2012/02/21(火) 13:06:27.12ID:???
2.1RC来たね。

RCの後に数字がないってことは、
次がもう正規リリースなのかな?
0656nobodyさん2012/02/21(火) 14:08:16.13ID:???
何が変わったの?
0657nobodyさん2012/02/21(火) 19:27:57.09ID:???
ビューの継承とか、細かい便利機能が増えてるっぽい
0658nobodyさん2012/02/21(火) 21:15:24.57ID:???
参考書が1.3だったのでとりあえず1.3使ってるんだけど、
できれば最新のもの使ったほうがウマイのでしょか?
0659nobodyさん2012/02/21(火) 22:01:38.94ID:???
>>658
新規で作るのなら2系で作っておいた方がいいと思うよ
1.3で作ってると下手に1.3のクセがつくだろうし
今勉強中ならRCも出たことだし、サービスリリースまでにはstable出るだろうから2.1使っちゃっていいんじゃない
0660nobodyさん2012/02/21(火) 22:21:52.98ID:???
お前ら>>654の回答頼むわ。な?
0661nobodyさん2012/02/21(火) 22:26:00.87ID:???
>>659
そうですかー・・

http://book.cakephp.org/2.0/ja/appendices/2-0-migration-guide.html
変更点相当あるみたいですね。

後から変えたくなっても不便だし、
1.3じゃなきゃいけないような理由もないし、
早いとこ乗り換えたほうが良さそうですね。
2.1落としてきます。
0662nobodyさん2012/02/21(火) 22:28:23.70ID:???
でも2系の情報はまだまだ少ないよ?
俺の見立てでは後1年は情報や書籍は揃わないと思う
0663nobodyさん2012/02/21(火) 22:45:13.49ID:???
>>662
むむむむ・・
まぁやってみようと思います

困るかな
実際移行してる人はどんな感想をお持ちだろうか
06646592012/02/21(火) 23:19:39.41ID:???
>>663
今までのプロジェクトは全部1.xで作ってきたけど、最近全部1.3.14に上げた
とりあえずそれらは2系に上げる予定無し(1.3から2.0への全面書き換えはだるいのでしばらくは放置すると思う)
2.0のstableが出てからは全部2.0で作ってる
>>659にも書いたけど、RC出たからもう2.1に移ろうかと思ってる

個人的には複雑なことをやってないせいもあるのか2.0の情報が少ないという感じはない
昔からcakeは「公式ドキュメント読んで分からなかったらソースを読め」ってスタンスだしね
ああ、でも公式ドキュメントはまだ日本語ないから英語が全く出来ないとちょっときついか
0665nobodyさん2012/02/22(水) 00:24:37.21ID:???
お前ら>>654の回答頼むわ。な?
0666nobodyさん2012/02/22(水) 01:12:36.89ID:???
ありません。な?
0667nobodyさん2012/02/22(水) 01:34:03.12ID:???
このスレに質問書き込んで、回答が得られたことってないな
お前ら頼りなさすぎ
0668nobodyさん2012/02/22(水) 09:23:59.33ID:???
Yiiスレとのギャップがすごい。
0669nobodyさん2012/02/22(水) 10:44:07.07ID:???
2.0使いです。
updateAllで、
リレーション設定をしている他モデルで使用しているテーブルのデータを
保存することはできませんか?

Bコントローラ内
$condition = array('ModelA.neko' => 'mike');
$updatefield = array('ModelA.tag' => 'hoge');
$this->ModelB->updateAll($updatefield, $condition);

と書いても
General error: 1 near ".": syntax error
が出ます。
0670nobodyさん2012/02/22(水) 13:47:15.70ID:???
>>667
と言うより、2.0については使用者も少なく回答できないんじゃないか?
1.3系の質問は回答されてるし。

頼りないなら他行けば良いんだよ。別に質問スレでもないんだから。
0671nobodyさん2012/02/22(水) 18:20:43.51ID:???
システムのマイナーバージョンアップってcake以下(2.0だとlib)のコアファイル差し替えるだけでいいの?
0672nobodyさん2012/02/22(水) 20:21:09.89ID:???
すみません、質問です

2つの関連性の全くないテーブルA,Bがあります。
ある画面で、その2つのテーブルのデータをまとめて編集し、
1回のPOSTでValidationをかけて保存させたいのですが、
どうすればよいものでしょうか?

A,Bの項目をまとめたCモデルを作って、CモデルにValidationルールを書く。
POSTされたデータはCモデルでValidationを行う。
Validation後にAモデル、Bモデルにデータを分割して、それぞれで保存処理を行う。

こんな感じ?
0673nobodyさん2012/02/22(水) 20:46:24.93ID:???
よくわからんが、普通はAモデルはAモデルでバリデーションし、
BモデルはBモデルでバリデーションするだろ?
モデル毎にバリデーションできるんだから。
0674nobodyさん2012/02/22(水) 20:46:51.25ID:???
>>672
普通に

Aバリデーション
 ↓
Bバリデーション
 ↓
A保存
 ↓
B保存

ではなんでダメなの?
0675nobodyさん2012/02/22(水) 21:06:14.46ID:???
あとはトランザクション処理をかますくらいか。
0676nobodyさん2012/02/22(水) 22:53:27.87ID:???
>>671
それでOKだよ
0677nobodyさん2012/02/22(水) 22:58:29.26ID:???
>>672
1回のPOSTで2つのモデルをいっぺんに使うって話か?
普通に問題なくできそうなもんだが。
0678nobodyさん2012/02/22(水) 23:12:01.66ID:???
>>664
ありがとり
一応一通り移し変えることができました
ガシガシ構築していこうと思います
0679nobodyさん2012/02/22(水) 23:46:18.16ID:???
>>676
ありがトン
0680nobodyさん2012/02/23(木) 15:41:37.63ID:???
CakePHPの1.2のメンテナンス期限とか、公式な発表ってどこかにありますか?
0681nobodyさん2012/02/23(木) 16:23:25.15ID:???
>>655
本家だと数字ついてないけど日本のサイトだと1版って書いてあるから微妙だなw

>>680
公式な発表はないと思うけど、もうリリースがほとんど止まってる感じだからなあ・・・
っていうか1.1はいつのまにか公式から消えてるけどどこかでアナウンスあったっけ?
0682nobodyさん2012/02/23(木) 22:30:09.21ID:???
そんなことよりCakePHPを複合主キーに対応させる方法を教えろよ。な?
0683nobodyさん2012/02/23(木) 22:38:03.57ID:???
複合キーなんて使うなよw
0684nobodyさん2012/02/23(木) 22:40:40.54ID:7dkJC+lD
bar_controllerに、foosテーブルの中身をページネイションさせるとき
$this->paginate = array(
'conditions' => array(
"not" => array(
"Foo.bar" => "false"
)
),
'limit' => 2000,
'order' => array('Foo.date DESC')
);
$this->set('foo', $this->paginator());
と書いたら、「barsテーブルにFoo.barなんてない」ってエラーがでました
コントローラ名からモデルを補完してるんでしょうか?
どうしたらfoosテーブルのデータをページネイションできますか?
ご教示くださいますようよろしくお願いいたします
0685nobodyさん2012/02/23(木) 23:41:08.20ID:7dkJC+lD
$this->set('foo', $this->paginator());

$this->set('foo', $this->paginate('Foo'));
に書き換えたらいけました
0686nobodyさん2012/02/24(金) 04:00:19.56ID:???
モデルにprimaryKeyって必ず定義しないと行けないんですね。
プライマリーキーがないモデルにsaveしようとしたけど、エラー出ました。
0687nobodyさん2012/02/24(金) 09:30:06.44ID:???
>>686
Excelとデータベースの違いから勉強しようぜ
0688nobodyさん2012/02/24(金) 12:24:37.97ID:???
会員→日記
   →写真

のようなアソシエーションで繋がっているテーブルがあったとして、
会員情報を削除した時、その会員が投稿した日記や写真を
削除する必要があります。

その場合、会員情報を削除した後、日記・写真を削除しますか?
それとも全てアソシエーションで繋げてdeleteAllで削除しますか?
0689nobodyさん2012/02/24(金) 13:26:33.24ID:???
>>688
好きにすればいいんじゃね
deleteAllがアソシエーション含んだ削除って誤解してる気がするんだけど気のせい?
0690nobodyさん2012/02/24(金) 13:56:47.10ID:???
関連データも一括で削除するのはdependentだよね
0691nobodyさん2012/02/24(金) 14:01:26.76ID:???
>>689-690
まさに勘違いしてました・・。

アソシエーションの削除が上手く行かないので
自分は個別に削除するやり方をしているのですが、
勘違いだったようです。すみません。
0692nobodyさん2012/02/24(金) 19:09:30.64ID:???
XMLデータの出力って、CakePHP 2.0でどのように行えますか?

find('all')で複数県取得したデータを、1.3まではviewで$xml->serialize()に
データを渡していました。
2.0からはxmlHelper自体が廃止となって、代わりにXml::buildを使えとのことですが、
1.3と同様の複数県のデータを渡すと例外となります。

1.3と同様の結果が取得できるように死体のですが・・・
0693nobodyさん2012/02/24(金) 19:10:11.66ID:???
すみません、複数県→複数件です。
0694nobodyさん2012/02/25(土) 15:36:54.21ID:???
cake1.3を最近使い始めたのですが、
データベースを使うほどじゃない簡単なデータ保存処理のためにtxtファイルを読み書きしたいのですが、どこに置いてもうまくアクセスできません。
自分で用意したファイルにアクセスするにはどうしたらいいのですか?
0695nobodyさん2012/02/25(土) 16:53:26.47ID:???
データベースを使うほどじゃなかったら、cake使わない方が良いよ
0696nobodyさん2012/02/25(土) 17:03:08.52ID:???
テキストファイルのデータを読み込みたいのがデータベースから情報を持ってきてるページなのでそういうわけにもいかないのです・・・
テキストファイル自体は多くて10個程度のワードを保存&編集したいだけなのですが・・・
0697nobodyさん2012/02/25(土) 17:25:39.89ID:???
Cakeが発行する、SELECT COUNT(*) (ページネーションから?)が
ものすごい遅いんですが、解決法はあります?
みなさんどうしてます?
0698nobodyさん2012/02/25(土) 17:33:00.25ID:???
COUNTするのはgroup指定したカラムにすれば良いよ
0699nobodyさん2012/02/25(土) 17:52:58.99ID:???
>>698
ページネーションするときって自動でCOUNT発行されません?
0700nobodyさん2012/02/25(土) 18:04:29.58ID:???
>>694
自分で、model、またはdata sourceを書く。
csvならdata sourceあった希ガス
0701nobodyさん2012/02/25(土) 18:05:54.56ID:???
>>700
ありがとうございます
まずはdata sourceにつ
0702nobodyさん2012/02/25(土) 18:06:37.16ID:???
途中で送信すみませんorz

>>700
ありがとうございます
まずはdata sourceについて勉強してみます
0703nobodyさん2012/02/25(土) 18:19:28.48ID:???
>>702
ベタに書いてもOKな気もすっけど。。
とりあえず、Fileクラスもあるし。
0704nobodyさん2012/02/25(土) 18:21:48.77ID:???
>>703
のちのちワードを編集するので、直書きはできないんです
fileクラスについても調べてみます
0705nobodyさん2012/02/25(土) 22:48:10.62ID:???
1.3.14を使っています。フォームのバリデーションで質問です。
ラジオボタンの場合、項目を選択せずに送信すると
空データではなく、存在しないものとして扱われます。

ですので、バリデーションルールでnotEmptyを指定しても
正しく機能しないのですが、どうすればいいのでしょうか?
0706nobodyさん2012/02/26(日) 13:38:17.41ID:???
hidden
0707nobodyさん2012/02/26(日) 14:15:41.40ID:???
156
0708nobodyさん2012/02/26(日) 16:50:00.76ID:???
>>706
ありがとうございます。勉強になりました。
0709nobodyさん2012/02/27(月) 01:32:01.91ID:???
>>697
Model::paginateCount を 軽い処理で実装するとか
0710nobodyさん2012/02/28(火) 11:46:10.73ID:???
>>697
where句に使用しているカラムにインデックスはるとか、
joinしてるなら、その辺も確認したほうがいい。
0711nobodyさん2012/02/28(火) 15:16:02.31ID:pz8Lp3oa
[動作環境]CakePHP 2.0.6 / PHP 5.1.6 / Apache 2.2

ルーティングで躓いています。
以下のようなコントローラを用意しました。

class EntryController extends AppController {

var $name = "Entry";
var $autoRender = false;

function index(){
die('index');
}

function success(){
die('success');
}
}

http://example.com/entry/
は正しく実行され、'index'が表示されるのですが、
http://example.com/entry/success/
は、Segmentation faultが発生し、Abortします。

routes.php などの設定は、敢えて変更せず使用しています。
同じような現象を経験した方、いらっしゃいますか?(そもそも、2.0.6使っている人いるんだろうか)
■ このスレッドは過去ログ倉庫に格納されています