トップページ⇒php
985コメント290KB

【PHP】フレームワーク CakePHP 5ホール目【v1.2】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2008/12/19(金) 15:52:19ID:ylogT+7c
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
cookbook(マニュアル)
http://book.cakephp.org/ja
the Bakery
http://bakery.cakephp.org/

■日本語フォーラム
http://cakephp.jp/


■過去スレ
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1213892680/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0132nobodyさん2008/12/26(金) 19:14:18ID:???
debugモードじゃね
0133nobodyさん2008/12/26(金) 19:19:08ID:???
開発効率の向上以上に、メンテナンス効率の向上を実感することが多い
過去製作したコードを見たとき、「何でこんなことしてるんだっけ?」っていうのが激減した
0134nobodyさん2008/12/26(金) 19:50:29ID:???
1.2stableのbakeって複数プロジェクト前提みたいになったけど、どこにプロジェクト作るのがいいんだろ?
cakeの一番上のディレクトリに、/appと並ぶ形で作ると管理しやすいかな。
PDTとかで管理する上でも。
01351342008/12/26(金) 22:09:57ID:???
結局楽するために今までどおりappの中に作る事にした
0136nobodyさん2008/12/26(金) 22:30:57ID:???
複数プロジェクトってどうやるんですかね?
0137nobodyさん2008/12/26(金) 22:36:04ID:???
複数プロジェクトとうか、コア(cakeディレクトリ)の共有だろ?
マニュアルに書いてある。
http://book.cakephp.org/ja/view/35/
0138nobodyさん2008/12/26(金) 22:41:30ID:???
コミュニティのレベルも低いし
だめっぽくねcake
0139nobodyさん2008/12/26(金) 22:55:42ID:???
とくにダメっぽいところ感じないんだが
0140nobodyさん2008/12/27(土) 01:25:44ID:???
>>136
bakeで好きなところにプロジェクトを吐けるよ
0141nobodyさん2008/12/27(土) 03:36:46ID:???
http://book.cakephp.org/ja/view/35/
とかIE7でもおかしいし、firefoxだともっとやばい
なんとならんの?
0142nobodyさん2008/12/27(土) 08:43:14ID:???
CakePHPの新しい本(英語だけど)
Practical CakePHP Projects 400ページ 3,963円 08/12/8発行
http://www.amazon.co.jp/Practical-CakePHP-Projects/dp/143021578X/ref=tag_dpp_lp_edpp_img_in
どうよ?

(参考)半年前に発売されている姉妹書
Beginning CakePHP: From Novice to Professional 344ページ 3,963円 08/7/21発行
http://www.amazon.co.jp/Beginning-CakePHP-Novice-Professional/dp/1430209771/ref=tag_dpp_lp_edpp_img_in
0143nobodyさん2008/12/27(土) 12:39:56ID:???
>>142
4000円とかあほくさー

ページあたり10円かよ
0144nobodyさん2008/12/27(土) 13:29:46ID:???
「Terrible Examples, Poorly Written Book...」って言われてる。
0145nobodyさん2008/12/27(土) 13:52:50ID:???
このシリーズって日本で言うと「できる」シリーズみたいなもんだろ?
0146nobodyさん2008/12/27(土) 15:59:16ID:???
できるシリーズは明らかに超初心者向けな写真メインの構成なだけで
値段も倍くらい違うし一緒にするのはかわいそう
0147nobodyさん2008/12/27(土) 18:29:26ID:???
早速CakePHP 1.2.0.7962-Stableをダウンロードし、CakePHP1.2を始めようとしたら
http://cakeforge.org/frs/?group_id=23&release_id=433
app/config/の中に、database.php.defaultファイルが見当たらない。
探し方が悪いのか?本家が忘れ物したのかな?
みなさんのところdatabase.php.defaultファイルあります?
0148nobodyさん2008/12/27(土) 18:33:33ID:???
>>147です。
database.php.defaultありました。スマソ
0149nobodyさん2008/12/28(日) 18:51:53ID:???
聞きたいことがある。

