トップページ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/
0722nobodyさん2012/02/29(水) 21:19:59.68ID:???
>>721
出来ました!勉強になります。ありがとうございました
0723nobodyさん2012/03/01(木) 05:51:29.65ID:???
モデルって別にテーブル名じゃなくても良いんだね
同じのでもサイトのコンテンツによって変えてる
0724nobodyさん2012/03/05(月) 10:09:01.94ID:???
2.1 Stableキター
つうかペース早いな
0725nobodyさん2012/03/05(月) 19:23:27.93ID:???
うおおおお
公式サイトも変わってCookBookもなんか綺麗になったー

マイグレーションガイドによると.htaccessの変更が必要という、
アップグレード時に見落としがちな変更があるのにリリース文では触れられてないな・・・
http://book.cakephp.org/2.0/en/appendices/2-1-migration-guide.html
http://bakery.cakephp.org/articles/lorenzo/2012/03/05/cakephp_2_1_0_just_landed
0726nobodyさん2012/03/05(月) 20:11:55.24ID:???
まだ開発中なんだけど、バージョアップすべきなのかな?
0727nobodyさん2012/03/05(月) 20:59:06.49ID:???
リリースしてないならageた方がいいと思う
2.0.xは今までのバージョン系列で一番寿命が短いし、下手したら1.3.xより今後のアップデートが期待できない気がする
0728nobodyさん2012/03/05(月) 23:06:32.47ID:???
>>727
ありがとう。
2.0.x系からならフレームワーク置き換えだけでいいのかな。
0729nobodyさん2012/03/05(月) 23:42:52.00ID:WIGrArNU
>>728
自分の一つ上のレスも見ようぜ!
0730nobodyさん2012/03/06(火) 01:02:47.42ID:???
次の開発案件から2.0系にしようとしてたら、もう2.1・・・。
2.0系は結局書籍も出ずじまいか。
0731nobodyさん2012/03/06(火) 03:40:14.04ID:???
互換性をきっちりしてくれないと困るにょ
0732nobodyさん2012/03/06(火) 21:43:10.65ID:???
>>727
ありがとう。
出来ました(゚ω゚)
0733nobodyさん2012/03/06(火) 22:01:24.25ID:???
2.0リリースが10月半ばだったから5ヶ月経たずに2.1出たのか
2.0は短命だったね・・・
本が出ないのもしょうが無いというか、出してしまっていたらすごい中途半端なタイミングになっていたと思う


1.2 2008/12
1.3 2010/04
2.0 2011/10
2.1 2012/03
0734nobodyさん2012/03/06(火) 23:43:25.94ID:???
Cakeにcreate tableする関数はありますか?
普通にqueryでベタSQL投げないと駄目?
0735nobodyさん2012/03/07(水) 18:16:47.78ID:???
お前らなんか言えよ
0736nobodyさん2012/03/07(水) 22:24:25.29ID:???
お前らがcakeで作ったもので、何を最大どのくらいの期間かかった?
俺はSNSで3ヶ月。
0737nobodyさん2012/03/08(木) 08:15:28.96ID:???
官公庁のシステム
2ヶ月3000万円
0738nobodyさん2012/03/08(木) 09:50:17.49ID:???
>>737
まじかよ。
あぁいう国の案件はどうやって仕事もらうの?

みんなやりたいよね。
0739nobodyさん2012/03/08(木) 10:16:55.80ID:???
てか、2ヶ月って凄いな。
国のシステムだからそんなに凝ったことはしてないだろうけど、
どんな機能があって2ヶ月なんだろ?

0740nobodyさん2012/03/09(金) 11:27:56.60ID:???
犯罪の香りがする
0741nobodyさん2012/03/09(金) 11:43:23.36ID:???
随意契約くさいな
0742nobodyさん2012/03/09(金) 12:57:11.13ID:???
2.0から始めたいのにマニュアルが英語しかないとかwww
0743nobodyさん2012/03/09(金) 13:13:11.92ID:???
英語英語うるせーよ、このスレ小卒ばっかりか?
0744nobodyさん2012/03/09(金) 14:27:27.18ID:???
お前は英語で書けよ
0745nobodyさん2012/03/09(金) 16:18:01.14ID:???
speak english or die
0746nobodyさん2012/03/09(金) 16:24:51.22ID:???
shine!
0747nobodyさん2012/03/09(金) 16:51:22.89ID:???
dieとかwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
エイリアス使ってるバカってまだいたんだwwwwwwwwwwww
0748nobodyさん2012/03/09(金) 16:54:34.34ID:???
fack you!
0749nobodyさん2012/03/09(金) 17:40:19.41ID:???
OUTA MY WAY, WTF!!!!!!!!!!
0750nobodyさん2012/03/09(金) 17:54:30.33ID:???
アソシエーションするとき、プライマリキー以外とforeignKeyで
繋げるにはどうすればいいのでしょうか?
0751nobodyさん2012/03/11(日) 02:18:22.14ID:???
そんなことより誰か複合主キーに対応するためのプラグインを書けよ。な?
0752nobodyさん2012/03/11(日) 10:46:34.94ID:???
ビュー内の$this->Paginator->prev()とかnumbers()で吐き出されるリンクに
PHPSESSIDをくっつけたい(?PHPSESSID=hoge)んだけど、どうしたらいいかな

