トップページ⇒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/
0002nobodyさん2012/05/01(火) 17:02:19.22ID:???
落ちてたっぽいから立てたけど・・・大丈夫かな
0003nobodyさん2012/05/01(火) 18:42:40.42ID:???
>>1-2
乙!俺は感謝してるぜ
0004nobodyさん2012/05/02(水) 17:16:24.15ID:???
乙!いきなりDAT落ちしててびっくりしたから・・・

それにしても2.1.1でしかも2.2.0のベータって・・・早すぎだろw
0005nobodyさん2012/05/02(水) 17:30:40.73ID:???
2.1.2使用中で変な事になりました。

Aというコントローラがあります。
> public $uses = 'Bモデル';
という記述がしてあります。

Aのindexページで、
> echo $this->Form->create(null,array('type'=>'post','action'=>'Aのfunction'));

というフォームを作って送信すると、
Aファンクションのページに飛ぶかと思ったらなぜか/Bモデル/Aのファンクション/に飛んで、
当然ながらMissing Controllerが出ます。

indexページのソースを読むとフォーム自体が/B/Aファンクションに飛ぶようになってます。
どなたか原因分かりますでしょうか?
0006nobodyさん2012/05/02(水) 21:41:47.54ID:???
>>1おつ
0007nobodyさん2012/05/03(木) 18:56:39.25ID:2xcwqeF0
cakephpで作ったDBの中身をiphoneアプリからhttpで呼び出すと色々とめんどい?
0008nobodyさん2012/05/03(木) 23:43:44.23ID:???
>>7
簡単ではないけど面倒ってほどじゃないよ。

FlashBuilder(FlexBuilder?)でDBアクセスする方法がそのまま使えるんで、そのあたり調べるといいと思う。

体験版でandroidとかiPhoneのアプリ作り始めてサーバのDBアクセスのサービスを追加するとウィザードでコードを追加してくれるんで、必要な部分だけ流用してもいいかも。
(読み出しだけじゃなくて、追加・更新あたりのコードが全部追加されるので)

倫理的にはやり方だけ理解して自分で作った方が良いと思うけどw

まぁどうしてもcakeで作るなら結局作り直すことになるけどね
0009nobodyさん2012/05/05(土) 19:37:07.62ID:???
プラグインのwebroot直下にPHPファイルをおいて直接アクセスさせたいんだけど無理なのかな?
app/js/plugin_name/file_name.ext
を解釈するから、そもそも直下へのアクセス方法がない??
あばば
0010↑2012/05/05(土) 19:44:03.73ID:???
あ、勘違い臭い。さあせん
0011nobodyさん2012/05/05(土) 20:13:26.25ID:???
アクセスはできるけどPHPとして動かしてはくれないのか
そりゃそうか。そうなのか?まぁ仕方ないや。
0012nobodyさん2012/05/07(月) 04:57:19.77ID:???
バリデーションルールって、そもそもdataにそのカラムのキーが存在しない時はスルーしちゃうのね。
notEmptyスルーするからハマったわ。
requiredにtrueセットすればいいんだろうけど、この場合updateでうざいことになる。
じゃあってんで、onをcreateにして新規のときだけってしちゃうと、
更新時にnotEmptyが効かない=空でもスルーしちゃう

'field' => array(
'notempty' => array(
'rule' => array('notempty'),
'on' => 'update', // Limit validation to 'create' or 'update' operations
),
'notempty2' => array(
'rule' => array('notempty'),
'required' => true,
'on' => 'create', // Limit validation to 'create' or 'update' operations
),
),

こうしろってこと?
相当めんどくさいんだけど
0013nobodyさん2012/05/07(月) 05:06:28.87ID:???
'field' => array(
 'notempty' => array(
  'rule' => array('notempty'),
 ),
 'required' => array(
  'required' => true,
  'on' => 'create',
 ),
),
これでよさげ。これなら許せる。
0014nobodyさん2012/05/07(月) 20:37:16.11ID:???
codeigniterと比較するとバリデーションの可読性が悪いな。
配列が入れ子になってるのが悪い。
0015nobodyさん2012/05/09(水) 22:39:47.65ID:rDWus5fC
CakePHPでGDを使いたいんだけど、viewにそのままGDのコード(色つきの長方形を描くような)
文字化けしてしまいます。
php.iniではUTF8、<?phpの前に余計なものもはいってない状態ですが、
CakePHPでGDを使う際には何か注意すべき点はあるのでしょうか
0016nobodyさん2012/05/10(木) 14:58:57.25ID:???
今後の案件はじめるなら2のほうがいいの?
1.3で作ったシステムがあるんだけどこれからも使える?
0017nobodyさん2012/05/10(木) 15:10:33.63ID:???
>>13だめだったrule設定がないと確実にそのバリデーションがエラーになる。
0018nobodyさん2012/05/10(木) 18:33:31.10ID:???
>>16
「何で」作るかじゃなくて「何を」作るかだと思います。
0019nobodyさん2012/05/10(木) 18:52:33.46ID:???
はぁ?あれは1.3で作ったほうがいいがこれは2で作った方がいいとかあるの?
0020nobodyさん2012/05/10(木) 19:10:29.64ID:???
ない
0021nobodyさん2012/05/10(木) 19:11:07.26ID:???
強いて言えば何処の命で作るか。はあるかも。
0022nobodyさん2012/05/10(木) 22:59:50.95ID:???
参考になるかわからないけど、以前からCakePHPを採用している会社は新規案件も1.3だったけど、うちは1.xの実績ないから2.x採用してる
0023nobodyさん2012/05/10(木) 23:19:54.66ID:eaLKfNi7
cakephp1.3でボタンにロールオーバーさせたいんだけどうまくいかない。
smartRollover.js使って画像を_onと_offできりわけたいです。