Model::save() で、バリデーションエラーではなく、DBシステムエラーが起こっ
た場合には、同様に戻り値は false になるんだろうか?

もしそうなら、バリデーションの場合とシステムエラーの場合とで、戻り値が
falseの時の処理を分けなければいけないと思うんだけど、どうしたらいいんだろ?

1. save()の前にvalidate()を実行して分岐する。
2. save()のあとにinvalidFields()を実行して分岐する。
みんなはどうしてる?
0150nobodyさん2008/12/28(日) 20:13:58ID:???
>>149
Model::onError()
0151nobodyさん2008/12/28(日) 20:41:33ID:???
>>150
うわー、これ知らなかった!
なんだ、DBアクセスの箇所ごとにエラー処理する必要はなかったんだ。
ありがとう。
0152nobodyさん2008/12/28(日) 22:11:07ID:???
DBエラーって、onError()イベントハンドラのコール以外で知ることはできない?
うちの場合ちょっと事情があって、onError()関数でを上書きできないので。
0153nobodyさん2008/12/28(日) 22:33:37ID:???
クラスDboSourceのソースを見たら、Model::onError()が呼ばれるときは、
Model::save()の戻り値はやっぱり false だった。
save のあとで invalidFieldsがあるかどうかで分岐すればよさそう。
0154nobodyさん2008/12/29(月) 03:21:56ID:???
>>152
適当にDboを継承してonErrorが呼ばれてる部分を実装すればいいのでは?
やりたくないけど。

>>153
DB側がエラーになってる時点で、saveも糞もないと思う。
0155nobodyさん2008/12/29(月) 10:08:14ID:???
>>154
>>153は、controllerでどう書くかを言ってるんだろ
0156nobodyさん2008/12/29(月) 10:43:26ID:???
>>152
まずはどんな事情かを説明しろ
0157nobodyさん2008/12/29(月) 13:36:03ID:???
「CakePHP徹底入門」の正誤情報掲載してくれ〜
http://seshop.com/book/errata/
08年9月発売で、発売から4ヵ月も経っているのに、まだ正誤情報掲載してないぞ〜
俺は、Ajaxの項のp.178のリスト5.5が全然違うのがわからず、メチャ手間取ったぞ〜
CDのLIST5-5も全然違うじゃねーか。ダブルパンチだ。
早く正誤情報掲載してくれ〜
0158nobodyさん2008/12/29(月) 18:21:03ID:???
そんな本のことはさっさと忘れるべき。
0159nobodyさん2008/12/29(月) 20:00:17ID:???
>>158
本を悪く言ってんじゃなくて、反対
「CakePHP徹底入門」良い本だから期待している。
CakePHP1.2で解説されているから非常に便利。内容も入門者にはベスト。良い例題でわかり易い説明。

