1read 100read
2012年09月WebProg8: 【PHP】フレームワーク CakePHP 14ホール目【v2.1】 (716) TOP カテ一覧 スレ一覧 2ch元 削除依頼
GoogleWebToolkit[GWT]について語ろう (224)
Rubyにはプログラミング言語以上の価値があると思う (542)
php5これでCGIはphp1色の時代へ (845)
GoogleWebToolkit[GWT]について語ろう (224)
WebProg板の名無しさんを決めよう (444)
ショッピングカート総合スレ (416)

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


1 :2012/05/01 〜 最終レス :2012/11/01
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/

2 :
落ちてたっぽいから立てたけど・・・大丈夫かな

3 :
>>1-2
乙!俺は感謝してるぜ

4 :
乙!いきなりDAT落ちしててびっくりしたから・・・
それにしても2.1.1でしかも2.2.0のベータって・・・早すぎだろw

5 :
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ファンクションに飛ぶようになってます。
どなたか原因分かりますでしょうか?

6 :
>>1おつ

7 :
cakephpで作ったDBの中身をiphoneアプリからhttpで呼び出すと色々とめんどい?

8 :
>>7
簡単ではないけど面倒ってほどじゃないよ。
FlashBuilder(FlexBuilder?)でDBアクセスする方法がそのまま使えるんで、そのあたり調べるといいと思う。
体験版でandroidとかiPhoneのアプリ作り始めてサーバのDBアクセスのサービスを追加するとウィザードでコードを追加してくれるんで、必要な部分だけ流用してもいいかも。
(読み出しだけじゃなくて、追加・更新あたりのコードが全部追加されるので)
倫理的にはやり方だけ理解して自分で作った方が良いと思うけどw
まぁどうしてもcakeで作るなら結局作り直すことになるけどね

9 :
プラグインのwebroot直下にPHPファイルをおいて直接アクセスさせたいんだけど無理なのかな?
app/js/plugin_name/file_name.ext
を解釈するから、そもそも直下へのアクセス方法がない??
あばば

10 :
あ、勘違い臭い。さあせん

11 :
アクセスはできるけどPHPとして動かしてはくれないのか
そりゃそうか。そうなのか?まぁ仕方ないや。

12 :
バリデーションルールって、そもそも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
),
),
こうしろってこと?
相当めんどくさいんだけど

13 :
'field' => array(
 'notempty' => array(
  'rule' => array('notempty'),
 ),
 'required' => array(
  'required' => true,
  'on' => 'create',
 ),
),
これでよさげ。これなら許せる。

14 :
codeigniterと比較するとバリデーションの可読性が悪いな。
配列が入れ子になってるのが悪い。

15 :
CakePHPでGDを使いたいんだけど、viewにそのままGDのコード(色つきの長方形を描くような)
文字化けしてしまいます。
php.iniではUTF8、<?phpの前に余計なものもはいってない状態ですが、
CakePHPでGDを使う際には何か注意すべき点はあるのでしょうか

16 :
今後の案件はじめるなら2のほうがいいの?
1.3で作ったシステムがあるんだけどこれからも使える?

17 :
>>13だめだったrule設定がないと確実にそのバリデーションがエラーになる。

18 :
>>16
「何で」作るかじゃなくて「何を」作るかだと思います。

19 :
はぁ?あれは1.3で作ったほうがいいがこれは2で作った方がいいとかあるの?

20 :
ない

21 :
強いて言えば何処の命で作るか。はあるかも。

22 :
参考になるかわからないけど、以前からCakePHPを採用している会社は新規案件も1.3だったけど、うちは1.xの実績ないから2.x採用してる

23 :
cakephp1.3でボタンにロールオーバーさせたいんだけどうまくいかない。
smartRollover.js使って画像を_onと_offできりわけたいです。
だれかご教授くださいお願いします。

24 :
cake関係ないので嫌です

25 :
cssでやれよ

26 :
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);

27 :
主キーが2つ???

28 :
ありえない

29 :
完全に設計が破綻しています。本当にあry

30 :
>>27
複合キーです。

31 :
複合キー cakephp で検索

32 :
このスレの奴は複合キーを知らないから聞いても無駄だな

