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

【PHP】フレームワーク CakePHP 14ホール目【v2.1】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2012/05/01(火) 16:58:44.53ID:fVBzm1/A
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 13ホール目【v2.0】
http://kohada.2ch.net/test/read.cgi/php/1320768310/
0514nobodyさん2012/08/08(水) 18:28:34.00ID:LAYqfGos
cakePHP2.0 で下の構文は使えなくなったのでしょうか?
画面よりログインボタンを押下し
期待している動作としては、ログインに失敗した場合
ユーザ名もしくはパスワードに誤りがあります
というメッセージが画面に出る事を期待しているのですが
setFlashの方が優先されてしまいます。


public function beforeFilter()
{
parent::beforeFilter();
$this->Auth->loginError = 'ユーザ名もしくはパスワードに誤りがあります';

}


public function login()
{
       //認証NGの場合
$this->Session->setFlash(__('残念!'), 'default', array(), 'auth');
}
0515nobodyさん2012/08/09(木) 18:05:47.44ID:DMpFXPo0
cakePHP2 の認証系の勉強をしています。
そこで↓を参考にしてアカウントの作成まで行う事が出来る様になったのですが
cake_sessions とusers
テーブル上のレコードを全て削除した上でアカウントを作成しても
常に

http://weble.org/2012/03/22/cakephp-2x-auth

users.id の値がインクリメントされた状態で入ってしまいます。

例)
users.id = 15 の状態でこのレコードを削除し
再び登録処理を行った場合には
users.id = 1 が入って欲しいのですが
users.id = 16 が入ってしまいます。

原因をご存じの方がいらっしゃいましたらお教え下さい。

0516nobodyさん2012/08/09(木) 18:16:09.26ID:DMpFXPo0
あと、 cakePHP2 でcronを走らせる場合の方法を細かく説明している
おススメサイトがあったら教えて下さい。
0517nobodyさん2012/08/09(木) 20:07:01.62ID:???
なんでも聞くな
調べろカス
0518nobodyさん2012/08/09(木) 20:25:01.28ID:DMpFXPo0
調べ方を教えろや
0519nobodyさん2012/08/09(木) 20:35:28.78ID:???
お前のかいた「cakePHP2 でcron」でぐぐったら先頭にそれっぽいのあるだろかす
書き込むなかす
0520nobodyさん2012/08/09(木) 20:44:18.25ID:???
>>515
idがauto incrementだからじゃねの?
0521nobodyさん2012/08/09(木) 21:44:41.71ID:???
>>515
逆にusers.id = 1だと非常にまずい気がするんだが。
0522nobodyさん2012/08/09(木) 21:53:08.28ID:DMpFXPo0
>>520
Ou!! サンキュー


>>521
なぜまずいのでしょうか?

true と判定されちゃう?とか?
0523nobodyさん2012/08/09(木) 21:54:01.87ID:???
CAKEでもPHPでもなくDBの問題だろ
>テーブル上のレコードを全て削除した上で
オートインクリメント値を戻せよ
それなんですか?とかまた聞くなよ?調べろ
0524nobodyさん2012/08/09(木) 22:40:10.77ID:/OApl7of
↑それくらいわかるわ。
0525nobodyさん2012/08/10(金) 00:50:06.97ID:???
けんか腰になるな良く図が
0526nobodyさん2012/08/10(金) 01:10:09.25ID:???
日本語もかけない癖して人様に文句を垂れるなよ >>525
0527nobodyさん2012/08/10(金) 02:30:02.81ID:???
>>526
2ちゃんで何言っちゃってんの?
0528nobodyさん2012/08/10(金) 03:20:41.62ID:???
それくらい誰でもわかるってことを
延々質問してるわけだけど
0529nobodyさん2012/08/11(土) 02:22:52.66ID:???
ルーティングって動的に変えられるのでしょうか?
DBに登録した設定で管理したいのですが。
0530nobodyさん2012/08/11(土) 11:13:49.63ID:???
>>529
タイミングによりますよ
普通は routes.php に記載しますから、その時点で独自にDB接続することになります。