まだ半分までしか読んでないけど、気付いた間違いを紹介
p.179誤
37: <?php echo $jptime->jpdatetime($product['Product']['created']); ?>
40: <?php echo $jptime->jpdatetime($product['Product']['modified']); ?>
正(CDもNG)
37: <?php echo $product['Product']['created']; ?>
40: <?php echo $product['Product']['modified']; ?>
0160nobodyさん2008/12/29(月) 20:00:53ID:???
p.180誤
リスト5.7
1: function index() {
リスト5.8
1: function index() {
正(CDはOK)
リスト5.7
1: function index($id = NULL) {
リスト5.8
1: function index($id = NULL) {

p.89中あたり 誤
INSERT INTO products VALUE (1, 1, '商品1', now(), now())
INSERT INTO products VALUE (2, 2, '商品2', now(), now())
INSERT INTO products VALUE (2, 2, '商品3', now(), now())
正(CDはOK)
INSERT INTO products VALUE (1, 1, '商品1', now(), now());
INSERT INTO products VALUE (2, 2, '商品2', now(), now());
INSERT INTO products VALUE (3, 3, '商品3', now(), now());

上記3つはプログラムが動かないけど、以下2つはどうでもいい事

p.133下の方 誤
shopping/controllers/category_controller.php
正
shopping/controllers/categories_controller.php

p.116下の方 誤
と質問がきますので、「y」を入力して終了します。
正
と質問がきますので、「n」を入力して終了します。
0161nobodyさん2008/12/30(火) 19:33:21ID:uva7pRTj
Railsを猿真似してくれたら楽なのに
所々にいらぬお節介がついて回るよね、cakeは
核になるMVCを無意味に密に結合するような作りにしたりして
素晴らしいお手本があるにもかかわらず何故センスのない変な拡張をいれるんだorz
0162nobodyさん2008/12/30(火) 23:28:49ID:???
好きなFW探して使ったらどうでしょうか
0163nobodyさん2009/01/01(木) 15:27:00ID:???
おっ、マニュアルのレイアウト崩れが直った?
0164nobodyさん2009/01/01(木) 16:48:24ID:???
>>163
目次の「3 CakePHPによる開発」をクリックするとレイアウト崩れるけど?
ttp://book.cakephp.org/ja/
0165nobodyさん2009/01/01(木) 17:23:53ID:???
あらま、これってどこかに報告したほうがいいの?
0166nobodyさん2009/01/01(木) 21:00:37ID:???
他のページも崩れまくってる

以前のマニュアルページがそのままインポートされてる感じだね
0167nobodyさん2009/01/02(金) 07:50:16ID:???
setFlash()をflash()すると
末尾に 1 っていうゴミが付いてくるんだけど、なんだろう?
0168nobodyさん2009/01/02(金) 07:57:24ID:???
事故解決
echo $session->flash();

って書いて返値のtrueを出力してた
0169nobodyさん2009/01/02(金) 22:49:27ID:???
>>163  >>165
1.2マニュアルのレイアウト崩れ直ったみたい。
ttp://book.cakephp.org/ja/
0170nobodyさん2009/01/02(金) 22:55:13ID:???
>>169
おっ、ほんとだ中の人gj
0171nobodyさん2009/01/03(土) 02:12:26ID:???
なおってねーよ
再現率は100%じゃないのかねぇ
0172nobodyさん2009/01/03(土) 02:28:49ID:???
ページによって出たりでなかったりってのはあったが
今見た限りでは直ってた

どこのページで問題出てる?
0173nobodyさん2009/01/03(土) 03:49:50ID:???
1項目づつ 次のページ のリンクたどってくとおかしいね
0174nobodyさん2009/01/03(土) 18:30:22ID:???
Formヘルパーのinputメソッドを使って文字の入力画面を表示すると
文字サイズが大きいのですが、文字サイズを小さくするにはどうすれば
よいでしょうか?よろしくお願いします。
echo $form->input('content', array('type'=>"text", 'label'=>""));
0175nobodyさん2009/01/04(日) 10:58:57ID:???
>>174
それはCSSとかの話じゃなくて?
0176nobodyさん2009/01/04(日) 12:47:21ID:???
>>175
ヒントありがとうございます。
正解みたいですね。CSSは耳にした事はありますが、難しいので避けてました。
CSS レイアウト スタイルシートがキーワードのようですね。
http://www.bnote.net/php/cakephp/cakephp08.shtml
http://www.ideaxidea.com/archives/2007/06/cakephp_014.html
勉強してチャレンジしてみます。
0177nobodyさん2009/01/04(日) 14:23:59ID:???
('A`)
0178nobodyさん2009/01/04(日) 17:01:24ID:???
テーブルレイアウトが主流だけど、数年後にはcssは必須になってる。
今から先取りして覚えておいて損はない。
0179nobodyさん2009/01/04(日) 17:31:20ID:???
現時点でテーブルレイアウトにしようなんて奴は逆に勇者に見えるわ
0180nobodyさん2009/01/04(日) 18:16:16ID:???
グーグルはテーブルレイアウトだよ
0181nobodyさん2009/01/04(日) 18:47:13ID:u5+bOtGZ
費用対効果
テーブル使った方がはるかに効率的な場合に狙ってやるのは○
テーブルレイアウトしかできないのは論外

0182nobodyさん2009/01/04(日) 18:48:37ID:???
デザイン直ってないな
崩れまくり
0183nobodyさん2009/01/04(日) 19:10:12ID:???
>>180
グーグル自体がクロールされる必要はなかろう。。
0184nobodyさん2009/01/05(月) 02:25:07ID:???
なぜCakePHPみたいな将来性なさそうな技術に時間使ってるの?
0185nobodyさん2009/01/05(月) 02:48:35ID:???
>>184
お前さんもここで使ってるよねw
0186nobodyさん2009/01/05(月) 02:48:56ID:???
じゃあCake以外でいいの教えてくれよ。PHPで。
0187nobodyさん2009/01/05(月) 03:19:39ID:???
オープンソースあぷりの多くがPHP製
0188nobodyさん2009/01/05(月) 16:02:01ID:???
>>187
それはちょっと前にPerl開発者が言ってた台詞だよ・・・
0189nobodyさん2009/01/05(月) 20:31:10ID:qd8O6pD6
仕事で仕方なくcake使ってるが次使うことはないだろう・・・
0190nobodyさん2009/01/05(月) 21:29:11ID:???
>>189
ちなみに次は何を検討してる?
0191nobodyさん2009/01/05(月) 23:41:50ID:???
もち、ちぃたん
0192nobodyさん2009/01/06(火) 09:15:09ID:???
つhttp://pc11.2ch.net/test/read.cgi/php/1229960175/
0193nobodyさん2009/01/06(火) 09:26:24ID:???
http://book.cakephp.org/ja/view/29/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%AE%E6%BA%96%E5%82%99

まだ壊れてるぞー
0194nobodyさん2009/01/06(火) 09:36:40ID:UaXiuRrZ
http://book.cakephp.org/ja/complete/39/%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A

この辺りも
1ページ表示で崩れる
0195nobodyさん2009/01/06(火) 15:31:13ID:???
>>193-194
この問題ってcakephpの問題じゃなくて
デザイン(css)の問題でおk?
0196nobodyさん2009/01/06(火) 15:48:45ID:???
フレームワークの恩恵を受けるのは
マスターしてから1年後だと思う。1年経つとCakePHPに特化した使いまわし出来るロジックがかなり増える
なので新しいフレームワークが出て、すぐ移行するのは
今まで蓄積したロジックを捨てるに等しいので
CakePHPを8割、新しいフレームワーク2割という感じでフレームワークを使っていこうと思っている
0197nobodyさん2009/01/06(火) 15:52:53ID:???
成長性を考えると、全体案件の2,3割は新しいフレームワークへ力を入れた方がいい
このバランスが大切だと思う、完全シフトはただのバカと思うし
CakePHP100%たより過ぎも、将来がない
0198nobodyさん2009/01/06(火) 15:55:30ID:???
新しいフレームワークを覚えるにしても
CakePHPを超えるものは見当たらないから
実質、CakePHP100%でやってる
0199nobodyさん2009/01/06(火) 16:08:25ID:???
コンセプトさえ理解してれば新しいフレームワークの導入なんて
せいぜい三日程度のコストしかかからないと思うんだが
独自コンポーネントを移すにしても
0200nobodyさん2009/01/06(火) 16:30:45ID:???
1.2.0.7962 Finalきた
0201nobodyさん2009/01/06(火) 17:03:32ID:???
細かいところでハマりまくる日々…
出来る人との違いを痛感します
0202nobodyさん2009/01/06(火) 17:51:38ID:???
>>200
あけおめ
0203nobodyさん2009/01/06(火) 17:54:47ID:???
>>196
言うよねぇ〜

俺も2年くらい使ってるけど、ほんっと使い回しが効く。
素晴らしいです。
0204nobodyさん2009/01/07(水) 00:15:09ID:???
>>200
メリクリ
0205nobodyさん2009/01/07(水) 02:09:30ID:???
CakePHP 1.2 SP1はまだですか?
0206nobodyさん2009/01/07(水) 10:48:13ID:???
ModelBakerが話題にあがってこないけど、誰も使ってないのかな?
ttp://www.widgetpress.com

Macユーザー自体少ないのかな。

自分はこれからさわってみます。
0207nobodyさん2009/01/07(水) 16:24:24ID:???
>>206
なんか凄そう。と思って落としてみたけど10.5専用なのね・・・残念。
0208nobodyさん2009/01/07(水) 16:47:56ID:???
http://book.cakephp.org/ja/view/84/%E9%96%A2%E9%80%A3%E3%83%A2%E3%83%87%E3%83%AB-hasOne-hasMany-belongsTo-%E3%81%AE%E3%83%87%E3%83%BC
これってトランザクション使わないとまずい?
0209nobodyさん2009/01/07(水) 16:55:48ID:???
>>208
詳しいことは他の人に譲るが
記憶が定かなら、確か件数取得(select)して、書き込む(update)だけだったと思うから、トランザクション関係ないはず。
02102092009/01/07(水) 17:00:24ID:???
>>208
あれ?複数Modelのsaveについて言っているのかな?
0211nobodyさん2009/01/07(水) 17:04:53ID:???
>>210
関連モデルのsaveについて言ってる
公式マニュアルのくせに何の注意書きも無いから内部でうまくやってるのかなと
0212nobodyさん2009/01/08(木) 09:16:02ID:???
実験してみてくれ
0213nobodyさん2009/01/08(木) 11:52:33ID:???
Cake1.2です
viewで
echo $form->error('Modelname.fieldname', '出力されるエラー表示');
だとうまくいくのに
echo $form->error('Modelname.fieldname');
でmodelの$validateで代入した'message'が表示されません。
これでうまくいくようなことがあちこちに書いてあるのに。
どうやったら'message'を出力できるんでしょうか。
0214nobodyさん2009/01/08(木) 14:16:03ID:???
解決しました。
modelの文字コードが原因でした。
0215nobodyさん2009/01/09(金) 08:36:44ID:I5IAXkbt
初歩的な質問かもしれないんですが
モデルクラスのプロパティは、コントローラーをまたがって保持されます?

なにがやりたいかというと、
モデル内でファイルを読み込んで、そのデータをプロパティに保持
(DBを使わないモデル)
他のコントローラーからそのモデルクラスのプロパティを参照したい

personモデル
 var $sex;
function loadfile() { ファイルを読み込んでプロパティをセット }
function getSex() { 性別を返す }

peopleコントローラー
getSex()でデータ取得

profileコントローラー
 getSex()でデータ取得

各コントローラーで、必ず毎回ファイルを読み込まないとだめでしょか?
0216nobodyさん2009/01/09(金) 08:42:51ID:???
静的メンバで以下みたいにやれば出来るんじゃね
if(isSet(ClassName::sex)){
//ファイル読み込み
}

一応いっとくとプロセスまたがっては無理だよ
0217nobodyさん2009/01/09(金) 08:43:21ID:???
あ、if(!isSet())ね
0218nobodyさん2009/01/09(金) 08:51:49ID:???
なるほど…ありがとうございます
できなくはないんですね

基本的には、CakePHPの流儀(というかPHPフレームワーク?)としては、
コントローラーごとに毎回データを読む(DB使う場合も)
という感じでしょうか

あとはキャッシュ機能を使うみたいな
0219nobodyさん2009/01/09(金) 08:54:52ID:???
コントローラー呼び出しごとにアクセスがあると、
ちょっと心配なんですが、キャッシュ機能使えってことでしょうか

セッションに保存するのはなんか違う気がしますし
0220nobodyさん2009/01/09(金) 09:02:28ID:???
セッションに保持すればよいということではないの?
というか、そもそも、people と profile が関連づけられていれば、profileコントローラーは不要だと思うが
(よく読み込まずに答えたから、見当違いだったらすまん)
0221nobodyさん2009/01/09(金) 09:02:36ID:???
DBアクセスオブジェクトは一つしか作られないよ
0222nobodyさん2009/01/09(金) 09:03:29ID:???
目的がパフォーマンスならセッションに入れる意味はあまり無いんじゃないの?
DBから読むかファイルシステムから読むかの違いでしょ
0223nobodyさん2009/01/09(金) 09:05:38ID:???
どういうDBアクセスが発生してるか気になるならデバッグモードにすればいい
0224nobodyさん2009/01/09(金) 10:12:30ID:???
>>215は、Model とController の対応が間違っているということはないの?
Userモデル(Personモデル)
Usersコントローラー
があって、

/users/index で、Usersリストを表示する
/users/view で、Userプロフィールを表示する
みたいな

質問を読むと、根本的な問題のような気がする
(Peopleモデルというのがイメージできないし、Personsコントローラーがあれば、Profilesコントローラーは要らなそうな気がする)
02252152009/01/09(金) 11:09:25ID:???
すんません
例は適当です…

具体的には、ファイルからデータを読み込ませ、
そのデータを元に、各コントローラーでフォームを自動構築しようとしています
(入力内容が毎回可変なため、このようにしています)

ファイルには各コントローラーにまたがる入力項目のデータが含まれていて、
各コントローラーでは、そのデータを読み込んでフォームを構築します

この場合、コントローラーごとにファイルに何回もアクセスする
ということでいいんでしょうか?
(今のところ、データベースは一切使いません。)
02262152009/01/09(金) 11:16:27ID:???
ファイル(product)
 商品名:text
 価格1:select
 価格2:select
 (価格の数は可変)

ファイル(price)
 1000
 2000
 3000
 (可変)

モデル
product
 price

コントローラー
 productController
priceController

ビュー
 product(商品の選択画面)
  ファイルを読み込んで商品名を選択する画面
 price(価格の入力画面)
  価格のデータ数分だけフォームを入力

コントローラーを分けているのは、もう少し複雑で、他のデータなども混じるためです
うまく説明できない・・・・
02272152009/01/09(金) 11:23:38ID:???
実際にはpriceにも、価格専用のフォーム生成のためのデータが入ってます(これも可変)

productにまとめると肥大化&実際に価格データ専用のアクションも必要になるため、
コントローラーをわけてます。

うまく説明できないのですが、
とりあえず、コントローラーまたぐならファイルに毎回アクセスしろってことですかね
0228nobodyさん2009/01/09(金) 11:37:58ID:???
コンポーネント使えよ
0229nobodyさん2009/01/09(金) 11:38:29ID:???
いやむしろエレメント使えよ
02302152009/01/09(金) 11:54:38ID:???
>>228

コントローラーは共通じゃないです
モデルは一部共通ですね
となるとビヘイビア?

どのみち、普通にやるとなれば毎回ファイルアクセスは発生ですね
後で外部クラス化を考えることにします…
0231nobodyさん2009/01/09(金) 12:05:39ID:???
なんでビヘイビアになるんだ?
コンポーネントかエレメントで出来るだろ
0232nobodyさん2009/01/09(金) 12:12:39ID:???
>>225 から想像するに、通常DBに保存するデータを、DBの代わりにファイルに保存しているということかな?

そうだとすると
「コントローラーごとにファイルにアクセスで良いか」というのは、Yesということになるね
(ただし、正確には、ControllerではなくModelだけど)

ProductとPriceがHasManyの関係にあるのなら、なるべくDBを使うべきでしょう。
(もしかしたらHABTMかもね)
■ このスレッドは過去ログ倉庫に格納されています