コアの$html->link()を書き換えたりしたらいけそうだけど、
もっとスマートな方法ある?
0753nobodyさん2012/03/11(日) 11:29:49.63ID:???
>>752
自己解決
'options' =>
array(
'?' => array(session_name() => $this->Session->id())
)
こうした
0754nobodyさん2012/03/11(日) 16:36:31.78ID:???
ソース追ったけどよくわからなかったので質問します。
CakePHPでのCookieを書き込む際に暗号化したデータをJavaScriptで復号するロジックはありますか?
0755nobodyさん2012/03/11(日) 22:15:13.63ID:+TvrXerP
うるせぇ!
いいからCakePHPで複合主キーに対応する為のプラグインを誰か書けや。
な?
0756nobodyさん2012/03/11(日) 23:31:02.18ID:???
>>754
ソース見る限り、Security::$typeで設定した暗号方式でSecurity.salt使って
それをbase64_encodeして暗号化してるっぽいので
それを逆に処理すればJavascriptでも復号化できると思う。
詳しくはcookie componentのソース見て。

だけど、複合に必要なキーのSecurity.saltをJavascriptに
書かないといけないので、そもそもなんで暗号化したんだって
ことになるので設計を見なおしたほうがいい。
0757nobodyさん2012/03/12(月) 00:06:16.05ID:uEcRtOSh
>>754
老婆心ながら、>>756が言っていることを強調しておく。
設計を見直せ。salt の意味がない。
0758nobodyさん2012/03/12(月) 13:24:30.73ID:???
よくある返信不可のメールアドレスって
@以前のユーザ作成してるのかな?noreplyみたいな
存在しないアカウントをreturn-pathに設定してメール送ってるのかな?
0759nobodyさん2012/03/12(月) 16:18:31.39ID:???
UI含めて設計について相談です。

複数チェックボックスを使って、チェックした項目をDBに登録し、
後から検索できるようにしたいと思います。疑問は2点。

1:テーブルの1つのカラム内にカンマ区切りで登録するのでしょうか?
2:その場合、conditionsで検索できるのでしょうか?
0760nobodyさん2012/03/12(月) 17:53:27.28ID:???
画像のサイズ別のURLって、
テーブルに保存してますか?
afterFindなどで組み立ててますか?
それとも、ビューでその都度組み立ててますか?
0761nobodyさん2012/03/12(月) 18:10:15.80ID:???
ビューで変えてます。携帯用の画像とか。
0762nobodyさん2012/03/12(月) 19:45:42.19ID:???
>>759
1は好きにしたらいい
2はインデックス当たらなくていいならできる
0763nobodyさん2012/03/12(月) 19:58:56.46ID:???
>>762
どうやって検索するのでしょうか?
1カラムにカンマ区切りのレコードがあったとして、
それをCakeのconditionsで検索する方法がわかりません
0764nobodyさん2012/03/12(月) 21:01:20.27ID:???
>>763
cakephpに配列をシリアライズして
登録するプラグインあるから、それ使え。
0765nobodyさん2012/03/12(月) 21:33:33.63ID:???
わかりました。探してみます
0766nobodyさん2012/03/12(月) 21:53:31.19ID:???
>>763
SQLのLIKEはわかってんのかな?
0767nobodyさん2012/03/12(月) 22:27:22.65ID:???
小一時間探しましたが、save時にシリアライズできるものの、
find時にconditionsで絞り込むのは無理みたいですね・・。
>>766
はい。それは分かりますが、登録されている値が
「1,10,11」みたいな場合、likeは利かないと思います。
0768nobodyさん2012/03/12(月) 23:32:17.51ID:???
>>756
>>757