33 :
主キーを複合キーにするとか(笑)

34 :
CakePHP は複合主キーをサポートしません。
ってcookbookに書かれてるよ。

35 :
>>34
ありがとうございます。
諦めて delete / insert する事にします。

36 :
SQL直書きすればいいだろ

37 :
ビューの$paginator->prev('前へ')、$paginator->next('次へ')で
それぞれリンクが無くてもテキストとして表示されます。
これをリンクがない場合はテキスト自体表示しないようにするには
どうすればいいのでしょうか?

38 :
CakePHP+MySQLのシステムで、
DBのテーブル構成を、モデルから管理する方法で既存のもの何かないでしょうか
モデルのコンストラクタで、CREATE TABLE IF NOT EXISTする
カラムの追加なんかもソースに記述し、ソースに合った最新の状態になるようにALTER TABLEする
もちろん、不要であれば何もしない
こういうのがあれば理想ですが、自分で作るしかない?

39 :
DB設計見なおすべき。
そんな気軽にてーぶるいじらないでよ

40 :
>>38
ぐぐればいいじゃない

41 :
せめてcake shemaでも使うようにすれば?

42 :
Hogeモデルから
hoge、foo、barってテーブルから連結したデータを取るとき
CASEとかCOUNTした値を
バーチャルフィールドで取得するとき
Hogeの配列では取得できるんだけど
Fooの配列にいれることってできる?
バージョン2.1.2です。

43 :
ゴメソ。自己解決しました。
$this->virtualFieldsをモデルで読んでたけど
コントローラーから$this->Foo->virtualFields
にしたらいけました。

44 :
>>1
cakeqs.orgのリンク消えてるけど?

45 :
>>44
1年くらい前につぶれた気がする
もう少し前かも

46 :
オワコンだからねー

47 :
初心者的な質問で悪いんだけど
Zhen CRM
http://bakery.cakephp.org/articles/telerim/2012/04/13/zhen_crm_open-source_cakephp_crm_application
このオープンソース使用してホームページを作成して
販売するのはOK?
GNUライセンスとかMITライセンスとかも関係するの?
板違うかな?

48 :
MITライセンスだと販売・改変はOKだよ

49 :
>>48 どうも乙です。

50 :
cakephpでシステム関係のファイルなどはドキュメントルートの外に起きたいんだけど
zend frameworkとかcodeigniterとかyiiみたいに個別にパスを設定して変更できないの?

51 :
>>50
できるよ。マニュアルの最初の方に書いてあるはず

52 :
>>50
それってindex.phpでいじるやつでそ?
APP_DIRとかROOTとかあるけど
pluginsとかvendorsの項目が見当たらないんだが

53 :
>>50じゃなくて>>51宛て

54 :
質問なら何をやりたいのか省略しないできちんと書いてや
pluginとかvendorsをどうしたいの?

55 :
>cakephpでシステム関係のファイルなどはドキュメントルートの外に起きたいんだけど

56 :
全部ドキュメントルート外において、wwwrootをドキュメントルートに指定しろ
そしてもう来るな

57 :
バカが質問をよく読まないで回答しようとするからこうなる

58 :
バカなのに死なないで生きているからこうなる

59 :
>>55
だからその「システム関係のファイル」ってなんだよ?
cakeのコアのことならマニュアルに書いてある通りだし、>>56の言う通りだ。
vendorsやプラグインも個別にどこにでも好きなところに置けるけど、
>>50 には一言も書いてねえし

60 :
cakeってファットモデルはあまりやらないほうがいいの?

61 :
稼働中のシステムでDBのALTER TABLEをしてそれに合わせてソース更新した場合、前の状態がキャッシュされてて動かない
ことがしばしば起こるんだけど、自動でキャッシュ更新する方法ありませんか?
キャッシュはmemcachedを使っています

62 :
>>60
ロジックをコントローラでなくモデルに書くってことか?
個人的にはそうすべきだと思う。

63 :
>>62
$this->Model->find('all')
みたいなやつでもモデルに書くようにしてる?

64 :
ケースバイケースだな。
何度も使う場合は書くけど、そうでない場合はコントローラで済ます