routes.php よりも後で設定できますか?って質問なら、分からないけど多分CakePHPの想定外なのでやめた方が良いのと違う?ってことになります
0531nobodyさん2012/08/11(土) 13:25:15.29ID:???
>>514

亀レスだけど、CakePHP2ではAPIが変わってるからドキュメント読み直した方が良いよ。
loginError っていうプロパティは無くなってます。
0532nobodyさん2012/08/11(土) 13:51:30.91ID:???
>>530
そうですか・・。Wordpressにあるように
ユーザがルーティングパターンを選択できたらいいと思ってたんです。
無理と言うことなら諦めます。
0533nobodyさん2012/08/11(土) 13:58:26.18ID:???
え?WPってそんなことできんの?
0534nobodyさん2012/08/11(土) 20:59:09.76ID:nk3X9t5Y
コントローラで
$this->paginate = array(
'limit' => 3,
'order' => array('Foo.bar' => 'asc');
)
$this->set('foo',$this->Paginate());
としてもFoo.barのasc順になりません
数字を書き換えると1ページの上限がかわるので、1行目での設定が無視されてるわけではなさそうなんですが
どうすれば順番の指定ができますでしょうか?
ご教示お願いいたします
0535nobodyさん2012/08/11(土) 22:14:02.92ID:???
orderってarrayで指定できたっけ?
05365342012/08/11(土) 22:33:59.62ID:nk3X9t5Y
>>535
念のため
'order' => array('Foo.bar' => 'asc');
を
'order' => array('Foo.bar asc');
に書き換えてみましたが順にならなかったです
よろしくお願いいたします
0537nobodyさん2012/08/11(土) 22:41:47.17ID:???
'order' => 'Foo.bar asc'
05385342012/08/11(土) 22:46:39.98ID:nk3X9t5Y
>>537
ありがとうございます
それでも順になりませんでした
念のため他にpaginateを指定してる個所がないかスクリプトにpaginateで検索をかけたところ、
$this->paginate = array(
と
$this->set('foo',$this->Paginate());
しかヒットしなかったので、どこかで指定しちゃってたってことでもないようです
0539nobodyさん2012/08/12(日) 15:50:49.77ID:???
ログイン中のユーザIDを取得するにはどうしたらいいですか?

Usersテーブルを認証用のテーブルとして使用しています。
    id / email / password / created

イメージとしては下の感じで取れそうだったんですが。

$this->Auth->id
05405392012/08/12(日) 15:52:15.00ID:???
自己解決しました。
05415342012/08/13(月) 03:34:01.92ID:DBWlC9mq
$this->paginate = array(
と
$this->set('foo',$this->Paginate());
の第三引数にorderを設定したらいけました
0542nobodyさん2012/08/14(火) 15:24:43.09ID:Gol/k/SD
$this->Article->id = 3;
$this->Article->read(); // reads a third record
$record = $this->Article->data // stores the third record in $record

↑これでレコード取得できるんだけど、

$this->Article->id = 3;
$reacord = $this->Article->read();

↑これでも取得できなかったっけ?あれ?俺の勘違い??
今やってみるとNULLが帰ってきてる
$this->Article->data
ってやるとちゃんと取得できてる
今までのコードずっと
$reacord = $this->Article->read();
で取得してるコード書いてて、
それで確認できてるはずなんだけどな、、、??
0543nobodyさん2012/08/14(火) 17:20:28.09ID:???
>>542

後者の書き方でも問題ないはず。
そしてコアのModel::read()メソッド自体は1.2から特に変わっていない。
となると、考えられる原因は
1)自前で書いたbeforeFind()でしくじっている
2)ビヘイビアで何やら起こっている
3)AppModel.phpかArticle.phpでread()メソッドをオーバーライドしていて
 コアのread()挙動が変わってしまっている