だれかご教授くださいお願いします。
0024nobodyさん2012/05/11(金) 03:36:35.15ID:???
cake関係ないので嫌です
0025nobodyさん2012/05/11(金) 16:05:50.69ID:???
cssでやれよ
0026nobodyさん2012/05/13(日) 22:01:55.09ID:???
cakePHP2.0 を使っています。
現在、cakePHPのsave()を使ってupdateしようと
思っているのですが、そもそも更新対象のテーブルに主キーが2つある場合には
どうしたら更新(update)させる事が出来るのでしょうか?
(saveはinsertとupdateを自動で判定するそうなのですが
下記コードだと常にinsertが走ってしまい主キー違反エラーが出てしまいます。)


■table(hoge)
p_id_1 (int) 主キー
p_id_2 (int) 主キー
name (varchar)

■php
$p_id_1 = 11;
$p_id_2 = 22;
$name = "ななし子";

$hoge_data = array(
  'hoge' => array ('p_id_1' => $p_id_1,'p_id_2' => $p_id_2,'name' => $name));
$this->hoge->save($hoge_data);
0027nobodyさん2012/05/13(日) 22:10:28.52ID:???
主キーが2つ???
0028nobodyさん2012/05/14(月) 00:40:01.29ID:???
ありえない
0029nobodyさん2012/05/14(月) 00:42:24.81ID:???
完全に設計が破綻しています。本当にあry
0030nobodyさん2012/05/14(月) 02:26:11.78ID:???
>>27
複合キーです。
0031nobodyさん2012/05/14(月) 02:30:08.93ID:???
複合キー cakephp で検索
0032nobodyさん2012/05/14(月) 07:19:59.81ID:???
このスレの奴は複合キーを知らないから聞いても無駄だな
0033nobodyさん2012/05/14(月) 08:45:36.04ID:???
主キーを複合キーにするとか(笑)
0034nobodyさん2012/05/14(月) 09:36:14.55ID:???
CakePHP は複合主キーをサポートしません。

ってcookbookに書かれてるよ。
0035nobodyさん2012/05/14(月) 12:33:16.59ID:???
>>34
ありがとうございます。
諦めて delete / insert する事にします。
0036nobodyさん2012/05/14(月) 13:44:42.79ID:???
SQL直書きすればいいだろ
0037nobodyさん2012/05/14(月) 17:04:15.72ID:???
ビューの$paginator->prev('前へ')、$paginator->next('次へ')で
それぞれリンクが無くてもテキストとして表示されます。
これをリンクがない場合はテキスト自体表示しないようにするには
どうすればいいのでしょうか?
0038nobodyさん2012/05/14(月) 19:06:42.56ID:???
CakePHP+MySQLのシステムで、
DBのテーブル構成を、モデルから管理する方法で既存のもの何かないでしょうか

モデルのコンストラクタで、CREATE TABLE IF NOT EXISTする
カラムの追加なんかもソースに記述し、ソースに合った最新の状態になるようにALTER TABLEする
もちろん、不要であれば何もしない

こういうのがあれば理想ですが、自分で作るしかない?
0039nobodyさん2012/05/14(月) 19:33:49.99ID:???
DB設計見なおすべき。
そんな気軽にてーぶるいじらないでよ
0040nobodyさん2012/05/15(火) 00:22:17.46ID:???
>>38
ぐぐればいいじゃない
0041nobodyさん2012/05/15(火) 11:38:58.08ID:???
せめてcake shemaでも使うようにすれば?
0042nobodyさん2012/05/17(木) 22:55:40.27ID:JCS/4U80
Hogeモデルから
hoge、foo、barってテーブルから連結したデータを取るとき
CASEとかCOUNTした値を
バーチャルフィールドで取得するとき
Hogeの配列では取得できるんだけど
Fooの配列にいれることってできる?