ありがとうございます。
サーバサイドのJSでの実装を考えているため、種が漏れることはないと考えています。

ご回答/ご指摘ありがとうございました。
0769nobodyさん2012/03/12(月) 23:45:06.08ID:???
>>767
ソート順さえあっていれば、1かつ10かつ11なら column LIKE '%1,%10,%11,%' とかでいけるんじゃないの
ソートしてないのなら column LIKE '%1,%' AND column LIKE '%10,%' AND column LIKE '%11,%'
0770nobodyさん2012/03/12(月) 23:58:59.56ID:???
>>769
さすがにひどい。

>>767
方法1.「ビット演算 チェックボックス」でぐぐれ。
方法2.項目ごとにカラムを分ける。
0771nobodyさん2012/03/13(火) 02:48:15.55ID:???
脆弱性対策は大事だよ
http://www.1x1.jp/blog/2012/03/mass_assignment_vulnerability_cakephp.html
0772nobodyさん2012/03/13(火) 10:18:36.45ID:???
>>767
もっと頭使おうぜ
1,10,11
ではなくて
001,010,011
みたいにすれば、like %001% で検索できるだろ。
あくまで1例だから、データに何がくるかによって
良い実装があると思うので、よく考えて。
0773nobodyさん2012/03/13(火) 12:48:03.37ID:???
俺ならHABTMにしちゃうね
07747602012/03/13(火) 13:20:03.94ID:???
>>761
ビューが条件分岐だらけになりませんか?

