1read 100read
2012年6月WebProg15: 【PHP】フレームワーク CakePHP 14ホール目【v2.1】 (251) TOP カテ一覧 スレ一覧 2ch元 削除依頼
中学生がPHPを習得するスレ (262)
Apache〜嗜みとして〜 Part3 (969)
PukiWikiスレ Part7 (404)
アプリケーションサーバって必要? (209)
PDFのWebページは糞 (701)
【荒らしお断り】 BBQを組み込んでる人【システム】 (402)

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


1 :12/05/01 〜 最終レス :12/07/05
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元 削除依頼
【PHP】フレームワーク CakePHP 14ホール目【v2.1】 (251)
PHP初心者勉強会やらんかね! (474)
七行プログラミング (447)
Google App Engine for Python 4アプ目 (850)
【Perl】掲示板を使ろう! (475)
オッフェ(=゚ω゚)ノ♪で1000目指すスレ in WebProg (730)
--log9.info------------------
【HONDA】 JADE 19台目 【CB250F】 (717)
【暖機】LA250・レブル・ナイトホーク・CD250U Part10【233cc】 (403)
バイクに乗り始めてわかったこと 15 (255)
【AF70】ジョルノ総合スレ【AF24、クレアも】 (535)
1BOX軽自動車トランポクラブ 部員2人目 (570)
(g´-`s)*SUZUKI GS50&GAGのスレ009台目*(G´∀`G) (945)
【大雪】原付でツーリング24【冬季】 (279)
【そして】スズキジェンマ12【伝説へ】 (350)
CT110/CT250S/CTX200等CT/CTX総合スレ 12台目 (791)
GSX-R750/600 Part31 (794)
平日休みで孤独なライダー 2 (410)
【YAMAHA】FJR1300A/AS【ツアラー】 (655)
【600】大型ホーネット総合【900】 (555)
《今更》YZF1000R《ツアラーで》 (856)
お前らコミネを馬鹿にしてるだろ? (330)
【GSX1100S】大きなカタナのスレ 25【GSX750S】 (974)
--log55.com------------------
【社会】電車迷惑行為 リュック3位に
【教育】『AI vs.教科書が読めない子どもたち』が示す、「読解力が低い人」は「認知できる世界の解像度が低い」
【小売】セブン、年末で契約解除を通告 時短営業で対立の店主に
日本ペイントホールディングスグループ主催 国際建築コンペティション「Asia Young Designer Award」2019年度受賞者を発表
【ホテル】 「淡島ホテル」破産手続き 地裁沼津支部開始決定、負債数百億円 2019/12/21
【経済】冬のボーナス「過去最高」でも、衰退途上国・日本の未来はヤバい理由
【実業家】孫正義、7000億円の赤字にめげない「本音」
【企業】メルカリ山田社長、大手の傘下に「入らない」