なんにせよ、debug()祭りで原因箇所を探すべし
0544nobodyさん2012/08/14(火) 17:24:28.52ID:???
すまぬ。
>>543の1)はafterFind()で読み替えてくれい
0545nobodyさん2012/08/15(水) 02:43:01.91ID:???
↓このスレは終了を議論しています(質問受付は停止)

PHP】下らねぇ質問はID出して書き込みやがれ 122
http://kohada.2ch.net/test/read.cgi/php/1344963135/
0546nobodyさん2012/08/16(木) 04:28:57.25ID:4Ld1R7VY
Retrieve
0547nobodyさん2012/08/26(日) 17:18:00.39ID:???
1週間以上レスがない・・・
0548nobodyさん2012/08/26(日) 18:14:00.41ID:+ThJuMom
PHP歴5年以上、CakePHP歴1か月です
他フレームワークはSymfony, Ethnaあたりを少々

さて、CakePHP1.3+PHP5.3.3で質問です。
1. 実行中のControllerオブジェクトをViewで取得するにはどうしたらよいですか?
 Controller::getInstance()とかないのかな?
 View->set('controller', $this)とかを試したんですが、
 DebugKitとの相性が悪く、な手を模索中です。
2. AuthコンポーネントをViewで呼び出すにはどうしたらよいですか?
 Session('Auth.XXX')でも参照できるけど
 なんかプライベート変数を盗み見ているようで気持ちが悪い。

ご存知の方がいらっしゃたらよろしくおねがいしますです。
0549nobodyさん2012/08/26(日) 18:17:02.43ID:???
そんなわけ分かんないことしたいんなら無理してCake使うなよ
05505482012/08/26(日) 18:22:47.13ID:+ThJuMom
そんなこと言わんといてー
0551nobodyさん2012/08/26(日) 18:40:22.53ID:lL3DBKkv
Answer:Yiiを使え
05525482012/08/26(日) 18:46:51.19ID:+ThJuMom
Yiiは選考対象に入れていたんだけど、
知名度の低さと日本語リソースの少なさでCakeに勝てなかったんだよ。

環境さえ整えばYiiはよい選択肢だよね。
0553nobodyさん2012/08/30(木) 10:00:09.56ID:/uv7B1Aq
$this->renderや$this->flashしてるのに
なぜか下のプログラムも読み込みにいって困ってるんですがどなたか理由わかりませんか?

ちゃんと動いて止まってくれるところもあるけどなぜか動き続けるところもあって違いがわからないです。
0554nobodyさん2012/08/30(木) 11:50:06.98ID:???
下のプログラムって何のことかよく分からんから詳しく。

ひょっとして afterRender とかのコールバック系じゃないの?
そもそもプロセスの終了はControllerでは制御しない。
Controller そのものを動かしている Despatcher がいろいろやってる。
0555nobodyさん2012/08/30(木) 11:50:58.51ID:???
(x)Despatcher
(o)Dispatcer
05565532012/08/30(木) 12:27:23.14ID:/uv7B1Aq
>>554
例えば、
if(!$this->Model>save($this->data))$this->flash("保存失敗",/index);

という感じに保存に失敗したら、真っ白の画面に「保存失敗」とだけ表示して数秒後に指定ページへ飛ばしたいのですが
実際はViewまで読み込んでしまう現状です。
exit()てきな動きをすると思ってたのですが、ひょっとして勘違いですか?
0557nobodyさん2012/08/30(木) 13:58:28.85ID:???
return;すれば?
0558nobodyさん2012/08/31(金) 11:00:18.38ID:???
>>556
そういうときは2系だと Controller::redirect を使うんだけど、
その書き方だと1.3なのかな?
0559nobodyさん2012/08/31(金) 13:18:33.55ID:???
renderとかflashだと処理は終了しないので>>557の言うように処理の中断もしたいならreturnするのが正解