if (!empty($post['Post']['image_filename']):

....

else:

こんな風に。

$post->getImageUrl(array('mobile' => true));
みたいに書けたらいいんですけどねぇ・・・
0775nobodyさん2012/03/13(火) 13:39:42.66ID:???
>>774
Helperつくれば?
0776nobodyさん2012/03/13(火) 13:45:55.38ID:???
>>775

そうなんですけど、
モデルの返り値が配列じゃなくてエンティティなら、
もっとスマートに書けるのに、と思いまして・・・

これがCake流なんですかね
0777nobodyさん2012/03/13(火) 13:53:09.13ID:???
>>772
その考えはありませんでした。勉強になります!

ビット演算の事を>>770さんから教えていただき勉強しましたが、
数学が苦手な私の頭ではさっぱりで、
単純にテーブルを分ける(Cake的にhasMany)を考えていました。

テーブルを分けて正規化する方法も一般的なようですが、
正直、チェックボックスを使用するカラムが必要な度に
テーブルを生成するのもどうかと思い、悩んでいました。

772さんの方法も視野に入れて設計面を工夫してみます。
みなさん、ありがとうございました。
0778nobodyさん2012/03/13(火) 22:24:16.17ID:???
likeなんか使ったらインデックス使えなくて
遅くなるだろw
0779nobodyさん2012/03/13(火) 23:03:53.03ID:???
>>776
エンティティが返ってこないのが俺がCakeが嫌いな理由の一つではある。
07807762012/03/14(水) 03:34:06.02ID:???
CakeEntityなんてのもあるみたいですが・・・

今はYiiを調べてる。
0781大便2012/03/15(木) 08:30:03.53ID:UhuckWxP
ペニー秋田は犯罪です。
早速ペニーオークションで破産しました。
0782nobodyさん2012/03/15(木) 15:50:54.34ID:???
>>778
別にLIKE使ったからってインデックス効かなくなるわけじゃないから
0783nobodyさん2012/03/15(木) 16:11:21.14ID:???
みなさん、プラグイン作成してます?
お問い合わせフォームとか会員専用ページとか
どのサイトでもよく使うファイルをプラグインにまとめるべきか否か悩みます。
0784nobodyさん2012/03/15(木) 20:50:17.13ID:???
>>782
効かなくなるが
0785nobodyさん2012/03/15(木) 21:19:00.56ID:???
>>783
どこまで汎用性もたせるか悩んで、
結局いつもコピペで済ませてる
0786nobodyさん2012/03/15(木) 21:56:56.36ID:???
ある程度規模でかいサイトで普通のLIKE検索はありえないよね。
0787nobodyさん2012/03/16(金) 00:00:22.47ID:???
普通はどうしてるの?
0788nobodyさん2012/03/16(金) 09:41:57.89ID:???
>>783
俺はまとめてるよ。
ログイン
リマインダー
新規会員登録
アフィリエイト機能とか。

うまく作れば使いまわし効く。
全部プラグインでやれるから
最近やることなくなった。
0789nobodyさん2012/03/16(金) 10:19:44.39ID:???
>>788
それらをプラグイン化して、サイトによってビューを修正する感じ?
0790nobodyさん2012/03/16(金) 10:41:05.32ID:pS4d35yu
ログイン状態のセッションが数時間で切れて困っています。
ログインすると
$this->Session->write('user',$user_id);
のようにコントローラ内のSessionに情報を保存していますが、これが数時間でread()しても値が取れなくなるようです。


core.php内で
Configure::write('Session.save','cake');
Configure::write('Session.timeout', (24*60*60*7));
ini_set('session.gc_probability', 1);
ini_set('session.gc_divisor', 1000);
ini_set('session.cookie_lifetime', (24*60*60*7));
ini_set('session.gc_maxlifetime', (24*60*60*7));

Configure::write('Security.level', 'low');

としているので、1週間持って欲しいのですがダメみたいです。

何か方法はありますでしょうか。





0791nobodyさん2012/03/16(金) 20:57:57.62ID:???
>>789
具体的にいうと、
プラグインの中に
ビヘイビアと、コンポーネントを作る。

それをusercontrollerとmodelに読み込ませる感じ。
0792nobodyさん2012/03/16(金) 20:59:06.57ID:???
>>790
cookie使えばいいじゃん。
ses切れてても、cookieがあればそれでログインみたい。
0793nobodyさん2012/03/17(土) 00:04:22.68ID:???
>>791
なるほど。ビュー周りは特に変更しないんだね。
変更するならCSSをいじるぐらいか。
0794nobodyさん2012/03/17(土) 19:37:12.80ID:???
2.x対応のTreeHelperってないですか?
または修正版のサイトとかあれば
0795nobodyさん2012/03/19(月) 15:45:40.35ID:???
http://b.hatena.ne.jp/entry/anond.hatelabo.jp/20120318122617
これって結局安いの高いの
0796nobodyさん2012/03/19(月) 16:50:34.02ID:???
Qdmail(http://hal456.net/qdmail/)使ってるひといる?
さくらインターネットのメールサーバにQdmail使ってSMTP AUTHでメール送信してるんだけど、
何回か(4,5回が多い)に1回だけメール送れないんだよな

QdSmtp error: No Responce SYSTEM TIME OUT line -> 603
QdSmtp error: getMessage error line -> 543
QdSmtp error: Error From setting line -> 488
QdSmtp error: Send Data Error or Auth Error line -> 415
Qdmail error: Qdmail Version 1.2.6b ,PHP Version 5.2.11
Qdmail error: OS WINNT ; PHP Version 5.2.11 ; Qdmail version 1.2.6b
php.ini status: mb_language = Japanese ; mb_internal_encoding = UTF-8 ; mb_detect_order = ASCII,JIS,UTF-8,EUC-JP,SJIS
Qdmail Status debug: 0, log: 3, errorlog: 0
Qdmail error: No send . Because SMTP mail method replied error line -> 2190
Qdmail error: Send Error line -> 2115
Qdmail error: Error happen, see upper line -> 2194
Qdmail error: Send Error line -> 2115

画面にこんなエラーが吐き出されてメール送信されない。
エラー行だって言われてるところを見てもエラー行を出力する処理しか書いてなくて
どういうエラーが起こったのか全然わからない・・・。

同じような事になった人いないかな?
0797nobodyさん2012/03/19(月) 17:26:02.77ID:???
スレ違い
0798nobodyさん2012/03/19(月) 17:27:57.85ID:???
>>797
すまん、一応CakePHPのコンポーネントとして使ってるし、
Cake使ってる人でメール送信する人はこれ使ってる人多そうだからここで聞いてみた

PHP質問スレで聞いたが、そこでもスレ違いだとさ・・・。
ライブラリの質問できる場所無いみたいなんだよな
0799nobodyさん2012/03/19(月) 19:02:54.22ID:???
>>798
そうじゃなくて、ライブラリ自体、公式でサポートしてるんだから
そっち行けってことっでしょ。エラーメッセージすら読めてないし。
フレームワーク以前の問題だ
0800nobodyさん2012/03/20(火) 05:09:01.21ID:???
qdmailって、公式もサポートほとんどしてないだろあれ。
エラーメッセージもいいかげんだし。
0801nobodyさん2012/03/20(火) 09:47:42.67ID:???
>>800
わかる。
0802nobodyさん2012/03/20(火) 22:24:51.38ID:???
じゃ、qdmail使わずに自作しろよ。
メール送信なんて今まで作っていたのあるだろ。
0803nobodyさん2012/03/20(火) 23:14:24.46ID:???
・マルチバイト対応
・HTMLメール
・添付ファイル
こういうの対応しようとすると結構自作でやるのはな、、、
0804nobodyさん2012/03/21(水) 12:11:52.99ID:???
いやいや、普通に1000行もかからずコード書けるから。
フレームワーク使う前に作っていたものがあるだろ。それ使えよ。
0805nobodyさん2012/03/21(水) 18:27:13.50ID:???
cake使っててシェルでURLを組み立てたいときは何を使えばいいですか?
0806nobodyさん2012/03/21(水) 20:09:46.98ID:???
シェルでURLを組み立てたいって意味がわからないんだが
0807nobodyさん2012/03/21(水) 21:31:40.83ID:???
>>804
オレオレフレームワークつかっとけよw
0808nobodyさん2012/03/21(水) 23:19:44.62ID:ZAI6cSPi
$this->set('select', $this->Foo->find('list', array(//select要素
'fields' => array(
'Foo.id',
'Foo.firstname'
)))));
とすると、
$form->select("Foo.bar", array($select), 0, array('empty' => null))

select要素の中に
<option value="Fooのid">Fooのfirstnameの中身</option>
というのができるんですが、
これを
<option value="Fooのid">Fooのsecondnameの中身 Fooのfirstnameの中身</option>
としたいんですが、find('list')は一対でしか使えないんでしょうか?
やり方をご教示いただけたら幸いです
08098082012/03/21(水) 23:27:53.96ID:ZAI6cSPi
自己解決しました
allで読んで、
foreach ($select as $value) {
$talent_data[$value['Foo']['id']] = $value['Foo']['secondname'] . ' ' . $value['Foo']['firstname'];
}
$this->set('select', $select);
でlistで作ったoption群と同じ形式のリストデータが生成されました
0810nobodyさん2012/03/22(木) 00:13:00.01ID:???
modelにrule=>urlを書いたらurl欄が空欄もurlが正しくないになってしまうんですが、
urlが空でもよくて、入っていれば正しいURLか判定する、という風にするやり方がありましたらお教えください
0811nobodyさん2012/03/22(木) 00:20:23.77ID:???
allowEmpty
0812nobodyさん2012/03/22(木) 00:35:14.75ID:???
>>811
ありがとうございます、解決できました!
0813nobodyさん2012/03/22(木) 02:02:03.59ID:???
>>806
URLをTwitterに投稿するときに使おうと…
0814nobodyさん2012/03/22(木) 10:58:28.03ID:???
>>807
煽る意味がわからん。他人のライブラリは使えないと言い、
自分でも自作できないとかワガママすぎるだろ。
0815nobodyさん2012/03/22(木) 19:38:50.77ID:???
>>814
先に煽ったのは>>804じゃね
フレームワークスレで、自分で書いたもん使えて
0816nobodyさん2012/03/23(金) 00:01:31.13ID:???
おかしくないだろ。なんでも他人を頼ろうとするなよ。
自分でコンポーネントやヘルパー作れるようになってるんだから。
0817nobodyさん2012/03/23(金) 10:24:37.19ID:???
up
0818nobodyさん2012/03/23(金) 11:50:45.97ID:???
自分で簡単に組める人はここで質問しないだろ。自分が見落としてるだけで、他のいいモジュールがあるのかも?って淡い期待で書き込んでるんだとおもうよ。自分で組むしか方法が無い。っていう結論を貰えるだけでも嬉しいのでは?
0819nobodyさん2012/03/23(金) 13:36:50.00ID:???
なにかおかしくね?自分でプログラミングせずに、
いきなりフレームワーク使い出したというのか?
大体は参考書やらネットの情報やらで適当なプログラム作って、
慣れた後に効率化を求めてフレームワークを使い出すと思うんだが。
0820nobodyさん2012/03/23(金) 13:42:01.91ID:???
mail関数やmb_send_mail関数でメール送信しようとして
文字化けしたり、上手く送れなくてネットで調べながら
自分なりの「メール送信ライブラリ」を作ると思うんだが。

で、その後に添付ファイルやらHTMLメールやらを送信したくなって
qdmailのような他人が作ったライブラリを探すというのなら分かるよ。
でも、いきなり上記の部分すっ飛ばしてCake使って
「上手く動きません><」とか言われても、勉強不足以外の何者でもないだろ。
0821nobodyさん2012/03/23(金) 16:25:24.36ID:???
仲良くしようぜ。
■ このスレッドは過去ログ倉庫に格納されています