65 :
>>64
ありがとう。
複雑なクエリや、他のコントローラーから呼ぶようなやつはファットモデルにするよ。
規約は守ってもフレームワークだからって型に縛られないようにするよ。

66 :
>>61
テーブルに変更が加えられたかどうかをチェックしてしまったらキャッシュしている意味がなくなるから原理的にそれは出来ないんじゃないかな
俺は手動で消してる

67 :
ランキングやトピックスは随時更新じゃなくて、一定期間で更新だよな
一定期間毎にキャッシュを作っていると思うけど、その形で良いと思う

68 :
>>66
手動でどうやって消してますか?
全部消せば簡単だけどそうすると今アクセス中の客のセッションデータが吹っ飛ぶ
更新したいキャッシュだけ消す簡単な方法あります?というかどのキャッシュを消せば良いのか

69 :
それはマニュアル見ろとしか言えないな

70 :
フォームによってモデルの必須条件を適宜変えたいんだけど、どうしたらいいんだろう

71 :
>>70
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
て感じかしらん

72 :
んー、なんか今Cakeのマニュアル見れないなあ
なんか見れるページと、見れないページがある、どうなってんだ
とりあえず助言ありがとう

73 :
しかもDB構造のキャッシュについては載ってなさそうだなあ
仕方ないソース見るか…

74 :
1.3で開発してるアプリケーションを2.xに変更しようと思ってるんだけど大変かな?
コントローラ20個、モデル15個ぐらいの規模なんだが
パッと手直しするだけで移行できる?

75 :
もう少し様子見た方が良いと思うけどな。今は情報少ないだろ
自分だけで使うなら別だが、仕事だと1.3で良いと思うよ

76 :
コントローラー3個のサイトでさえ移行めんどくさい
でも新規サイトは2.xで作ってるから古いサイトのメンテナンスするときに混乱する
でも移行したくない

77 :
2.1を使用中です。
例えば$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とは関係ない様な気もしますが参考意見でもあれば宜しくお願いします。

78 :
>>77
SQLはorderを指定しないと読み出し順は保証されないよ
たまたま1,2,3,4,5になるかもしれないし、そうでないかもしれない。
だからちゃんとfindのオプションでorderを指定すべき

79 :
2.0で組んでます。
Componentから呼び出した、他のComponentのinitializeが、
実行されないんだけど、実行されるようにする方法はないですか?

80 :
勉強しはじめの者です。
XAMPPを起動させて、webrootフォルダの中のindex.phpにログインは出来るし、
index.phpを他に移動させて前の場所のアドレスを入力すると見えなくなるのですが
http://localhost/cake/sample/index.php
webrootフォルダの中にindex.htmlやindex2.php等を作って、
http://localhost/cake/sample/index2.php をブラウザで表示させようとしても表示できません。
これはなぜなのでしょうか?教えていただけると助かります。

81 :
>>80
普通は表示できると思うんだけど。
Apacheのエラーログ見たら?

82 :
>>81
レスありがとうございます。
エラーログで分からなかったので、XMAPPもCAKEPHPもインストールし直したら解決しました。

83 :
>>70-71
これを1.3で実現したいんですけど、何か方法はありますか?

84 :
id以外のPrimaryKeyを指定できるのは、2系だけですか?

85 :
>>84
1系でも出来る

86 :
>>78
おっしゃるとおりです。
あれから調べた所、MySQLである限りはorder by fieldが使用できるので、
http://cakebaker.42dh.com/2008/06/10/order-by-field/
の形でやればいちいち取得後に並び替え処理しなくても
最初から指定の順で並び替えた状態で取得できそうです。
ありがとうございました。

87 :
JsonView だと Forbidden になる現象遭遇した人いませんか?
2.1 です。

88 :
Apache の MIME type が原因でした。

89 :
本を見て勉強中なのですが
<?=$form->create(null,array('type'=>'post','action'=>'.')) ?>
等のように、
<?=
から始まるコードがあります。これをこのまま本の通りに入力するとエラーになってしまうのですが
これは、
<?php echo
と同じ意味なのでしょうか?
「<?php echo 」と書くと長いから「<?=」と書いているけど、コードを書くときは「<?php echo」に直してね
っという事なのか
私の書き方や設定がおかしいから「<?=」でエラーが出るだけで、何かをすれば「<?=」でもエラーが出ないのか?
教えていただけると助かります。よろしくお願いします。