>>558
redirectとflashは別物だよー
0560nobodyさん2012/09/07(金) 23:58:12.87ID:???
何でこんなに盛り上がってないんだ
cakephp2本も出るというのに
0561nobodyさん2012/09/08(土) 00:41:43.49ID:???
オワコンだから
0562nobodyさん2012/09/08(土) 01:18:50.89ID:???
Cakeがオワコンかどうかはさておき、
2chで情報交換する時代じゃなくなったよな
0563nobodyさん2012/09/08(土) 01:25:56.12ID:???
>>560
いつでるの?
0564nobodyさん2012/09/08(土) 02:31:39.98ID:???
>>562
かといって公式コミュニティはなんかお堅い感じがするし、ブログに書いても反応があるかわからないし
でもcodeなにがしが転けたりしているのを見ると技術者向けコミュニティっていうのは本当に運用が難しいんだろうな

>>563
29日だとか
執筆陣から期待が高いぜ
http://www.amazon.co.jp/dp/4774153249
0565nobodyさん2012/09/08(土) 09:50:55.77ID:???
Cakeがオワコンなのは事実だがスレが盛り上がらないのは
2chがオワコンなのが原因
最近どこのスレでも会話が成立しなくなってきてて困る
0566nobodyさん2012/09/08(土) 11:04:20.78ID:???
最近2chの過疎ぶりがひどい
ブラウザの「最近読み込んだスレ」のほとんどが、俺の書き込みで止まってる
内容は普通だから、俺が悪いんじゃないぞ
0567nobodyさん2012/09/08(土) 12:32:12.69ID:???
雑談板は普通に人いるけどな
専門板が過疎ってるだけ
なぜなら未だにsage進行にこだわったり
質問したらテンプレ嫁、みたいな10年前から進歩してないオッサンが
幅きかせてうざいから
0568nobodyさん2012/09/08(土) 12:52:04.55ID:???
規制が厳しいせいもあるかも
auひかりとか使ってたらほぼ書き込めないだろ?
0569nobodyさん2012/09/08(土) 13:21:35.98ID:???
専門晩に来なくなった人達は、どこに行ってるんだろうな?
公式フォーラムとかその辺がかわりに賑わっているわけでもないし
0570nobodyさん2012/09/08(土) 14:40:44.18ID:???
1.3系で作ってた過去のシステムを全部1.3.15に上げたぜ
もう1.x系のリリースはないだろう

しかし2.x系のリリースはバージョンアップが激しくて手が出しにくいな
2.0、2.1、2.2と4ヶ月スパンくらいで出てないか?
1.2から1.3までは1年半くらいかかったのに
0571nobodyさん2012/09/08(土) 14:57:41.60ID:???
2系はガンスルーしてるわ
対応めんどくさいから新規案件もガンガン1.3使い回して作ってる
うちみたいな零細には余計な手間かける余裕が一切ないからな
0572nobodyさん2012/09/08(土) 15:32:24.19ID:???
>>569
ツイッターで独り言つぶやき続けてる印象
あいつらマジで非コミュだな、匿名掲示板で議論もできないのかよ
0573nobodyさん2012/09/08(土) 15:34:11.67ID:???
まあ、このスレも>>565以下殆ど俺の自演なんだけどな
0574nobodyさん2012/09/08(土) 16:16:43.77ID:???
>>572
ツイッターで書いてると、他の全部がめんどくさくなるからな
ブログとか俺も全然書く気がしない
0575nobodyさん2012/09/08(土) 16:36:12.19ID:???
2系はそんなに変更点多くないし、1.3系よりかなり早くなってるよ。
更新はともかく、新規案件なら2系で作ってもメリットはあると思う。
0576nobodyさん2012/09/09(日) 19:53:39.13ID:???
cakeってオワコンなの!?

