【PHP】フレームワーク CakePHP 14ホール目【v2.1】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/05/01(火) 16:58:44.53ID:fVBzm1/ACakePHPから派生した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:???0004nobodyさん
2012/05/02(水) 17:16:24.15ID:???それにしても2.1.1でしかも2.2.0のベータって・・・早すぎだろw
0005nobodyさん
2012/05/02(水) 17:30:40.73ID:???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ファンクションに飛ぶようになってます。
どなたか原因分かりますでしょうか?
0007nobodyさん
2012/05/03(木) 18:56:39.25ID:2xcwqeF00008nobodyさん
2012/05/03(木) 23:43:44.23ID:???簡単ではないけど面倒ってほどじゃないよ。
FlashBuilder(FlexBuilder?)でDBアクセスする方法がそのまま使えるんで、そのあたり調べるといいと思う。
体験版でandroidとかiPhoneのアプリ作り始めてサーバのDBアクセスのサービスを追加するとウィザードでコードを追加してくれるんで、必要な部分だけ流用してもいいかも。
(読み出しだけじゃなくて、追加・更新あたりのコードが全部追加されるので)
倫理的にはやり方だけ理解して自分で作った方が良いと思うけどw
まぁどうしてもcakeで作るなら結局作り直すことになるけどね
0009nobodyさん
2012/05/05(土) 19:37:07.62ID:???app/js/plugin_name/file_name.ext
を解釈するから、そもそも直下へのアクセス方法がない??
あばば
0010↑
2012/05/05(土) 19:44:03.73ID:???0011nobodyさん
2012/05/05(土) 20:13:26.25ID:???そりゃそうか。そうなのか?まぁ仕方ないや。
0012nobodyさん
2012/05/07(月) 04:57:19.77ID:???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:???'notempty' => array(
'rule' => array('notempty'),
),
'required' => array(
'required' => true,
'on' => 'create',
),
),
これでよさげ。これなら許せる。
0014nobodyさん
2012/05/07(月) 20:37:16.11ID:???配列が入れ子になってるのが悪い。
0015nobodyさん
2012/05/09(水) 22:39:47.65ID:rDWus5fC文字化けしてしまいます。
php.iniではUTF8、<?phpの前に余計なものもはいってない状態ですが、
CakePHPでGDを使う際には何か注意すべき点はあるのでしょうか
0016nobodyさん
2012/05/10(木) 14:58:57.25ID:???1.3で作ったシステムがあるんだけどこれからも使える?
0019nobodyさん
2012/05/10(木) 18:52:33.46ID:???0020nobodyさん
2012/05/10(木) 19:10:29.64ID:???0021nobodyさん
2012/05/10(木) 19:11:07.26ID:???0022nobodyさん
2012/05/10(木) 22:59:50.95ID:???0023nobodyさん
2012/05/10(木) 23:19:54.66ID:eaLKfNi7smartRollover.js使って画像を_onと_offできりわけたいです。
だれかご教授くださいお願いします。
0024nobodyさん
2012/05/11(金) 03:36:35.15ID:???0025nobodyさん
2012/05/11(金) 16:05:50.69ID:???0026nobodyさん
2012/05/13(日) 22:01:55.09ID:???現在、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:???0028nobodyさん
2012/05/14(月) 00:40:01.29ID:???0029nobodyさん
2012/05/14(月) 00:42:24.81ID:???0031nobodyさん
2012/05/14(月) 02:30:08.93ID:???0032nobodyさん
2012/05/14(月) 07:19:59.81ID:???0033nobodyさん
2012/05/14(月) 08:45:36.04ID:???0034nobodyさん
2012/05/14(月) 09:36:14.55ID:???ってcookbookに書かれてるよ。
0036nobodyさん
2012/05/14(月) 13:44:42.79ID:???0037nobodyさん
2012/05/14(月) 17:04:15.72ID:???それぞれリンクが無くてもテキストとして表示されます。
これをリンクがない場合はテキスト自体表示しないようにするには
どうすればいいのでしょうか?
0038nobodyさん
2012/05/14(月) 19:06:42.56ID:???DBのテーブル構成を、モデルから管理する方法で既存のもの何かないでしょうか
モデルのコンストラクタで、CREATE TABLE IF NOT EXISTする
カラムの追加なんかもソースに記述し、ソースに合った最新の状態になるようにALTER TABLEする
もちろん、不要であれば何もしない
こういうのがあれば理想ですが、自分で作るしかない?
0039nobodyさん
2012/05/14(月) 19:33:49.99ID:???そんな気軽にてーぶるいじらないでよ
0041nobodyさん
2012/05/15(火) 11:38:58.08ID:???0042nobodyさん
2012/05/17(木) 22:55:40.27ID:JCS/4U80hoge、foo、barってテーブルから連結したデータを取るとき
CASEとかCOUNTした値を
バーチャルフィールドで取得するとき
Hogeの配列では取得できるんだけど
Fooの配列にいれることってできる?
バージョン2.1.2です。
004342
2012/05/18(金) 01:47:39.34ID:???$this->virtualFieldsをモデルで読んでたけど
コントローラーから$this->Foo->virtualFields
にしたらいけました。
0046nobodyさん
2012/05/19(土) 02:33:20.31ID:???0047nobodyさん
2012/05/19(土) 10:28:02.36ID:o1Jo2iU0Zhen 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:???0049nobodyさん
2012/05/19(土) 15:18:26.07ID:MiaPSFRR0050nobodyさん
2012/05/19(土) 16:54:10.65ID:???zend frameworkとかcodeigniterとかyiiみたいに個別にパスを設定して変更できないの?
0052nobodyさん
2012/05/19(土) 22:45:43.88ID:???それってindex.phpでいじるやつでそ?
APP_DIRとかROOTとかあるけど
pluginsとかvendorsの項目が見当たらないんだが
0054nobodyさん
2012/05/20(日) 00:25:07.80ID:???pluginとかvendorsをどうしたいの?
0055nobodyさん
2012/05/20(日) 10:21:18.74ID:???0056nobodyさん
2012/05/20(日) 10:56:14.49ID:???そしてもう来るな
0057nobodyさん
2012/05/20(日) 11:00:27.81ID:???0058nobodyさん
2012/05/20(日) 11:35:51.12ID:???0059nobodyさん
2012/05/20(日) 14:29:53.88ID:???だからその「システム関係のファイル」ってなんだよ?
cakeのコアのことならマニュアルに書いてある通りだし、>>56の言う通りだ。
vendorsやプラグインも個別にどこにでも好きなところに置けるけど、
>>50 には一言も書いてねえし
0060nobodyさん
2012/05/20(日) 19:10:25.50ID:FJzAEkIA0061nobodyさん
2012/05/20(日) 22:42:21.38ID:???ことがしばしば起こるんだけど、自動でキャッシュ更新する方法ありませんか?
キャッシュはmemcachedを使っています
0064nobodyさん
2012/05/21(月) 21:42:06.73ID:???何度も使う場合は書くけど、そうでない場合はコントローラで済ます
006560
2012/05/22(火) 01:03:15.16ID:???ありがとう。
複雑なクエリや、他のコントローラーから呼ぶようなやつはファットモデルにするよ。
規約は守ってもフレームワークだからって型に縛られないようにするよ。
0066nobodyさん
2012/05/22(火) 02:11:52.42ID:???テーブルに変更が加えられたかどうかをチェックしてしまったらキャッシュしている意味がなくなるから原理的にそれは出来ないんじゃないかな
俺は手動で消してる
0067nobodyさん
2012/05/22(火) 02:26:56.79ID:???一定期間毎にキャッシュを作っていると思うけど、その形で良いと思う
0068nobodyさん
2012/05/22(火) 05:21:12.26ID:???手動でどうやって消してますか?
全部消せば簡単だけどそうすると今アクセス中の客のセッションデータが吹っ飛ぶ
更新したいキャッシュだけ消す簡単な方法あります?というかどのキャッシュを消せば良いのか
0069nobodyさん
2012/05/22(火) 10:21:13.32ID:???0070nobodyさん
2012/05/22(火) 12:26:33.17ID:mOE2ZVav0071nobodyさん
2012/05/22(火) 12:58:54.36ID:???2.2で ModelValidatorを使う
http://book.cakephp.org/2.0/en/models/data-validation.html
もしくはいくつかバリデーションルールを作っておいて、コントローラーでvalidateのフィールドを指定する
http://book.cakephp.org/2.0/en/models/data-validation/validating-data-from-the-controller.html
て感じかしらん
007268
2012/05/22(火) 14:05:53.81ID:???なんか見れるページと、見れないページがある、どうなってんだ
とりあえず助言ありがとう
0073nobodyさん
2012/05/22(火) 14:21:04.35ID:???仕方ないソース見るか…
0074nobodyさん
2012/05/23(水) 18:18:16.24ID:???コントローラ20個、モデル15個ぐらいの規模なんだが
パッと手直しするだけで移行できる?
0075nobodyさん
2012/05/23(水) 18:26:46.04ID:???自分だけで使うなら別だが、仕事だと1.3で良いと思うよ
0076nobodyさん
2012/05/23(水) 22:27:57.51ID:???でも新規サイトは2.xで作ってるから古いサイトのメンテナンスするときに混乱する
でも移行したくない
0077nobodyさん
2012/05/24(木) 17:42:05.60ID:???例えば$tmp = "5,2,3,4,1"と言う並びを記憶した文字列があったとします。
それを$id_order = explode(',",$tmp);として、
$this->Hoge->find('all',array('conditions'=>array('id'=>$id_order)));
として読み出します。読み出し自体は5件、ちゃんと拾ってきます。
ただこの場合、そのままだとid順に並び変わってしまうんです。
(この場合だと 1 2 3 4 5 に並び変わってしまう)
そのまま5,2,3,4,1の順を保持するようには出来ないのでしょうか?
queryで id IN (5,4,3,2,1)も試してみたのですが、やはりID順で並び変わってしまいます。
Hogeそのものにorder用のフィールドを準備して並び替えれば当然出来るんですが・・・
今は配列を全部読んで新たに配列を作成するという力技でやっているのでうまい方法は無いかと思いまして・・
Cakephpとは関係ない様な気もしますが参考意見でもあれば宜しくお願いします。
0078nobodyさん
2012/05/24(木) 18:35:37.61ID:???SQLはorderを指定しないと読み出し順は保証されないよ
たまたま1,2,3,4,5になるかもしれないし、そうでないかもしれない。
だからちゃんとfindのオプションでorderを指定すべき
0079nobodyさん
2012/05/25(金) 19:14:24.25ID:???Componentから呼び出した、他のComponentのinitializeが、
実行されないんだけど、実行されるようにする方法はないですか?
0080nobodyさん
2012/05/25(金) 19:20:46.92ID:/BxfQcHOXAMPPを起動させて、webrootフォルダの中のindex.phpにログインは出来るし、
index.phpを他に移動させて前の場所のアドレスを入力すると見えなくなるのですが
(http://localhost/cake/sample/index.php)
webrootフォルダの中にindex.htmlやindex2.php等を作って、
http://localhost/cake/sample/index2.php をブラウザで表示させようとしても表示できません。
これはなぜなのでしょうか?教えていただけると助かります。
008280
2012/05/26(土) 00:55:32.99ID:???レスありがとうございます。
エラーログで分からなかったので、XMAPPもCAKEPHPもインストールし直したら解決しました。
0084nobodyさん
2012/05/26(土) 16:30:05.31ID:???0086nobodyさん
2012/05/27(日) 00:59:00.50ID:???おっしゃるとおりです。
あれから調べた所、MySQLである限りはorder by fieldが使用できるので、
http://cakebaker.42dh.com/2008/06/10/order-by-field/
の形でやればいちいち取得後に並び替え処理しなくても
最初から指定の順で並び替えた状態で取得できそうです。
ありがとうございました。
0087nobodyさん
2012/05/28(月) 15:42:04.62ID:???2.1 です。
0088nobodyさん
2012/05/28(月) 21:49:33.64ID:???0089nobodyさん
2012/05/30(水) 00:22:24.86ID:???<?=$form->create(null,array('type'=>'post','action'=>'.')) ?>
等のように、
<?=
から始まるコードがあります。これをこのまま本の通りに入力するとエラーになってしまうのですが
これは、
<?php echo
と同じ意味なのでしょうか?
「<?php echo 」と書くと長いから「<?=」と書いているけど、コードを書くときは「<?php echo」に直してね
っという事なのか
私の書き方や設定がおかしいから「<?=」でエラーが出るだけで、何かをすれば「<?=」でもエラーが出ないのか?
教えていただけると助かります。よろしくお願いします。
0090nobodyさん
2012/05/30(水) 01:40:42.57ID:???マニュアルに書いてないことを知るには、ソースを読めですか?
0091nobodyさん
2012/05/30(水) 02:22:35.21ID:???cakeは関係ない。php自体のshort_open_tag設定
>>90
生ソースの前にAPI一覧を見るといいよ
こんなメソッドあったのか。なんてのも結構あるし。
それで使い方気になったらソース見ていく。って感じで俺はずいぶん勉強になったよ
0092nobodyさん
2012/05/30(水) 14:54:21.85ID:???$this->User->validates(array('fieldList' => array('email', 'password'))
こういう方法もあるんだね。
これでよかった。
0093nobodyさん
2012/05/30(水) 15:08:29.89ID:???0094nobodyさん
2012/06/01(金) 10:14:16.75ID:???hasMany tableをsaveAllした際のvalidate errorだと、formに値が自動的に戻りません。
saveAllのvalidate errorの場合は手動でformに入力値を展開するものですか?
流儀があれば教えて頂きたいです。
0095nobodyさん
2012/06/03(日) 01:26:40.50ID:???コマンドプロンプトでパスを設定後、
cake bake でデータベース設定しようとすると
最後にエラーになってしまいます。
Look okay? (y/n)
[y] > y
Do you wish to add another database configuration?
[n] > n
Creating file c:\xampp\htdocs\cake\baking\myapp\config\database.php
Wrote `c:\xampp\htdocs\cake\baking\myapp\config\database.php`
どうしたら直るでしょうか?教えていただけると助かります。
よろしくお願いいたします。
0098nobodyさん
2012/06/03(日) 13:48:18.75ID:???009995
2012/06/03(日) 15:48:10.86ID:???Creating file c:\xampp\htdocs\cake\baking\myapp\config\database.php
Wrote `c:\xampp\htdocs\cake\baking\myapp\config\database.php`
ではなく
Fatal error: Class 'DATABASE_CONFIG' not found in C:\xampp\htdocs\cake\baking\ca
ke\console\libs\tasks\db_config.php on line 260
でした。
0100nobodyさん
2012/06/03(日) 16:18:04.08ID:???0101nobodyさん
2012/06/04(月) 11:18:57.14ID:???$form->input()
でしかエラーを自動で表示してくれないって知ってた?
$form->radio()
じゃ表示してくれない。
今初めて知った・・・めちゃハマってたわ・・・くそが
バーションは1.3
■ このスレッドは過去ログ倉庫に格納されています