【PHP】フレームワーク CakePHP 5ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/12/19(金) 15:52:19ID:ylogT+7chttp://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/
0159nobodyさん
2008/12/29(月) 20:00:17ID:???本を悪く言ってんじゃなくて、反対
「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:???リスト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所々にいらぬお節介がついて回るよね、cakeは
核になるMVCを無意味に密に結合するような作りにしたりして
素晴らしいお手本があるにもかかわらず何故センスのない変な拡張をいれるんだorz
0162nobodyさん
2008/12/30(火) 23:28:49ID:???0163nobodyさん
2009/01/01(木) 15:27:00ID:???0164nobodyさん
2009/01/01(木) 16:48:24ID:???目次の「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:???末尾に 1 っていうゴミが付いてくるんだけど、なんだろう?
0168nobodyさん
2009/01/02(金) 07:57:24ID:???echo $session->flash();
って書いて返値のtrueを出力してた
0169nobodyさん
2009/01/02(金) 22:49:27ID:???1.2マニュアルのレイアウト崩れ直ったみたい。
ttp://book.cakephp.org/ja/
0171nobodyさん
2009/01/03(土) 02:12:26ID:???再現率は100%じゃないのかねぇ
0172nobodyさん
2009/01/03(土) 02:28:49ID:???今見た限りでは直ってた
どこのページで問題出てる?
0173nobodyさん
2009/01/03(土) 03:49:50ID:???0174nobodyさん
2009/01/03(土) 18:30:22ID:???文字サイズが大きいのですが、文字サイズを小さくするにはどうすれば
よいでしょうか?よろしくお願いします。
echo $form->input('content', array('type'=>"text", 'label'=>""));
0176nobodyさん
2009/01/04(日) 12:47:21ID:???ヒントありがとうございます。
正解みたいですね。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:???0178nobodyさん
2009/01/04(日) 17:01:24ID:???今から先取りして覚えておいて損はない。
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:???崩れまくり
0184nobodyさん
2009/01/05(月) 02:25:07ID:???0186nobodyさん
2009/01/05(月) 02:48:56ID:???0187nobodyさん
2009/01/05(月) 03:19:39ID:???0189nobodyさん
2009/01/05(月) 20:31:10ID:qd8O6pD60191nobodyさん
2009/01/05(月) 23:41:50ID:???0192nobodyさん
2009/01/06(火) 09:15:09ID:???0193nobodyさん
2009/01/06(火) 09:26:24ID:???まだ壊れてるぞー
0194nobodyさん
2009/01/06(火) 09:36:40ID:UaXiuRrZこの辺りも
1ページ表示で崩れる
0196nobodyさん
2009/01/06(火) 15:48:45ID:???マスターしてから1年後だと思う。1年経つとCakePHPに特化した使いまわし出来るロジックがかなり増える
なので新しいフレームワークが出て、すぐ移行するのは
今まで蓄積したロジックを捨てるに等しいので
CakePHPを8割、新しいフレームワーク2割という感じでフレームワークを使っていこうと思っている
0197nobodyさん
2009/01/06(火) 15:52:53ID:???このバランスが大切だと思う、完全シフトはただのバカと思うし
CakePHP100%たより過ぎも、将来がない
0198nobodyさん
2009/01/06(火) 15:55:30ID:???CakePHPを超えるものは見当たらないから
実質、CakePHP100%でやってる
0199nobodyさん
2009/01/06(火) 16:08:25ID:???せいぜい三日程度のコストしかかからないと思うんだが
独自コンポーネントを移すにしても
0200nobodyさん
2009/01/06(火) 16:30:45ID:???0201nobodyさん
2009/01/06(火) 17:03:32ID:???出来る人との違いを痛感します
0205nobodyさん
2009/01/07(水) 02:09:30ID:???0206nobodyさん
2009/01/07(水) 10:48:13ID:???ttp://www.widgetpress.com
Macユーザー自体少ないのかな。
自分はこれからさわってみます。
0208nobodyさん
2009/01/07(水) 16:47:56ID:???これってトランザクション使わないとまずい?
0209nobodyさん
2009/01/07(水) 16:55:48ID:???詳しいことは他の人に譲るが
記憶が定かなら、確か件数取得(select)して、書き込む(update)だけだったと思うから、トランザクション関係ないはず。
0211nobodyさん
2009/01/07(水) 17:04:53ID:???関連モデルのsaveについて言ってる
公式マニュアルのくせに何の注意書きも無いから内部でうまくやってるのかなと
0212nobodyさん
2009/01/08(木) 09:16:02ID:???0213nobodyさん
2009/01/08(木) 11:52:33ID:???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:???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:???0222nobodyさん
2009/01/09(金) 09:03:29ID:???DBから読むかファイルシステムから読むかの違いでしょ
0223nobodyさん
2009/01/09(金) 09:05:38ID:???0224nobodyさん
2009/01/09(金) 10:12:30ID:???Userモデル(Personモデル)
Usersコントローラー
があって、
/users/index で、Usersリストを表示する
/users/view で、Userプロフィールを表示する
みたいな
質問を読むと、根本的な問題のような気がする
(Peopleモデルというのがイメージできないし、Personsコントローラーがあれば、Profilesコントローラーは要らなそうな気がする)
0225215
2009/01/09(金) 11:09:25ID:???例は適当です…
具体的には、ファイルからデータを読み込ませ、
そのデータを元に、各コントローラーでフォームを自動構築しようとしています
(入力内容が毎回可変なため、このようにしています)
ファイルには各コントローラーにまたがる入力項目のデータが含まれていて、
各コントローラーでは、そのデータを読み込んでフォームを構築します
この場合、コントローラーごとにファイルに何回もアクセスする
ということでいいんでしょうか?
(今のところ、データベースは一切使いません。)
0226215
2009/01/09(金) 11:16:27ID:???商品名:text
価格1:select
価格2:select
(価格の数は可変)
ファイル(price)
1000
2000
3000
(可変)
モデル
product
price
コントローラー
productController
priceController
ビュー
product(商品の選択画面)
ファイルを読み込んで商品名を選択する画面
price(価格の入力画面)
価格のデータ数分だけフォームを入力
コントローラーを分けているのは、もう少し複雑で、他のデータなども混じるためです
うまく説明できない・・・・
0227215
2009/01/09(金) 11:23:38ID:???productにまとめると肥大化&実際に価格データ専用のアクションも必要になるため、
コントローラーをわけてます。
うまく説明できないのですが、
とりあえず、コントローラーまたぐならファイルに毎回アクセスしろってことですかね
0228nobodyさん
2009/01/09(金) 11:37:58ID:???0229nobodyさん
2009/01/09(金) 11:38:29ID:???0230215
2009/01/09(金) 11:54:38ID:???コントローラーは共通じゃないです
モデルは一部共通ですね
となるとビヘイビア?
どのみち、普通にやるとなれば毎回ファイルアクセスは発生ですね
後で外部クラス化を考えることにします…
0231nobodyさん
2009/01/09(金) 12:05:39ID:???コンポーネントかエレメントで出来るだろ
0232nobodyさん
2009/01/09(金) 12:12:39ID:???そうだとすると
「コントローラーごとにファイルにアクセスで良いか」というのは、Yesということになるね
(ただし、正確には、ControllerではなくModelだけど)
ProductとPriceがHasManyの関係にあるのなら、なるべくDBを使うべきでしょう。
(もしかしたらHABTMかもね)
0233nobodyさん
2009/01/09(金) 12:15:46ID:???フォーム生成処理を共通化したいのならエレメントかコンポーネントだろ
0234nobodyさん
2009/01/09(金) 12:19:41ID:???0236nobodyさん
2009/01/09(金) 12:28:58ID:???たぶん、>>215が気にしているのは、「毎回DBやファイルを読み込むのが気持ち悪い」ということかなと。
だとすると、viewの問題ということなんだけど、そもそもModelやControllerの設計がまずいとキャッシュも使えないからね。
0237nobodyさん
2009/01/09(金) 12:34:01ID:???DBに記録する以外は。
Cakeのキャッシュなんて所詮はファイルシステムから読み出してるに過ぎないから
それ以上の高速化は無理。
そもそもやろうとしてる事がエレメントを使って書くべきものに思えるが。
0238215
2009/01/09(金) 12:41:11ID:???はい、だいたいそんな感じです
いずれ、ユーザー固有のデータはDBに入れるつもりですが、
今回の質問のデータはシステム全体で共通のデータです
ただ、それがユーザーの入力によって変わる(切り替える)ことがあると。
>>233
その共通化の元となるデータをファイルで読み込むんです…
ユーザーの入力に応じて変化します。
そういう可変データがたくさんあるんで…
ざっとマニュアルを見た感じでは、DataSource?を自分で作ればよいのかな、とも。
とりあえずは、モデルで処理して、後々外部クラスとかにまとめてみることにします
ありがとうございました
0239nobodyさん
2009/01/09(金) 12:43:19ID:???ビューキャッシュ<<<<エレメントキャッシュ<何もしない
ビュー自体をキャッシュできるならするべきでしょう
0240nobodyさん
2009/01/09(金) 12:44:03ID:???ユーザの入力はGETなりPOSTなりで来るんでしょ?
エレメント内でそれを見て動作切り替えたらいけないの?
0241215
2009/01/09(金) 12:45:58ID:???フォームの個数もパターンも無数にあるんですが、エレメントでできるんでしょうか?
いや、実際の出力はエレメントでやるんですが、
"どのエレメントをどの順番で何個出力するか"のデータが、今回のファイルに保存されているんで…
そのデータはモデルで読むか、外部クラス化するかですよね。
で、そのデータをコントローラー間で使い回したかったんです。
イメージとしては、XMLからのフォームの自動生成、
しかも、それがユーザーの入力に応じて変わると、いう感じで、
その元となるXMLを保持しておけるのかな、と。
(データファイルはいずれXML化するつもりです)
外部クラス化とかするしかないですよね。
モデルに書くと毎回読みにいくしかなさそうということで。
0242251
2009/01/09(金) 12:48:25ID:???POSTで来るんですが、入力段階(画面)が数回あって、
ユーザーの入力値と順序によって、生成するフォームのパターンが変わるんです…
0243nobodyさん
2009/01/09(金) 12:49:04ID:???そうでないならエレメントにコードを置かずファイルから読み込もうとしてる理由が分からん。
0244251
2009/01/09(金) 12:50:10ID:???しかも、画面は自由に行き来可能で、ある画面で入力値を変えると、
他の画面のフォームも再構築する必要があると…
とりあえず、一回全部組んでから効率化は考えることにします…
0245nobodyさん
2009/01/09(金) 13:49:09ID:???0246nobodyさん
2009/01/09(金) 14:01:28ID:I5IAXkbtcreate()のパラメータ modelって、モデル名じゃなくてコントローラー名だよね?
model名入れててエラーになった orz
0247nobodyさん
2009/01/09(金) 15:22:27ID:I5IAXkbtコントローラでいじるのに違和感があるんだけど
モデルじゃセッション使えないよね?
0248nobodyさん
2009/01/09(金) 15:23:23ID:???すまそ
0249251
2009/01/09(金) 18:31:13ID:I5IAXkbt例えば、商品のデータを編集する処理を作る場合、
商品名を編集する画面と価格を編集する画面を分けたいと思ってます
この場合、コントローラーもわけたほうがいいんでしょうか?
(もちろんモデルは一つ(Product)になるかと思いますが)
というのも、コントローラーを一つにすると、
products/name/change
products/prices/delete
products/prices/change
products/prices/delete
のようになり、URLのアクション部分が実際の処理とは違う形になってしまい、
アクション側でもパラメータでいちいち処理を分岐させる必要があります
そこでコントローラーだけを二つにわけて、
products/change
products/delete
prices/change
prices/delete
のようにしようかと思うんですが、よくないですかね?
どうでもいい質問かと思うんですが、できればCakeの流儀に合わせたいので…
0250nobodyさん
2009/01/09(金) 18:39:40ID:???change_priceと言う形にするか
change/priceじゃないの
例えばその商品名と価格の編集フォームがほとんど同じなら
change/priceの形にした方が良いよね
0251nobodyさん
2009/01/09(金) 19:07:30ID:???action名は add / edit / delete にしましょう
で、>>250のように /products/edit/price とするか
自分だったら /products/edit にして、渡されたデータ($this->data)を見て、内部で分岐するかな
(分岐の必要があれば、だけど)
0252nobodyさん
2009/01/09(金) 19:10:02ID:???0253215
2009/01/09(金) 19:33:24ID:???>>250
>>251
あー、やっぱりコントローラーは一つにまとめたほうがいいですか
対象は同じですもんね
changeにするなら、ルーティングで変えたほうがよかったですね
型どおりのはいくつか作ってみたんですが、
まだ応用までいきついてません
参考になりました
ありがとうございます
0254nobodyさん
2009/01/09(金) 23:29:16ID:???0255nobodyさん
2009/01/10(土) 16:34:04ID:tnQWYP/Troutes.phpでルーティングを変えるとエラーになるんですが、バグですか?
/item
を
'action' => 'cahnnel', 'action' => 'index'
とかに割り振ると、コントローラー?を誤認するのか404エラーになっちゃいます
0256nobodyさん
2009/01/10(土) 16:34:56ID:???Securityコンポーネント使うと、うまくルーティングできないよ…
0258nobodyさん
2009/01/10(土) 17:36:37ID:???やっぱりですか…
できればルーティングしてるURLに合わせたいんだけど、
どうすればいいのかさっぱり orz
■ このスレッドは過去ログ倉庫に格納されています