バージョン2.1.2です。
0043422012/05/18(金) 01:47:39.34ID:???
ゴメソ。自己解決しました。

$this->virtualFieldsをモデルで読んでたけど
コントローラーから$this->Foo->virtualFields
にしたらいけました。
0044nobodyさん2012/05/18(金) 21:14:27.21ID:???
>>1
cakeqs.orgのリンク消えてるけど?
0045nobodyさん2012/05/19(土) 01:18:11.81ID:???
>>44
1年くらい前につぶれた気がする
もう少し前かも
0046nobodyさん2012/05/19(土) 02:33:20.31ID:???
オワコンだからねー
0047nobodyさん2012/05/19(土) 10:28:02.36ID:o1Jo2iU0
初心者的な質問で悪いんだけど
Zhen CRM
http://bakery.cakephp.org/articles/telerim/2012/04/13/zhen_crm_open-source_cakephp_crm_application
このオープンソース使用してホームページを作成して
販売するのはOK?
GNUライセンスとかMITライセンスとかも関係するの?

板違うかな?
0048nobodyさん2012/05/19(土) 11:34:56.04ID:???
MITライセンスだと販売・改変はOKだよ
0049nobodyさん2012/05/19(土) 15:18:26.07ID:MiaPSFRR
>>48 どうも乙です。
0050nobodyさん2012/05/19(土) 16:54:10.65ID:???
cakephpでシステム関係のファイルなどはドキュメントルートの外に起きたいんだけど
zend frameworkとかcodeigniterとかyiiみたいに個別にパスを設定して変更できないの?
0051nobodyさん2012/05/19(土) 18:18:21.47ID:???
>>50
できるよ。マニュアルの最初の方に書いてあるはず
0052nobodyさん2012/05/19(土) 22:45:43.88ID:???
>>50
それってindex.phpでいじるやつでそ?
APP_DIRとかROOTとかあるけど
pluginsとかvendorsの項目が見当たらないんだが
0053nobodyさん2012/05/19(土) 22:46:01.99ID:???
>>50じゃなくて>>51宛て
0054nobodyさん2012/05/20(日) 00:25:07.80ID:???
質問なら何をやりたいのか省略しないできちんと書いてや
pluginとかvendorsをどうしたいの?
0055nobodyさん2012/05/20(日) 10:21:18.74ID:???
>cakephpでシステム関係のファイルなどはドキュメントルートの外に起きたいんだけど
0056nobodyさん2012/05/20(日) 10:56:14.49ID:???
全部ドキュメントルート外において、wwwrootをドキュメントルートに指定しろ
そしてもう来るな
0057nobodyさん2012/05/20(日) 11:00:27.81ID:???
バカが質問をよく読まないで回答しようとするからこうなる
0058nobodyさん2012/05/20(日) 11:35:51.12ID:???
バカなのに死なないで生きているからこうなる
0059nobodyさん2012/05/20(日) 14:29:53.88ID:???
>>55
だからその「システム関係のファイル」ってなんだよ?
cakeのコアのことならマニュアルに書いてある通りだし、>>56の言う通りだ。

vendorsやプラグインも個別にどこにでも好きなところに置けるけど、
>>50 には一言も書いてねえし
0060nobodyさん2012/05/20(日) 19:10:25.50ID:FJzAEkIA
cakeってファットモデルはあまりやらないほうがいいの?
0061nobodyさん2012/05/20(日) 22:42:21.38ID:???
稼働中のシステムでDBのALTER TABLEをしてそれに合わせてソース更新した場合、前の状態がキャッシュされてて動かない
ことがしばしば起こるんだけど、自動でキャッシュ更新する方法ありませんか?
キャッシュはmemcachedを使っています
0062nobodyさん2012/05/21(月) 10:35:51.06ID:???
>>60
ロジックをコントローラでなくモデルに書くってことか?
個人的にはそうすべきだと思う。
0063602012/05/21(月) 20:21:34.67ID:???
>>62
$this->Model->find('all')
みたいなやつでもモデルに書くようにしてる?
0064nobodyさん2012/05/21(月) 21:42:06.73ID:???
ケースバイケースだな。
何度も使う場合は書くけど、そうでない場合はコントローラで済ます
0065602012/05/22(火) 01:03:15.16ID:???
>>64
ありがとう。

複雑なクエリや、他のコントローラーから呼ぶようなやつはファットモデルにするよ。
規約は守ってもフレームワークだからって型に縛られないようにするよ。
0066nobodyさん2012/05/22(火) 02:11:52.42ID:???
>>61
テーブルに変更が加えられたかどうかをチェックしてしまったらキャッシュしている意味がなくなるから原理的にそれは出来ないんじゃないかな
俺は手動で消してる
■ このスレッドは過去ログ倉庫に格納されています