ちょうどcakeで作ろうと思ってたのに…
今なら変えられるけど代わりのいいフレワないのだろうか…
0577nobodyさん2012/09/09(日) 20:05:22.24ID:???
Yiiがいいらしい
使ったことないけど
0578nobodyさん2012/09/09(日) 20:19:59.28ID:???
英語できないからcake一択
0579nobodyさん2012/09/09(日) 20:26:41.47ID:???
英語ができるならyiiか…

一回お試しで簡単に触ってみるか

なんかcakeと似てるらしいし

どうもです
0580nobodyさん2012/09/09(日) 20:41:24.37ID:???
そんなにCakeって日本語の資料多い?
2009年あたり以降、日本ではあまり使われていない気がするが
0581nobodyさん2012/09/09(日) 20:50:36.97ID:???
他と比べたことないからわからないけどググったりCakePHP辞典とかは役に立ってるよ
1.Xのとか情報が古くても
0582nobodyさん2012/09/10(月) 15:53:53.54ID:???
Cakeオワコンっていうなら何があるっちゅーの?
まぁ、PHP自体があれかもしれんがな
0583nobodyさん2012/09/10(月) 16:01:44.70ID:???
そもそもフレームワーク自体オワコンで生PHPの時代かも


openpneだって2までは良かったんだけど3からシンフォニー()とか変なの採用してクソ重くなっただけでなくカスタマイズ性も落ちた
0584nobodyさん2012/09/10(月) 16:20:01.42ID:???
まぁ、フレームワーク使うのは開発者が開発しやすくするためだからな
利用者にはほとんどメリット無いよ
0585nobodyさん2012/09/10(月) 23:20:40.72ID:???
>>582
フレームワークの中ではYiiが一番良い

>>583
生はないだろ・・・めんどくさすぎるわ
0586nobodyさん2012/09/11(火) 03:14:36.56ID:???
何だよ cakephp.org のサイトが落ちちゃってるんで、
前から騒いでる Yii ってのでも覗いてみようと思ったら
そっちのサイトも落ちてるじゃねーかw

>>585
前からことあるごとにYiiの宣伝に勤しんでるようだが、
(別人かも知れないがな)
どう良いのか書かねぇと誰も話を聞いてくれんぞ
0587nobodyさん2012/09/11(火) 04:59:28.19ID:???
すれち
0588nobodyさん2012/09/12(水) 00:44:18.90ID:???
Eclipse 3.7.2 Indigo

一般 > ファイルの関連付けで
*.ctp をしっかり PHP エディター(デフォルト)に関連付けて
いるにも関わらず、Eclipseから*.ctpファイルを開いても
*.phpファイルを開いた時のフォントが適用されていません。

どこか設定が間違っているのでしょうか?

0589nobodyさん2012/09/12(水) 00:59:24.23ID:???
cakePHP使っているのに
標準のバリデーションを使わずに、
自前でController内でバリデーション処理を組み込んでいるのですが
こーいうことはしないほうがやっぱり良い?
0590nobodyさん2012/09/12(水) 01:03:11.83ID:???
DRYに書けるならいいんじゃね
0591nobodyさん2012/09/12(水) 01:08:25.46ID:???
>>590
実は、まだcakePHPのバリデーション機構をあまり理解していなくて(時間がないので)
既存のPHPの知識だけでコントローラ内でバリデーション処理を組んでます。
(FW使ってる意味ねーじゃんw)
0592nobodyさん2012/09/12(水) 01:10:40.04ID:???
あっそw
0593nobodyさん2012/09/12(水) 02:19:19.08ID:???
>>591
コントローラは質素に作るのが定石。
そのやり方はたぶんまずい。
使い方が分からなければ、ロジックをモデルに書いておいて後でリファクタリング。
0594nobodyさん2012/09/12(水) 02:33:05.48ID:???
>>593
アドバイスサンクスです。
※現在は、モデルは形上テーブル数分用意してますが
特にこれといったコードを書いていないです。。。
おいおい勉強してゆきます。
0595nobodyさん2012/09/12(水) 02:45:41.26ID:???
>>594
まずこれを読むといいと思ってどこかに上がってた翻訳を探してたんだが
見つけられなかったスマン。
http://bitfluxx.com/2008/01/23/cakephp-best-practices-fat-models-and-skinny-controllers.html