90 :
流れ関係ない質問ですが
マニュアルに書いてないことを知るには、ソースを読めですか?

91 :
>>89
cakeは関係ない。php自体のshort_open_tag設定
>>90
生ソースの前にAPI一覧を見るといいよ
こんなメソッドあったのか。なんてのも結構あるし。
それで使い方気になったらソース見ていく。って感じで俺はずいぶん勉強になったよ

92 :
バリデーションの切り替えの質問したものだけど、
$this->User->validates(array('fieldList' => array('email', 'password'))
こういう方法もあるんだね。
これでよかった。

93 :
ちなみに1.3で日本語のブックには載ってない方法だった

94 :
saveした際にvalidate errorだとviewのformに値が自動的に戻ります。
hasMany tableをsaveAllした際のvalidate errorだと、formに値が自動的に戻りません。
saveAllのvalidate errorの場合は手動でformに入力値を展開するものですか?
流儀があれば教えて頂きたいです。

95 :
bakeというものを使おうとしたのですが
コマンドプロンプトでパスを設定後、
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`
どうしたら直るでしょうか?教えていただけると助かります。
よろしくお願いいたします。

96 :
>>95
エラーはどこ?

97 :
>>96
95の頭

98 :
あ?エラーが出てるならエラーメッセージを貼れつってんだよ

99 :
失礼しました。
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
でした。

100read 1read
1read 100read
TOP カテ一覧 スレ一覧 2ch元 削除依頼
【管理】Trac使ってみよう【してみよう】 (259)
CGIで運営される2ちゃんねる (222)
PostgreSQL 2テーブル目 (670)
【SG】fusianasanの仕様を考えてみるスレ【SG】 (255)
★三 【 スクリプト改造工房 PART 9 】 ★三 (699)
初心的な質問なのですが・・・・ (207)
--log9.info------------------
【J無し】中国製特定中電力無線機【Part 3】 (727)
10mFM(29MHzFM)って、どうよ。 (547)
【GPS内蔵】KENWOOD TH-D72【万を期して発表】 (537)
+7077/88/96の世界+ (678)
愛知のアマチュア無線家よ集まれ (756)
【KL1】リニア・リニア・リニア 【10本目】 (423)
//  無線 と 英語  // 2限目 (782)
デジタル簡易無線 part4 (769)
札幌消防から各局 3局目 (505)
ロシアの謎のブザー音が止まったらしい (352)
【ぶたまんじゅー】 6mの変な局 【PART.13】 (909)
上級ハム受験スレ!1・2アマ受験情報 part43 (446)
FT-857 Part3 (359)
**6mFM(51MHz)ってどうよ!** 2期目 (377)
▼ ΔLOOPとBCL-LOOPを熱く語るスレ LOOP4 ▲ (1001)
【ATU】オートアンテナチューナーのスレ 5台目 (517)
--log55.com------------------
【GSOMIA報道】韓国「日韓両政府が午後6時同時発表すると合意していたのに、日本政府はマスコミに情報リークした。遺憾の意」
【粉飾決算倒産が急増】景気減速と人手不足で隠しきれず ★2
【LIVE】38年ぶりの来日・東京ドームにて教皇ミサ 教皇への国連報告書を添えて
【Yahoo投票】 #安倍政権 支持しない75%👍工作が間に合わない模様 ★4
1回5000円の出動手当が欲しかったので消防団員さんが放火・奄美龍郷
【セコムでドロボー】セコム元社員を窃盗疑いで再逮捕 「十数件やった」、兵庫県警
【無双裁判】2人死亡事故で、5年前にも運転中意識失い自損事故を起こし、「今回も意識が薄れていた可能性が否定できない」と無罪主張
【GSOMIA報道】韓国「日韓両政府が午後6時同時発表すると合意していたのに、日本政府はマスコミに情報リークした。遺憾の意」★2