概要はここでわかる。
http://blog.syuhari.jp/archives/172

俺も始めコントローラにゴリゴリ処理を書いて納品したあとで
この知識を知って、この記事を早く読めばよかったと心から悔やんだ。
コントローラに複雑な処理を書くとあとで泣きを見る確率激高だ。
趣味でやってるんならじっくり覚えていけばいい。
0596nobodyさん2012/09/12(水) 05:14:49.77ID:???
>>595
ありがとうございます。
モデルの本来の使い方をやっと知った感じです。

コントローラに何でも詰め込んでいましたが
モデルに検索機能とかを移動させたら大分コードがすっきりしました。
0597nobodyさん2012/09/12(水) 10:25:29.96ID:???
バリデーションて使ったことないんだけど
ユーザー入力からのデータを保存する際には使った方がいいのか
0598nobodyさん2012/09/12(水) 11:06:09.67ID:???
君次第だ
0599nobodyさん2012/09/12(水) 13:35:01.67ID:???
どうでもいいってことか
0600nobodyさん2012/09/12(水) 14:33:36.86ID:???
Cake2.2にしたけど、どうしてもredirectするとセッションが空になるという問題が起きて
2日ぐらい調べているけどわからない
海外フォーラムとか見ても多発してるが解決策がない模様
1.3に戻すか…
0601nobodyさん2012/09/12(水) 16:00:33.62ID:???
>>600
あぁ、どっかで回避策読んだなぁ、、、
割と簡単に解決できるようなこと書いてあった。
0602nobodyさん2012/09/12(水) 18:21:16.88ID:???
うーむぐぐってもぐぐっても解決法が見つからん
古いバージョンのなら出てくるんだけど、当然試してもダメだった

よく調べるとリダイレクトすると空になるんじゃなくて、
リダイレクト前後でsession_id()が異なる値を返し、リダイレクト前にwriteした値が正しく保存されてないようだ
何故こうなるのかがわからない
0603nobodyさん2012/09/12(水) 19:14:19.36ID:???
>>600
Cakeってこういうバグたくさんあるからいやなんだよ
0604nobodyさん2012/09/12(水) 19:19:58.01ID:???
同感。まだまだ旧バージョンを使い続けた方がいいみたいだな
1.3も1.3.10ぐらいまではひどいバグあった、テーブル全消し喰らったり
0605nobodyさん2012/09/12(水) 19:24:44.80ID:???
Cakeに限った話じゃないが、セッションてデバッグしにくいよな
0606nobodyさん2012/09/12(水) 20:06:50.64ID:???
セッションがどれぐらい保持されるかっていう設定もややこしすぎるしCake
0607nobodyさん2012/09/12(水) 23:23:35.18ID:???
セッション切れは多分存在しないcssとかjsとか呼び出しちゃってんじゃないか
なんでもcakeのバグとか言わない。
0608nobodyさん2012/09/13(木) 00:03:27.42ID:???
>>600
普通にできるけど?
0609nobodyさん2012/09/13(木) 07:33:06.03ID:???
既存のWebアプリに外部に機能を提供するAPIを追加したいんだけど
APIでのユーザ認証はどんな風に実装するのが普通でしょうか?
APIへのセッション情報の受け渡し方法が判らないです・・・
0610nobodyさん2012/09/13(木) 08:19:36.38ID:???
クッキーで渡すしかない?
0611nobodyさん2012/09/13(木) 10:08:21.91ID:???
Oauth
0612nobodyさん2012/09/13(木) 11:09:41.72ID:???
>>611

トークン管理(発行・破棄)とか多重ログイン対応とか考えると大変そう・・・
0613nobodyさん2012/09/13(木) 11:11:51.90ID:???
あっそ
■ このスレッドは過去ログ倉庫に格納されています