【PHP】フレームワーク CakePHP 5ホール目【v1.2】at PHP
【PHP】フレームワーク CakePHP 5ホール目【v1.2】 - 暇つぶし2ch92:nobodyさん
08/12/24 05:46:45
>>88
ArrayObjectはPHP5.2からだよ。
phpはオブジェクトは扱いにくいって言ってるだろうが素人が
なんでわかんねーかな

93:nobodyさん
08/12/24 05:53:40
>>88
phpはオブジェクトの方が扱いやすいと思ってんの?

94:nobodyさん
08/12/24 05:59:57
PHP4のサポート終わってみんな5.2になりつつあるんだから5.2からでもいいんじゃね?

95:nobodyさん
08/12/24 06:04:17
>>88
オブジェクトだと
ArrayObject関数とか必要になるんでしょ?
それって手間じゃない?




96:nobodyさん
08/12/24 06:09:24
>>88
>>foreachでプロパティ以外を扱いたいならIterator系をimplement
どうやって?コード書いてくれよ
javaじゃないんだからさ。。。


97:nobodyさん
08/12/24 06:11:27
>>94
なりつつあるもののを
当たり前に使えるのような言い方をするのは
いかがなものかと・・・

98:nobodyさん
08/12/24 06:19:47
>>88
ArrayObjectみたいな不安定な関数よく使ってるよなwww
URLリンク(uruseiyatsura.way-nifty.com)

99:nobodyさん
08/12/24 06:22:53
>>88
>>オブジェクトを配列として扱いたいんならArrayObjectとかあるやん。

ArrayObjectてオブジェクトを配列として扱う関数なん?
配列をオブジェクトとして扱うんじゃなくて?
URLリンク(php.mirror.camelnetwork.com)

100:nobodyさん
08/12/24 06:27:46
>>88
ArrayObjectて配列をオブジェクトとして扱ってるよね?
記事をきちんと読もうよ!素人さん

101:nobodyさん
08/12/24 11:25:53
いまさら知ったんだけど、OpenPNEがフレームワークにsymfonyを採用したみたいね。
ちょい嫉妬w

102:nobodyさん
08/12/24 13:12:13
>>97
特定の環境で動かすアプリが殆どなんだから
一般配布するCGIでもなけりゃ使えるなら使えばいいともう

103:nobodyさん
08/12/24 14:29:58
>>102
つかえばいいやん
CakePHPで使う必要がどれだけあるのかと・・・

104:nobodyさん
08/12/24 14:34:03
使える、使いたい、って言ってる人に対して、
使う必要ないってかたくなに言うのもなんだかなぁって思う。

105:nobodyさん
08/12/24 17:44:15
あくまでアドバイスや意見で自分で判断すればいいじゃん

106:nobodyさん
08/12/24 20:54:05
>>105
おまえのはアドバイスじゃねーよw
自分の発言繰り返して読んでみろ

107:nobodyさん
08/12/24 23:37:14
>>106
あらあら、次は勝手に特定ですかw

108:nobodyさん
08/12/25 12:13:56
2カラムのインデックスをmodelにプライマリキーとして設定することが可能であれば、
設定を教えて頂けませんでしょうか?

既存のmysql DB管理にcakeを使うつもりでいたら、上記設定のため
idのテーブルを追加してプライマリに設定することが行えませんでした。

109:nobodyさん
08/12/25 12:26:16
cake使うなら、OOPの勉強は必須?

なんかやたら「なんちゃらextends~~」とかって
出てくるんですけど??

110:nobodyさん
08/12/25 12:31:02
>>109
不要。
extendsが何をしているかとか、疑問に思ったら都度調べるくらいの姿勢があれば良いと思う

111:nobodyさん
08/12/25 13:14:10
>>108
URLリンク(book.cakephp.org)
「できなかった」というと?

112:nobodyさん
08/12/25 13:30:27
>>111
既存のプログラムが使用しているDBを、横からcakeで管理したかったので、
DBを新しく作ったり、すでに作られている2カラムのインデックスを解除したりは
できません。

idカラムを作成し、auto incrementalを設定しようとすると、
すでにprimaryが存在するために処理が失敗してしまいました。

primaryに設定されている2カラムのインデックスを解除すると、
既存のプログラムが動作しなくなってしまうのです…

113:nobodyさん
08/12/25 13:47:22
>>112
CakePHPでは複合プライマリキーは使えない

114:nobodyさん
08/12/25 13:57:27
>>112さん
ここを読むといいよ!

"複合キー" フォーラム - CakePHP Users in Japan
URLリンク(cakephp.jp)


115:nobodyさん
08/12/25 23:43:53
>>113-114
cakeと複合キー処理について、理解が深まりました。
なんとかなりそうです。ありがとうございます。

116:nobodyさん
08/12/26 10:52:31
1.2 stableあげ

117:nobodyさん
08/12/26 11:25:09
RC4からほとんど変わってないやんけw
もっと完全にバグ取ってからにしてほしかった・・・

でもおめでと~!

118:nobodyさん
08/12/26 12:06:29
1.2すたぶるキター

く・・クリスマスプレゼント?

119:nobodyさん
08/12/26 12:24:27
しかもケーキってとこが洒落てるw

120:nobodyさん
08/12/26 12:32:56
いや、クリスマスケーキか

121:nobodyさん
08/12/26 12:33:32
あ、リロード忘れてレス付いてるのきづかんかったわ

122:nobodyさん
08/12/26 15:09:01
いつもDonationの所 No Thanksでごめんね。

123:nobodyさん
08/12/26 15:14:48
三項条件式どんだけ便利やねん。多様は可読性悪くする
ビューで使うとかなり見通しがよくなる

124:nobodyさん
08/12/26 15:26:28
CakePHP におけるシンボルの命名規約

private 先頭にアンダーバーを2つ置く __test
protected 先頭にアンダーバーを1つ置く _test
public 先頭にアンダーバーを置かない test

ナンジャコリャー

125:nobodyさん
08/12/26 15:44:12
>>124
Pythonでも似た仕組みが使われている。
慣れれば悪いものじゃない。

126:nobodyさん
08/12/26 16:23:26
cakephp,ちょっとむずかしくない?

127:nobodyさん
08/12/26 16:33:19
EthnaやMapleよりかなり簡単だと思ったが

128:nobodyさん
08/12/26 17:06:20
>>126
難しいというか独自ルールが多いとは感じた。
しかし、それを超えた先の開発効率はすばらしいと思う。

129:nobodyさん
08/12/26 17:06:36
ん?
cakeのprotectedってどういうタイミングで使うん??


130:nobodyさん
08/12/26 17:13:03
ほんとに開発効率高いのかなあ
symfonyも使ったけどバリデーションルールの自動生成が無いのは確実にマイナス

131:nobodyさん
08/12/26 18:17:48
1.1から1.2に変えたら表示に常に10秒余計にかかるようになったけどなんで?

132:nobodyさん
08/12/26 19:14:18
debugモードじゃね

133:nobodyさん
08/12/26 19:19:08
開発効率の向上以上に、メンテナンス効率の向上を実感することが多い
過去製作したコードを見たとき、「何でこんなことしてるんだっけ?」っていうのが激減した

134:nobodyさん
08/12/26 19:50:29
1.2stableのbakeって複数プロジェクト前提みたいになったけど、どこにプロジェクト作るのがいいんだろ?
cakeの一番上のディレクトリに、/appと並ぶ形で作ると管理しやすいかな。
PDTとかで管理する上でも。

135:134
08/12/26 22:09:57
結局楽するために今までどおりappの中に作る事にした

136:nobodyさん
08/12/26 22:30:57
複数プロジェクトってどうやるんですかね?


137:nobodyさん
08/12/26 22:36:04
複数プロジェクトとうか、コア(cakeディレクトリ)の共有だろ?
マニュアルに書いてある。
URLリンク(book.cakephp.org)

138:nobodyさん
08/12/26 22:41:30
コミュニティのレベルも低いし
だめっぽくねcake

139:nobodyさん
08/12/26 22:55:42
とくにダメっぽいところ感じないんだが

140:nobodyさん
08/12/27 01:25:44
>>136
bakeで好きなところにプロジェクトを吐けるよ

141:nobodyさん
08/12/27 03:36:46
URLリンク(book.cakephp.org)
とかIE7でもおかしいし、firefoxだともっとやばい
なんとならんの?

142:nobodyさん
08/12/27 08:43:14
CakePHPの新しい本(英語だけど)
Practical CakePHP Projects 400ページ 3,963円 08/12/8発行
URLリンク(www.amazon.co.jp)
どうよ?

(参考)半年前に発売されている姉妹書
Beginning CakePHP: From Novice to Professional 344ページ 3,963円 08/7/21発行
URLリンク(www.amazon.co.jp)

143:nobodyさん
08/12/27 12:39:56
>>142
4000円とかあほくさー

ページあたり10円かよ

144:nobodyさん
08/12/27 13:29:46
「Terrible Examples, Poorly Written Book...」って言われてる。

145:nobodyさん
08/12/27 13:52:50
このシリーズって日本で言うと「できる」シリーズみたいなもんだろ?

146:nobodyさん
08/12/27 15:59:16
できるシリーズは明らかに超初心者向けな写真メインの構成なだけで
値段も倍くらい違うし一緒にするのはかわいそう

147:nobodyさん
08/12/27 18:29:26
早速CakePHP 1.2.0.7962-Stableをダウンロードし、CakePHP1.2を始めようとしたら
URLリンク(cakeforge.org)
app/config/の中に、database.php.defaultファイルが見当たらない。
探し方が悪いのか?本家が忘れ物したのかな?
みなさんのところdatabase.php.defaultファイルあります?

148:nobodyさん
08/12/27 18:33:33
>>147です。
database.php.defaultありました。スマソ

149:nobodyさん
08/12/28 18:51:53
聞きたいことがある。

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

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

1. save()の前にvalidate()を実行して分岐する。
2. save()のあとにinvalidFields()を実行して分岐する。
みんなはどうしてる?


150:nobodyさん
08/12/28 20:13:58
>>149
Model::onError()

151:nobodyさん
08/12/28 20:41:33
>>150
うわー、これ知らなかった!
なんだ、DBアクセスの箇所ごとにエラー処理する必要はなかったんだ。
ありがとう。

152:nobodyさん
08/12/28 22:11:07
DBエラーって、onError()イベントハンドラのコール以外で知ることはできない?
うちの場合ちょっと事情があって、onError()関数でを上書きできないので。

153:nobodyさん
08/12/28 22:33:37
クラスDboSourceのソースを見たら、Model::onError()が呼ばれるときは、
Model::save()の戻り値はやっぱり false だった。
save のあとで invalidFieldsがあるかどうかで分岐すればよさそう。

154:nobodyさん
08/12/29 03:21:56
>>152
適当にDboを継承してonErrorが呼ばれてる部分を実装すればいいのでは?
やりたくないけど。

>>153
DB側がエラーになってる時点で、saveも糞もないと思う。

155:nobodyさん
08/12/29 10:08:14
>>154
>>153は、controllerでどう書くかを言ってるんだろ

156:nobodyさん
08/12/29 10:43:26
>>152
まずはどんな事情かを説明しろ

157:nobodyさん
08/12/29 13:36:03
「CakePHP徹底入門」の正誤情報掲載してくれ~
URLリンク(seshop.com)
08年9月発売で、発売から4ヵ月も経っているのに、まだ正誤情報掲載してないぞ~
俺は、Ajaxの項のp.178のリスト5.5が全然違うのがわからず、メチャ手間取ったぞ~
CDのLIST5-5も全然違うじゃねーか。ダブルパンチだ。
早く正誤情報掲載してくれ~

158:nobodyさん
08/12/29 18:21:03
そんな本のことはさっさと忘れるべき。

159:nobodyさん
08/12/29 20:00:17
>>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']; ?>

160:nobodyさん
08/12/29 20:00:53
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」を入力して終了します。

161:nobodyさん
08/12/30 19:33:21 uva7pRTj
Railsを猿真似してくれたら楽なのに
所々にいらぬお節介がついて回るよね、cakeは
核になるMVCを無意味に密に結合するような作りにしたりして
素晴らしいお手本があるにもかかわらず何故センスのない変な拡張をいれるんだorz

162:nobodyさん
08/12/30 23:28:49
好きなFW探して使ったらどうでしょうか

163:nobodyさん
09/01/01 15:27:00
おっ、マニュアルのレイアウト崩れが直った?

164:nobodyさん
09/01/01 16:48:24
>>163
目次の「3 CakePHPによる開発」をクリックするとレイアウト崩れるけど?
URLリンク(book.cakephp.org)

165:nobodyさん
09/01/01 17:23:53
あらま、これってどこかに報告したほうがいいの?

166:nobodyさん
09/01/01 21:00:37
他のページも崩れまくってる

以前のマニュアルページがそのままインポートされてる感じだね

167:nobodyさん
09/01/02 07:50:16
setFlash()をflash()すると
末尾に 1 っていうゴミが付いてくるんだけど、なんだろう?


168:nobodyさん
09/01/02 07:57:24
事故解決
echo $session->flash();

って書いて返値のtrueを出力してた

169:nobodyさん
09/01/02 22:49:27
>>163  >>165
1.2マニュアルのレイアウト崩れ直ったみたい。
URLリンク(book.cakephp.org)

170:nobodyさん
09/01/02 22:55:13
>>169
おっ、ほんとだ中の人gj

171:nobodyさん
09/01/03 02:12:26
なおってねーよ
再現率は100%じゃないのかねぇ

172:nobodyさん
09/01/03 02:28:49
ページによって出たりでなかったりってのはあったが
今見た限りでは直ってた

どこのページで問題出てる?

173:nobodyさん
09/01/03 03:49:50
1項目づつ 次のページ のリンクたどってくとおかしいね

174:nobodyさん
09/01/03 18:30:22
Formヘルパーのinputメソッドを使って文字の入力画面を表示すると
文字サイズが大きいのですが、文字サイズを小さくするにはどうすれば
よいでしょうか?よろしくお願いします。
echo $form->input('content', array('type'=>"text", 'label'=>""));

175:nobodyさん
09/01/04 10:58:57
>>174
それはCSSとかの話じゃなくて?

176:nobodyさん
09/01/04 12:47:21
>>175
ヒントありがとうございます。
正解みたいですね。CSSは耳にした事はありますが、難しいので避けてました。
CSS レイアウト スタイルシートがキーワードのようですね。
URLリンク(www.bnote.net)
URLリンク(www.ideaxidea.com)
勉強してチャレンジしてみます。

177:nobodyさん
09/01/04 14:23:59
('A`)

178:nobodyさん
09/01/04 17:01:24
テーブルレイアウトが主流だけど、数年後にはcssは必須になってる。
今から先取りして覚えておいて損はない。

179:nobodyさん
09/01/04 17:31:20
現時点でテーブルレイアウトにしようなんて奴は逆に勇者に見えるわ

180:nobodyさん
09/01/04 18:16:16
グーグルはテーブルレイアウトだよ

181:nobodyさん
09/01/04 18:47:13 u5+bOtGZ
費用対効果
テーブル使った方がはるかに効率的な場合に狙ってやるのは○
テーブルレイアウトしかできないのは論外



182:nobodyさん
09/01/04 18:48:37
デザイン直ってないな
崩れまくり

183:nobodyさん
09/01/04 19:10:12
>>180
グーグル自体がクロールされる必要はなかろう。。

184:nobodyさん
09/01/05 02:25:07
なぜCakePHPみたいな将来性なさそうな技術に時間使ってるの?

185:nobodyさん
09/01/05 02:48:35
>>184
お前さんもここで使ってるよねw

186:nobodyさん
09/01/05 02:48:56
じゃあCake以外でいいの教えてくれよ。PHPで。

187:nobodyさん
09/01/05 03:19:39
オープンソースあぷりの多くがPHP製

188:nobodyさん
09/01/05 16:02:01
>>187
それはちょっと前にPerl開発者が言ってた台詞だよ・・・

189:nobodyさん
09/01/05 20:31:10 qd8O6pD6
仕事で仕方なくcake使ってるが次使うことはないだろう・・・

190:nobodyさん
09/01/05 21:29:11
>>189
ちなみに次は何を検討してる?

191:nobodyさん
09/01/05 23:41:50
もち、ちぃたん

192:nobodyさん
09/01/06 09:15:09
スレリンク(php板)

193:nobodyさん
09/01/06 09:26:24
URLリンク(book.cakephp.org)

まだ壊れてるぞー

194:nobodyさん
09/01/06 09:36:40 UaXiuRrZ
URLリンク(book.cakephp.org)

この辺りも
1ページ表示で崩れる

195:nobodyさん
09/01/06 15:31:13
>>193-194
この問題ってcakephpの問題じゃなくて
デザイン(css)の問題でおk?

196:nobodyさん
09/01/06 15:48:45
フレームワークの恩恵を受けるのは
マスターしてから1年後だと思う。1年経つとCakePHPに特化した使いまわし出来るロジックがかなり増える
なので新しいフレームワークが出て、すぐ移行するのは
今まで蓄積したロジックを捨てるに等しいので
CakePHPを8割、新しいフレームワーク2割という感じでフレームワークを使っていこうと思っている

197:nobodyさん
09/01/06 15:52:53
成長性を考えると、全体案件の2,3割は新しいフレームワークへ力を入れた方がいい
このバランスが大切だと思う、完全シフトはただのバカと思うし
CakePHP100%たより過ぎも、将来がない


198:nobodyさん
09/01/06 15:55:30
新しいフレームワークを覚えるにしても
CakePHPを超えるものは見当たらないから
実質、CakePHP100%でやってる

199:nobodyさん
09/01/06 16:08:25
コンセプトさえ理解してれば新しいフレームワークの導入なんて
せいぜい三日程度のコストしかかからないと思うんだが
独自コンポーネントを移すにしても

200:nobodyさん
09/01/06 16:30:45
1.2.0.7962 Finalきた

201:nobodyさん
09/01/06 17:03:32
細かいところでハマりまくる日々…
出来る人との違いを痛感します

202:nobodyさん
09/01/06 17:51:38
>>200
あけおめ

203:nobodyさん
09/01/06 17:54:47
>>196
言うよねぇ~

俺も2年くらい使ってるけど、ほんっと使い回しが効く。
素晴らしいです。

204:nobodyさん
09/01/07 00:15:09
>>200
メリクリ

205:nobodyさん
09/01/07 02:09:30
CakePHP 1.2 SP1はまだですか?

206:nobodyさん
09/01/07 10:48:13
ModelBakerが話題にあがってこないけど、誰も使ってないのかな?
URLリンク(www.widgetpress.com)

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

自分はこれからさわってみます。

207:nobodyさん
09/01/07 16:24:24
>>206
なんか凄そう。と思って落としてみたけど10.5専用なのね・・・残念。


208:nobodyさん
09/01/07 16:47:56
URLリンク(book.cakephp.org)
これってトランザクション使わないとまずい?

209:nobodyさん
09/01/07 16:55:48
>>208
詳しいことは他の人に譲るが
記憶が定かなら、確か件数取得(select)して、書き込む(update)だけだったと思うから、トランザクション関係ないはず。

210:209
09/01/07 17:00:24
>>208
あれ?複数Modelのsaveについて言っているのかな?

211:nobodyさん
09/01/07 17:04:53
>>210
関連モデルのsaveについて言ってる
公式マニュアルのくせに何の注意書きも無いから内部でうまくやってるのかなと

212:nobodyさん
09/01/08 09:16:02
実験してみてくれ

213:nobodyさん
09/01/08 11:52:33
Cake1.2です
viewで
echo $form->error('Modelname.fieldname', '出力されるエラー表示');
だとうまくいくのに
echo $form->error('Modelname.fieldname');
でmodelの$validateで代入した'message'が表示されません。
これでうまくいくようなことがあちこちに書いてあるのに。
どうやったら'message'を出力できるんでしょうか。

214:nobodyさん
09/01/08 14:16:03
解決しました。
modelの文字コードが原因でした。

215:nobodyさん
09/01/09 08:36:44 I5IAXkbt
初歩的な質問かもしれないんですが
モデルクラスのプロパティは、コントローラーをまたがって保持されます?

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

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

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

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

各コントローラーで、必ず毎回ファイルを読み込まないとだめでしょか?

216:nobodyさん
09/01/09 08:42:51
静的メンバで以下みたいにやれば出来るんじゃね
if(isSet(ClassName::sex)){
//ファイル読み込み
}

一応いっとくとプロセスまたがっては無理だよ

217:nobodyさん
09/01/09 08:43:21
あ、if(!isSet())ね

218:nobodyさん
09/01/09 08:51:49
なるほど…ありがとうございます
できなくはないんですね

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

あとはキャッシュ機能を使うみたいな

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

セッションに保存するのはなんか違う気がしますし

220:nobodyさん
09/01/09 09:02:28
セッションに保持すればよいということではないの?
というか、そもそも、people と profile が関連づけられていれば、profileコントローラーは不要だと思うが
(よく読み込まずに答えたから、見当違いだったらすまん)

221:nobodyさん
09/01/09 09:02:36
DBアクセスオブジェクトは一つしか作られないよ

222:nobodyさん
09/01/09 09:03:29
目的がパフォーマンスならセッションに入れる意味はあまり無いんじゃないの?
DBから読むかファイルシステムから読むかの違いでしょ


223:nobodyさん
09/01/09 09:05:38
どういうDBアクセスが発生してるか気になるならデバッグモードにすればいい

224:nobodyさん
09/01/09 10:12:30
>>215は、Model とController の対応が間違っているということはないの?
Userモデル(Personモデル)
Usersコントローラー
があって、

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

質問を読むと、根本的な問題のような気がする
(Peopleモデルというのがイメージできないし、Personsコントローラーがあれば、Profilesコントローラーは要らなそうな気がする)

225:215
09/01/09 11:09:25
すんません
例は適当です…

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

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

この場合、コントローラーごとにファイルに何回もアクセスする
ということでいいんでしょうか?
(今のところ、データベースは一切使いません。)

226:215
09/01/09 11:16:27
ファイル(product)
 商品名:text
 価格1:select
 価格2:select
 (価格の数は可変)

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

モデル
product
 price

コントローラー
 productController
priceController

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

コントローラーを分けているのは、もう少し複雑で、他のデータなども混じるためです
うまく説明できない・・・・

227:215
09/01/09 11:23:38
実際にはpriceにも、価格専用のフォーム生成のためのデータが入ってます(これも可変)

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

うまく説明できないのですが、
とりあえず、コントローラーまたぐならファイルに毎回アクセスしろってことですかね

228:nobodyさん
09/01/09 11:37:58
コンポーネント使えよ

229:nobodyさん
09/01/09 11:38:29
いやむしろエレメント使えよ

230:215
09/01/09 11:54:38
>>228

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

どのみち、普通にやるとなれば毎回ファイルアクセスは発生ですね
後で外部クラス化を考えることにします…

231:nobodyさん
09/01/09 12:05:39
なんでビヘイビアになるんだ?
コンポーネントかエレメントで出来るだろ

232:nobodyさん
09/01/09 12:12:39
>>225 から想像するに、通常DBに保存するデータを、DBの代わりにファイルに保存しているということかな?

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

ProductとPriceがHasManyの関係にあるのなら、なるべくDBを使うべきでしょう。
(もしかしたらHABTMかもね)

233:nobodyさん
09/01/09 12:15:46
いやいやそれ以前に
フォーム生成処理を共通化したいのならエレメントかコンポーネントだろ

234:nobodyさん
09/01/09 12:19:41
で、パフォーマンスを気にするのであれば、ビューキャッシュか、CacheEngine使うということで良いと思うが。

235:nobodyさん
09/01/09 12:20:22
あ、>>234は、>>232のつづきね

236:nobodyさん
09/01/09 12:28:58
>>233
たぶん、>>215が気にしているのは、「毎回DBやファイルを読み込むのが気持ち悪い」ということかなと。
だとすると、viewの問題ということなんだけど、そもそもModelやControllerの設計がまずいとキャッシュも使えないからね。

237:nobodyさん
09/01/09 12:34:01
PHPで常駐プロセスにデータを預けておくと言う事は出来ない。
DBに記録する以外は。

Cakeのキャッシュなんて所詮はファイルシステムから読み出してるに過ぎないから
それ以上の高速化は無理。

そもそもやろうとしてる事がエレメントを使って書くべきものに思えるが。

238:215
09/01/09 12:41:11
>>232

はい、だいたいそんな感じです

いずれ、ユーザー固有のデータはDBに入れるつもりですが、
今回の質問のデータはシステム全体で共通のデータです
ただ、それがユーザーの入力によって変わる(切り替える)ことがあると。


>>233

その共通化の元となるデータをファイルで読み込むんです…
ユーザーの入力に応じて変化します。
そういう可変データがたくさんあるんで…


ざっとマニュアルを見た感じでは、DataSource?を自分で作ればよいのかな、とも。
とりあえずは、モデルで処理して、後々外部クラスとかにまとめてみることにします

ありがとうございました

239:nobodyさん
09/01/09 12:43:19
速い<遅い
ビューキャッシュ<<<<エレメントキャッシュ<何もしない

ビュー自体をキャッシュできるならするべきでしょう

240:nobodyさん
09/01/09 12:44:03
>>238
ユーザの入力はGETなりPOSTなりで来るんでしょ?
エレメント内でそれを見て動作切り替えたらいけないの?

241:215
09/01/09 12:45:58
>>237

フォームの個数もパターンも無数にあるんですが、エレメントでできるんでしょうか?
いや、実際の出力はエレメントでやるんですが、
"どのエレメントをどの順番で何個出力するか"のデータが、今回のファイルに保存されているんで…

そのデータはモデルで読むか、外部クラス化するかですよね。
で、そのデータをコントローラー間で使い回したかったんです。

イメージとしては、XMLからのフォームの自動生成、
しかも、それがユーザーの入力に応じて変わると、いう感じで、
その元となるXMLを保持しておけるのかな、と。
(データファイルはいずれXML化するつもりです)

外部クラス化とかするしかないですよね。
モデルに書くと毎回読みにいくしかなさそうということで。

242:251
09/01/09 12:48:25
>>240

POSTで来るんですが、入力段階(画面)が数回あって、
ユーザーの入力値と順序によって、生成するフォームのパターンが変わるんです…

243:nobodyさん
09/01/09 12:49:04
フォームパターンそのものをユーザにアップロードさせたりするのか?
そうでないならエレメントにコードを置かずファイルから読み込もうとしてる理由が分からん。


244:251
09/01/09 12:50:10
すいません、途中で送信してしまった…

しかも、画面は自由に行き来可能で、ある画面で入力値を変えると、
他の画面のフォームも再構築する必要があると…

とりあえず、一回全部組んでから効率化は考えることにします…

245:nobodyさん
09/01/09 13:49:09
formヘルパーってDBなしだと使えない?(汗

246:nobodyさん
09/01/09 14:01:28 I5IAXkbt
URLリンク(book.cakephp.org)

create()のパラメータ modelって、モデル名じゃなくてコントローラー名だよね?
model名入れててエラーになった orz

247:nobodyさん
09/01/09 15:22:27 I5IAXkbt
質問だけどセッションってモデルじゃないの?
コントローラでいじるのに違和感があるんだけど
モデルじゃセッション使えないよね?

248:nobodyさん
09/01/09 15:23:23
ああSession自体がモデルなんか
すまそ

249:251
09/01/09 18:31:13 I5IAXkbt
ちょっと、追加で質問なのですが…

例えば、商品のデータを編集する処理を作る場合、
商品名を編集する画面と価格を編集する画面を分けたいと思ってます

この場合、コントローラーもわけたほうがいいんでしょうか?
(もちろんモデルは一つ(Product)になるかと思いますが)

というのも、コントローラーを一つにすると、

products/name/change
products/prices/delete
products/prices/change
products/prices/delete

のようになり、URLのアクション部分が実際の処理とは違う形になってしまい、
アクション側でもパラメータでいちいち処理を分岐させる必要があります

そこでコントローラーだけを二つにわけて、

products/change
products/delete
prices/change
prices/delete

のようにしようかと思うんですが、よくないですかね?

どうでもいい質問かと思うんですが、できればCakeの流儀に合わせたいので…

250:nobodyさん
09/01/09 18:39:40
>>249
change_priceと言う形にするか
change/priceじゃないの

例えばその商品名と価格の編集フォームがほとんど同じなら
change/priceの形にした方が良いよね

251:nobodyさん
09/01/09 19:07:30
>>249
action名は add / edit / delete にしましょう
で、>>250のように /products/edit/price とするか

自分だったら /products/edit にして、渡されたデータ($this->data)を見て、内部で分岐するかな
(分岐の必要があれば、だけど)

252:nobodyさん
09/01/09 19:10:02
いずれにせよ、何かをbakeして、基本形を身につけたほうがよさそうだけどね

253:215
09/01/09 19:33:24
名前間違えてましたw

>>250
>>251

あー、やっぱりコントローラーは一つにまとめたほうがいいですか
対象は同じですもんね
changeにするなら、ルーティングで変えたほうがよかったですね

型どおりのはいくつか作ってみたんですが、
まだ応用までいきついてません

参考になりました
ありがとうございます

254:nobodyさん
09/01/09 23:29:16
俺ならedit_name edit_priceとアクションメソッドを分ける

255:nobodyさん
09/01/10 16:34:04 tnQWYP/T
Securityコンポーネントの使用時に、
routes.phpでルーティングを変えるとエラーになるんですが、バグですか?

/item



'action' => 'cahnnel', 'action' => 'index'

とかに割り振ると、コントローラー?を誤認するのか404エラーになっちゃいます

256:nobodyさん
09/01/10 16:34:56
cahnnel は channel の間違い…

Securityコンポーネント使うと、うまくルーティングできないよ…

257:nobodyさん
09/01/10 17:31:03
>>255
俺もそれ引っかかったなあ。ベタにアクションのURLを書いちゃったけど。


258:nobodyさん
09/01/10 17:36:37
>>257

やっぱりですか…

できればルーティングしてるURLに合わせたいんだけど、
どうすればいいのかさっぱり orz

259:nobodyさん
09/01/10 17:39:10
>>258
つチケット

260:nobodyさん
09/01/10 17:48:22
これできないと、ちと困るんだけど、、、

自前で書くしかないのか
意味ねー

261:nobodyさん
09/01/10 17:59:27
コントローラー見に行かないようにしたらいいんじゃね

262:nobodyさん
09/01/10 18:00:17
まあいずれにせよSecurityコンポーネントはちょっと実用に耐えない
節々にバグがあって、
他の機能と競合してどっちか使えないとか多い

263:nobodyさん
09/01/10 18:07:23
$form->input('name',array('type'=>'submit'));

これでなぜかTEXTAREAになるのは俺だけ?

264:nobodyさん
09/01/10 18:46:39
>>263
$form->input('name',array('type'=>'submit'));
1.2finalでオレもTEXTAREAになった。そんなもんだろう。

聞いちゃいないだろうけど普通のsubmitの書き方
$form->end('了解');

$form->submit('了解');

265:nobodyさん
09/01/10 19:00:31
end('了解');の「submit」ボタンの頭に半角20個くらいの空白を入れるおせっかいをして
くれるんだけど、この頭の空白をなしにするのは/webroot/css/cake.generic.cssをどう
変更すればいいの?

input[type=submit] {
  display: inline;
  font-size: 110%;
  padding: 2px 5px;
  width: auto;
  vertical-align: bottom;
}

266:nobodyさん
09/01/10 19:02:23
>>265
それはCSSじゃなくてHelperのしわざだろ

267:nobodyさん
09/01/10 19:11:23
>>266
thanks. ヘルパーのしわざですか。それなら仕方ない。ほっときます。

268:nobodyさん
09/01/10 19:13:59
>>261

それじゃ意味ないでしょう…

この辺りがFW使うメリットなんで、早くなんとかしてほしいね

269:nobodyさん
09/01/10 19:35:42
>>268
コンポーネントの機能としてコントローラを見るかどうかって選べなかったっけ?

270:nobodyさん
09/01/10 19:36:40
>>269

allowedControllerプロパティ?
それなら既にやってる orz

なんかうまい方法ないかな
ちょっとソース見てみたけどさっぱりだ orz

271:nobodyさん
09/01/10 19:38:00
$this->Model1->find('all',array('contain'=>array(
'Model2'=>array('conditions'=>array( ... )),
));

みたいにやると、Model2のコンディションに合致したModel1だけが返るんじゃなく
合致してないものも返ってくるよね?
合致した物だけにするにはどうすればいい?

272:nobodyさん
09/01/10 20:26:03 tnQWYP/T
例えば

dvd
cd
mp3

っていうモデルがあったとしたら、コントローラーはそれぞれ作る?

それとも

audio

みたいに一つにまとめて、そっから各モデルを呼びだす?

処理的に似たようなのが多いんだけど、
それでも分けるのが普通?

273:nobodyさん
09/01/10 20:27:45
コントローラはモデルと1:1にする必要性なんてないでしょ
当然audioでまとめる

274:nobodyさん
09/01/10 20:30:14
Cakeって世界で一番使われてるFWとかいうけど微妙にライブラリが充実してないことない?
他のFWもこんなもんなのかな

275:nobodyさん
09/01/10 20:37:41
>>273

だよね?
ちょっと不安になったんで聞いてみた

ありがと!

276:nobodyさん
09/01/10 20:38:48
>>274

ライブラリはそこそこだと思うけど、バグが多い…

277:nobodyさん
09/01/10 20:58:25
>>266  >>267
> それはCSSじゃなくてHelperのしわざだろ
お~い。ウソだよ。cssだよ。
form div.submit {
  border: 0;
  clear: both;
  margin-top: 10px;
  /* margin-left: 140px; */
}
これでsubmittボタンの頭の空白はなくなるよ。

278:nobodyさん
09/01/10 21:22:36 tnQWYP/T
ルーティングだかコントローラー名を規約から変えると
formヘルパーの吐く action属性もおかしくなるな

279:nobodyさん
09/01/10 21:26:59
コントローラー名を変えたときっぽいな

Postコントローラーなのに

<?php echo $form->create('Post', array('action' => 'edit')); ?>

としても、 action="posts/edit" になりやがる

なんでこんなバグだらけなんだよ…

280:nobodyさん
09/01/10 21:30:15
ちょっと本体のコード読むと分かるけど
汎用化すべきところも各所で独自実装してるからね
ライブラリごとの整合性や競合といった問題が出てくる

281:nobodyさん
09/01/10 21:33:55
FWなのに、ソース見て、結局オーバーライド
意味ねーよ…

1.2finalでこれでしょ?

もうちょいなんとかしてほしいなぁ

282:nobodyさん
09/01/10 21:38:22
割と平凡な機能しかないサイトでもそうなるよね
Securityコンポーネントもそうだけど
汎用的な機能すらバグ持ちかつ仕様がおかしかったり機能不足だったり

他のFWはどうなんだろうなあ

283:nobodyさん
09/01/10 21:44:53
いや、ほんと平凡なサイトなんだけど、バグありすぎだよ…
ぱっと見はたしかに早いんだけど、使えるレベルに引き上げるのに相当苦労する気が

とりあえずformヘルパー使うのやめて直書きする
formヘルパー拡張してトークン出力メソッドだけ使うわ orz

284:nobodyさん
09/01/10 21:47:38
そうそう
んで、ライブラリ類継承しようとしても、コアライブラリへのパス定数ないのね

なんかいまいち甘いよね
ぱっとみ手軽っぽくは見えるんだけど

285:nobodyさん
09/01/10 22:00:30
ありゃ formHelper継承して $helpers = array('MyForm') しても
ビューで $myform 使えないぞw

Helperクラス継承せんといけんのか?
拡張性低すぎだろ…

286:nobodyさん
09/01/10 22:13:06
Myform extends FormHelperにしたら
$myformで参照できたわ

MyFormだと$my_formでも$myformでも参照できない
ヘルパーには大文字一つしか使えないんか?

なんでこんなとこで苦労しなきゃいけないんだよw

287:nobodyさん
09/01/10 22:14:07
ビューにデフォルトでセットしてるのは
コントローラのほうじゃないの

288:nobodyさん
09/01/10 22:14:53
Cake使ってるとコアのコードにハックする事が多すぎるんだよな


289:nobodyさん
09/01/10 22:15:14
あ、 $myForm で参照できたわ

どういう命名規則だよ…

キャメルケースは _ だろ…ファイル名もそうだし

なんか一気にいやになってきたなー

かといって他にあんまりいいのないんだよな

290:nobodyさん
09/01/10 22:16:55
>>287

ちゃんとやってるよ

my_helper.php:
MyFormHelper extends FormHelper

コントローラー:
 $helpers = array('MyForm');

んで、ビューでは$myFormで参照したらいけた

ヘルパーのクラス名だけ命名規則がおかしいだろ…

291:nobodyさん
09/01/10 22:25:05
自前でトークン出力してみたが、
ルーティングしてるとSecurityコンポーネント使えないな

ほんとにFWなのか疑問に思ってきたぞ…

292:nobodyさん
09/01/10 22:58:06
>>279の件は

<?php echo $form->create('Post', array('url' => '/post/edit')); ?>

でurl使えばいけそうな感じなんだが、
Securityコンポーネントをあきらめてはずしたら、セッションが使えなくなった
Sessionコンポーネントもヘルパーも使ってるのに

だんだん頭にきてきた

293:nobodyさん
09/01/10 23:05:43
あ、自分がミスってたわw

formヘルパーの吐くaction属性の件は

<?php echo $form->create('Post', array('url' => '/post/edit')); ?>

でうまくいった

もっともSecurityコンポーネント使えない問題は残るが…
もうちょいバグ少ないFWないのかね…

294:nobodyさん
09/01/10 23:14:50
バグがあるなら、開発者に連絡しとけよ

295:nobodyさん
09/01/10 23:34:57
そこまで使い込んでないし
使い続けるかわからんので、常連さん、お願いしますねーw

296:nobodyさん
09/01/10 23:42:11
まぁチケットあげるにしても原因がわからんとなぁ

Securityコンポーネントとルーティングつかってるときに
404エラーになる原因の目星ある?

コントローラー名かHTTP_REQUEST関係あたりかな
とは思ってるんだけど、目星つかないとなぁ

297:nobodyさん
09/01/11 00:25:09
コントローラで共通して使うような関数はコンポーネント
ビューで共通して使うような関数はヘルパ
に実装すると思いますが、
コントローラでもビューでも使うような関数はどこに実装するのが
cakephp のやり方ですか?


298:nobodyさん
09/01/11 01:06:51
【質問】$form->input()のtextareaの幅(cols)の変更が出来なくて困ってます。
$form->input('honbun', array('type'=>'textarea', 'cols'=>'10', 'rows'=>'5');
行数(rows)は指定どおり変化してくれます。
cake.generic.cssのどこかを修正すれば良さそうな所まで調べましたが、具体的に
どこをどう修正すれば良いかわかりません。よろしくお願いします。

299:nobodyさん
09/01/11 01:38:19
>>297
普通のライブラリならvendersにでも入れて
App::importでいいんじゃね

300:nobodyさん
09/01/11 03:35:55
規約からちょっとはずれると
途端におかしな動作しだすな、このフレームワーク…

301:nobodyさん
09/01/11 03:59:04
Formヘルパー使うとHTMLソースが一行続きになる orz

302:nobodyさん
09/01/11 08:53:45
stable出ても、まだバグがあるの?
というか、今までのバグは本家に報告してないの?

303:nobodyさん
09/01/11 09:24:13
日本語公式サイトに報告フォーム作るくらいはすべき

304:nobodyさん
09/01/11 12:04:42
チケット出しておけばたいていのバグはなおしてくれるのに
ここで文句ばっかり言ってるやつってなんなの?

305:nobodyさん
09/01/11 12:23:51
使い続けるかもわからない上に
原因特定できないのにチケット出す意味ない

その辺は日本公式(?)がうまく立ち回ってもらいたいところ

306:nobodyさん
09/01/11 12:36:15
再現手順さえあればチケット出せば良いだろうけど
英語書くの遅いから嫌だ

大体、そんな苦労しなくても最初から使えるFWを使いたい


307:nobodyさん
09/01/11 12:38:18
使い始めたばかりでバグかどうかも特定できていないのに騒ぐやつは無視で良い

308:nobodyさん
09/01/11 13:11:03
手順書いてるんだからバグかわかるだろw

それとも新参者ばかりなの?w

309:nobodyさん
09/01/11 15:49:46
この流れひでえなw

310:nobodyさん
09/01/11 15:58:13
コアに手入れたりすると
別のエンジニアが保守し辛くなるし
FWの良さがなくなる

311:nobodyさん
09/01/11 18:00:58
バグだらけなのがCakePHPの特徴だろw
1.0正式版が出たときもそうだったぜ。
そこを自分で何とかするのがBaker。

文句いう人は他のFWを使えばいいと思う

312:nobodyさん
09/01/11 19:36:58 e07paZUF
2年後くらいにcakeがまともになってたらまたきます><

313:nobodyさん
09/01/11 20:09:38
全然オブジェクト指向じゃないしなあ

314:nobodyさん
09/01/11 21:14:41
PHP4対応なのになんでオブジェクト指向だと思ったの

315:nobodyさん
09/01/11 21:53:49
コード分ければ出来るじゃん

316:nobodyさん
09/01/11 22:57:27
クラス使われているんだからオブジェクト指向であってるよ。

317:nobodyさん
09/01/12 00:44:27
クラス使ってるからオブジェクト指向(笑)

318:nobodyさん
09/01/12 08:02:17 JmkPO6xq
PHP自体が関数指向で配列をぶん回すタイプの言語だからな
オブジェクト指向言語の基本的な要素は持ってるけど
実際にオブジェクト指向プログラミングをやろうとすると苦労が多い
cakeのapi設計もrailsからパクった部分はオブジェクト指向的だが、cake拡張部分は関数っぽくなてる


319:nobodyさん
09/01/12 08:48:04
Railsをパクるだけにしていてほしい

320:nobodyさん
09/01/12 09:04:16 3zI01Xa5
またまたバグ発見

formヘルパーで、フィールド名 (field)に数字を渡すと、
0のときだけ中身が消える

$form->text('0');

とか

empty()とかでしかチェックしてないっぽいな
string型にキャストしても駄目だし

321:nobodyさん
09/01/12 09:05:10
$form->text('data[0]');

で動けばいいが、動かないし

322:nobodyさん
09/01/12 09:17:19
appごとにコアのファイルをオーバーライドしないと使えないな
appディレクトリの意味ねー

323:nobodyさん
09/01/12 09:38:56
なんじゃこりゃ
appディレクトリ側で /view/helper.php の置き換えできないのか?

324:nobodyさん
09/01/12 09:42:41
URLリンク(cakephp.jp)

325:nobodyさん
09/01/12 09:44:45
とん

ってまじかよ

helper.phpにバグあるんだが、直接編集しかないのかよ
FWのはずがコアのバグつぶしにすり替わって、全然進まない

326:nobodyさん
09/01/12 09:55:09
とりあえず、バグっぽいとこ教えとくから、常連さんはチケットでもあげといてくれ
俺はたぶん、次回はもうCakeは使わない

 $form->text('0');

とかやると、0のときだけ

 <inpute name="data[]" ~ />

みたくなる

helper.phpのsetEntity()で、view->fieldにセットしてるとこが問題ぽい

327:nobodyさん
09/01/12 11:06:01
>>326
どうしてコアに手を入れてまでフィールド名を"0"にしたいのかがわからない。

328:nobodyさん
09/01/12 11:48:59
>>327
相手すんなって

329:nobodyさん
09/01/12 11:51:38
>>327

手を入れたいというより、HTMLを自由に組みたかっただけなんだけどね
んだけど、規則からはずれると不具合がでまくる


ちなみに、

>helper.phpのsetEntity()で、view->fieldにセットしてるとこが問題ぽい

は $view->model の間違いかも

かなり深いところに原因があるっぽくて、結局、あきらめて

 $form->text(null, array('name' => 'data[0]'));
 $form->text(null, array('name' => 'data[item][0]'));

とかするようにした

コンポーネントとか使う場合に、また問題がでるかもしれないけど

330:nobodyさん
09/01/12 11:54:41
DB使わないモデルや、
他のシステムと連携する場合に、数値の配列形式の方が扱いやすいから

まぁ、html手打ちでもいいんだけどさ
ヘルパーとかが規約と強く結びつきだなと思った

331:nobodyさん
09/01/12 12:03:43
質問です

データ追加フォーム -> データ追加 -> トップ画面にリダイレクト

としようと思うのですが、アクション名に悩んでます

add() -> ??? -> index()

???の部分をどうしようかと…

add()で分岐してもいいんですが、分けたいのですが、
なにかいい名前ありませんかね?

確認画面とかなら add_confirm() にするんですが。

332:331
09/01/12 12:05:43
>>331

実際は add_item() という名前なのですが、
追加するだけのアクション名をどうしようかなと、いうことです

add_???_item() か ???_item() で
なにかいいアクション名ありませんか?

333:331
09/01/12 12:07:32
連投ごめんなさい…

update_item() とかどうですかね?

add_item()とedit_item()から共通で使えそうですし

334:nobodyさん
09/01/12 12:29:53
update_itemでいいんじゃね?

335:nobodyさん
09/01/12 16:21:35
ここでバグバグ言われてるのって使い方解ってないだけなんじゃないのか

336:nobodyさん
09/01/12 16:24:13
じゃあどう使えば良いのか説明しろよ

337:nobodyさん
09/01/12 16:54:47
URLリンク(book.cakephp.org)

338:nobodyさん
09/01/12 16:57:12
そんなところは熟読した上での話だと思うが

339:nobodyさん
09/01/12 16:58:39
本家に報告したくないってのはバグじゃなくて
自分の使い方がおかしいという自覚があるからに他ならないだろ

340:nobodyさん
09/01/12 17:08:56
再現方法書いてるのにバグかどうかもわからんの?

それとも、規約通りにしか作れない初心者しかいないのか?

341:nobodyさん
09/01/12 17:09:25 JmkPO6xq
バグではない
単にcakeの開発者が意図した使い方からはみ出ると途端に挙動が変になるだけ

342:nobodyさん
09/01/12 17:10:38
>>341

www

それならバグではないかもなwww

そうか、バグじゃないのか~
使えないFWだな~

343:nobodyさん
09/01/12 17:11:01
フレームワーク使ってて規約はずれたら動かなくなったってそっちの方が初心者だろ

344:nobodyさん
09/01/12 17:11:49
機能不足、仕様が変、というのが正しいな
バグと言っても良いレベルのものもたくさんあるが
組み込みで提供されてる機能が競合するのはバグと言っても良いだろ

>>339
偏屈こねる前に10回くらい読み直せ

345:nobodyさん
09/01/12 17:16:56
いやだから本当にバグだと思うなら本家に報告しなよ

346:nobodyさん
09/01/12 17:17:09
>>343

そうだね

公式ドキュメントの半分以上は無視したほうがいいね!
設定もなんにも変えないほうがいいね!

www

347:nobodyさん
09/01/12 17:20:07
報告したところで今やってる案件には意味ないし
次は絶対に使わないから
Cakeの開発スピードからして見つけたバグ全部修正されるのに半年はかかりそうw

348:nobodyさん
09/01/12 17:20:48
間違えてCakeなんかを使ってしまう人を増やさないようにしないとな

349:nobodyさん
09/01/12 17:21:25
>>347

きみは別人だろw

きみもいやになったのか?

350:nobodyさん
09/01/12 17:21:58
1.2が公式にリリースされて危機感を持っている奴がいるらしいな
どのフレームワークの信者だ

351:nobodyさん
09/01/12 17:23:00
>>347

次なに使うの?

352:nobodyさん
09/01/12 17:23:19
>>349
別人?なにを言ってるんだ
おまえは誰か特定の相手に話しかけてるのか?こんな場所で?

俺は今回の話題ではCakeはバグ大杉使えないFW派だよ

353:nobodyさん
09/01/12 17:23:30
まぁこれからCake使うやつに助言

規約からはずれたことはするな
でも、それじゃあ大した物は作れない

組み込みのライブラリは使うな
全部自分で一から書け

FW使う意味ねーw
まぁぱっとみ使いやすいとは思うんだけどね
ここまでバグ多いとな…

354:nobodyさん
09/01/12 17:23:49
>>351
SAStrutsかDjango

355:nobodyさん
09/01/12 17:25:25
ちなみにCakeはオブジェクト指向じゃないって話あったけど
問題なのはAPIじゃなくてコアのコード内部なんだよね
ハックするのも一苦労

あのスパゲッティな有様じゃCakeの将来は危ういよ

356:nobodyさん
09/01/12 17:26:23
というかPHPのFWはまともなのがないな

Yiiとかってどうよ

357:nobodyさん
09/01/12 17:54:39
>>354
レンタルサーバで動かす気ない人か

358:nobodyさん
09/01/12 17:55:17
PHPでオブジェクト指向ってもっさりフレームワークの登竜門だろw

359:nobodyさん
09/01/12 17:58:23
Cakeは既にあらゆるフレームワークの中で最も重い部類

360:nobodyさん
09/01/12 18:05:28
で、なんかいいのないのか?

兄弟とか言われてるCIは、命名規則に統一性が乏しいし

361:nobodyさん
09/01/12 18:06:17
>>359

362:nobodyさん
09/01/12 19:32:11
でも、世界でsymfony、zend+frameworkを抜き、最も注目されているPHP FWという事実は
どう理解すればいいの?
URLリンク(www.google.com)

363:nobodyさん
09/01/12 19:35:28
PHPのユーザ層が重視するのは簡単に導入できる事と
HOWTO情報の多さだからでしょ
使ってる人たちはCakeしか使ったことないんじゃないの

364:nobodyさん
09/01/12 19:40:29
PHPったって殆どの人は楽天やGREEを作る訳じゃないんだから
重さって気にする意味無いよね
重さで言えばRoRとか死ぬほど重いんだし

365:nobodyさん
09/01/12 19:43:30
重いのは誰も問題にしてないけどね

366:nobodyさん
09/01/12 20:59:16
すみません>>298なんですが
$form->input('honbun', array('type'=>'textarea', 'cols'=>'10', 'rows'=>'5'));
で横幅のせまいtextareaを表示したいのですが、何かヒントありませんか?

367:nobodyさん
09/01/12 21:10:40
ところで、セッションってモデルだと思うんだが、
なんで、モデルで使えないのかね

368:nobodyさん
09/01/12 21:13:12
セッションはモデルじゃねーよw

369:nobodyさん
09/01/12 22:33:10
>>366
cake.generic.css
input, textarea {
width: 100%; ←これ?
}

370:nobodyさん
09/01/12 22:57:16
>>369
app/webroot/css/cake.generic.css
input, textarea {
  /* width: 100%; */
}
width: 100%をコメントにすることで
$form->input('honbun', array('type'=>'textarea', 'cols'=>'80', 'rows'=>'5'));
textareaの横幅(cols)設定が有効になるようになりました。ありがとうございました。
合わせて、
$form->input('meado', array('type'=>'text', 'size'=>'50'));
のsize設定も有効になり二重の喜びです。ありがとうございました。

371:nobodyさん
09/01/12 23:07:20
>>368

そうか?
データのやりとりするんだから、モデルだと思うけど?
まあ場合にもよるだろうけど

372:nobodyさん
09/01/12 23:11:10
セッションはモデルじゃないよ
データを永続化するのがモデルであって
セッションってのはデータでhiddenで引き回してるのと同じようなことだから

373:nobodyさん
09/01/12 23:33:55
なんでこんな使いにくくてバギーなcakephpが人気あるんかね?
たしかに、とっつきやすさはsymfonyやzendよりも上だと思うが
それだけなんだよね。
PHP使ってるやつはプログラム自体初心者が多いんだろね。
チュートリアル作って終わりなやつが多いんじゃね?

374:nobodyさん
09/01/12 23:39:43
玄人の言語で作れば?

375:nobodyさん
09/01/12 23:44:35
確かにPHPを使う意味なんてないんだよね
フレームワークを使うほどの開発になった時点で

376:nobodyさん
09/01/12 23:50:55
殆どのものはレンタルサーバで動かすんだからPHPかPerlじゃないと動かんわね
専用サーバならJavaにした方が楽だし

377:nobodyさん
09/01/12 23:52:44
>>375
いいこというね~
PHPが最高に輝く使い方だね。

378:nobodyさん
09/01/12 23:56:14
好きな言語すら入れられない環境の方がかなりマイナーだと思うよ
個人だろうと企業だろうと普通はその程度の自由度はある環境でやってるよ

379:nobodyさん
09/01/13 00:36:35
企業で大規模にやるような開発でCakeやRoRみたいなのは使わないと思うよ
レンタルサーバで動かすCMSとかDBのCRUDがメインのシステムならぴったりだけどさ

380:nobodyさん
09/01/13 11:22:28
セキュリティ面のバグの多さからWWWに出す時点でCakeは良くない

381:nobodyさん
09/01/13 11:48:16
>>379
TwitterやCookPad、楽天でもRoRを使ってるのすら知らんのか。

そういえばここCakePHPスレだったなw

382:nobodyさん
09/01/13 13:31:48
>>379
> DBのCRUDがメインのシステム

ほとんどの会社で必要とされるシステムって、それだぞ?w

383:nobodyさん
09/01/13 15:39:41
RoRを覚えるのが面倒というのもあるな
Ruby動かせないときもあるしなあ

384:nobodyさん
09/01/13 21:53:50
>>382
実際作ってみると業務システムのパターンは極めて限られていることがわかるよね。

385:nobodyさん
09/01/13 22:27:13
そうでもないけどな
データ登録以上にワークフローと帳票が多い

386:nobodyさん
09/01/13 22:33:33
ワークフローと帳票といっても
結局はCRUDだしなぁ。

387:nobodyさん
09/01/13 22:58:25
可哀想な人が来たな

388:nobodyさん
09/01/13 23:03:28
>>387
その人、いらっしゃ~いw

389:nobodyさん
09/01/13 23:58:47
パターンは極めて限られていると見積もったCRUDシステムを
作るたびに炎上させる優秀な技術者様達

390:nobodyさん
09/01/14 13:24:41
1つのテーブルにいろいろな画面(コントローラ)からアクセスする場合、
モデルは、テーブルと対になるようにして1つのモデルにするのがよいか、
それともコントローラと対にするか、どちらが一般的でしょうか?

例えば受注テーブルがあり、
あるコントローラでは受注数を表示するのがメインの処理で、
また別のコントローラでは受注金額を表示するのがメインの処理、
のような場合、受注テーブルのモデルを1つ作成するのか、それとも
コントローラ毎に作るのか…。

391:nobodyさん
09/01/14 13:42:37
おまえはMVCの基本についてすべて一つ一つt質問するつもりか

392:nobodyさん
09/01/14 13:44:19
>>390
無論、モデルはひとつ。

393:nobodyさん
09/01/14 13:45:45
>>390
コントローラーってのは要するに人がプログラムにアクセスする時のURLなわけよ。
だから人から見てわかりやすけりゃ良いわけで、モデルと対になってる必要なんて無い。
ってのが俺の考え。
逆に同じテーブルにモデルがいくつもあったらプログラム作る時に混乱するんじゃない?
それぞれ特殊なfindメソッドでも作ってるんなら別だけど。

394:nobodyさん
09/01/14 14:52:22
サブホストや接続IPによってDB接続先を変える方法知ってる?

395:nobodyさん
09/01/14 14:53:24
やっぱりモデルは1つにまとめるべきなんですね。

今回質問したのは、>>393
「それぞれ特殊なfindメソッドでも作ってるんなら別だけど。 」
がまさしくそれで、取得対象のテーブルは1つなんですけど、
そのデータの取得方法や見せ方が全然違って、ただ当然コントローラは
個別に存在するので、
1つのテーブルを元にその見せ方毎にモデルを作りモデルの中で、
var $name = 'table'; としておきつつ、
それぞれの取得するためのメソッドを作成していこうかな、と思い作りはじ
めた矢先、取得テーブルは1つなので、そのモデルに全部メソッドをまとめた
ほうがいいのか?と迷いはじめてしまい…。

テーブル単位にメソッドをまとめるのか、機能毎にモデルを分割するのか…。

まだまだ精進がたりませんね、大変すみませんでした。

396:nobodyさん
09/01/14 15:08:08
>>394
URLリンク(d.hatena.ne.jp)

397:nobodyさん
09/01/14 15:11:54
>>395
findメソッドは、カンタンにオーバーライドできる

テンプレの↓参照
CakePHPを使ったMVC設計のベストプラクティス - Sooey
URLリンク(www.sooey.com)


398:nobodyさん
09/01/14 15:49:49
>>395
>テーブル単位にメソッドをまとめるのか、機能毎にモデルを分割するのか

一律的な分け方をすると後で縛りがきつくなるから
機能目的によってバランスよく分別した方がよい



399:nobodyさん
09/01/14 15:51:45
むしろ厳密に言えば両方違う
2モデルを1つのテーブルに格納することが可能だから

400:nobodyさん
09/01/14 15:59:26
テーブルやモデルの対に関して議論することがアホらしいw
後退的議論で無意味


401:nobodyさん
09/01/14 16:02:02
どんなケースも可能だから
何を作るか?どんな機能を作るかを前提してから
モデルとテーブルの対の議論をしないと
抜け穴からのもぐら叩き合戦になるよ

402:nobodyさん
09/01/14 20:32:29
1.1と1.2って大分違いますか?
ガイドブック買ってやってみたけど早々に躓いて
しまいました。

403:nobodyさん
09/01/14 21:28:26
1.1と1.2は大分違うと思う。
ガイドブックで1.2で始めるのは初心者にはつらいと思う。
「CakePHP徹底入門」は1.2で書いてあるから1.2入門者にお勧め。
ガイドブックも良著だから、1.2の入門が終わってから読み直す
ことを勧めるなあ。

404:nobodyさん
09/01/15 04:27:43
「CakePHP徹底入門」のamazonのレビューがよくないというか一人しか書いていない
それも星一つ。自分は少し立ち読みしただけだから何とも言えないが・・
ガイドブックは評価が高いけど


405:nobodyさん
09/01/15 12:14:25
ぶっちゃけ、公式Webの情報で十分なのがPHP界隈の良いところだとおもうんだが。

406:nobodyさん
09/01/15 18:02:47
>>389
> パターンは極めて限られていると見積もったCRUDシステムを
> 作るたびに炎上させる優秀な技術者様達

なんで炎上させないといけないんだよw
お前の会社か?それ。

407:nobodyさん
09/01/15 19:16:12
viewのキャッシュする直前にキャッシュする対象をいじりたいんだけど
なんかいい方法あるのかな

408:nobodyさん
09/01/15 23:13:14
SQLiteとMySQLを同時に使うのって可能?

409:nobodyさん
09/01/15 23:16:50
可能。

410:nobodyさん
09/01/16 00:17:54
なにそれ、どうやんだ?

411:nobodyさん
09/01/16 00:21:09
DATABASE_CONFIGに複数設定して切り替えるだけだろ

412:nobodyさん
09/01/16 01:45:44
そりゃだるいな

413:nobodyさん
09/01/16 16:24:26
>>412
モデルに使用する、データベースを指定する以外で、
だるく無い方法があるのか?

414:nobodyさん
09/01/16 17:30:29
>>413
アホはほっとけ

415:nobodyさん
09/01/16 18:16:16
Model::$validateで値そのものを利用して'message'を動的に設定ってできますか?
'この番号は使用できません'って出力してdata[]にそのまま残すのも間抜けなので、
data[]を使用した'message'を設定してdata[]消したいんですけどよく分かりません

通常ルールでのチェックも行っているので、View側でエラーメッセージチェックしてから
特定のエラーメッセージのときだけdata[]からメッセージ作成して
input value= にセットされないように処理するって何か変な気がしたので

416:nobodyさん
09/01/16 18:30:22
メソッド内でうまいことエラーメッセージを書き換えられればいいんだろうけど

説明下手なきがするのでやりたいこと
入力フォーム→結果の表示フォームとエラー
[ab]→[ab]数字で入力しやがれ
[25]→[25]25は使えねえぜ

417:nobodyさん
09/01/16 21:29:52
emailコンポーネントって文字化けするよね
しかも普通にPHP標準のメール送信機能使うと化けないケースで化けたりするから困る
また組み込みライブラリの糞ソースを修正する作業が始まるのか・・・

418:nobodyさん
09/01/16 21:37:31
emailコンポーネントを継承して
問題ないようにしているけど?

オブジェクト指向になっているおかげで
いくつかのメソッドをオーバーライドするだけですんだ。

419:nobodyさん
09/01/16 21:40:49
文字化けしないよ別に
ファイルの文字コードとか問題ないの?

420:nobodyさん
09/01/16 22:28:03
toに全角使うと化ける
本文も特定のパターンで化ける

421:nobodyさん
09/01/16 22:36:11
toはエンコしなきゃ化けるだろそりゃ

422:nobodyさん
09/01/16 22:38:28
だからそれをコンポーネント内部でなんでやってないの?って話だよ

423:nobodyさん
09/01/16 22:39:12
toってset()じゃなくてプロパティに直接設定するようになってるけど
どうやってエンコはさめばいいの?
本体のコード見て解析してエンコードはさむくらいしか思いつかないんだけど。

424:nobodyさん
09/01/16 22:42:13
最後に送信するときにでもやればいい。

425:nobodyさん
09/01/16 22:47:48
>>422
世の中には日本語以外もあるわけでな
必要なら日本人が修正してコミットすべき部分だろうに

426:nobodyさん
09/01/16 22:49:09
そんなに不満だらけなら他のFW使えばいいじゃん
メールのエンコードも完璧なFWをさ

427:nobodyさん
09/01/17 10:19:42
1.2.1

428:nobodyさん
09/01/17 11:36:23
お、今度はstableを謳ってる
# If you are using AuthComponent without SecurityComponent you should update to CakePHP 1.2.1.8004 asap (gwoo)
だってさ

429:nobodyさん
09/01/17 11:38:12
1.2 CheatSheet キタ━━(゚∀゚)━━!!!!
URLリンク(cakephp.org)

430:nobodyさん
09/01/17 13:58:26
>>428
なにがかわったんだ?

431:nobodyさん
09/01/17 14:40:37
>>429
これはいいね。早速プリントした。
あと、毎回html->linkの何番目をfalseだっけ?ってマニュアル見なきゃならん俺のために
付属のヘルパー分もお願いしたい。

432:nobodyさん
09/01/18 11:31:02
>>430
URLリンク(groups.google.com)

Essentially, an attacker may be able to obtain credentials as the first user of the system.
If you are interested in testing your site, you can use the SQL Inject Me plugin
for Firefox

433:nobodyさん
09/01/19 16:13:21
会員登録時とかで、パスワードが勝手にハッシュ化されるけど
確認画面いって入力画面に戻るとハッシュ化されたものがパスワードのとこに入る
そしてまた確認画面に行くと再度ハッシュ化される
登録されるのは2度ハッシュ化されたデータ
当然認証は通らない

これはどうすれば?

434:nobodyさん
09/01/19 16:21:13
パスワード消す

435:nobodyさん
09/01/19 16:23:37
詳しく

436:nobodyさん
09/01/19 17:12:40
入力画面に戻るときに消していいんなら
formへるぱーで'value'=>false指定すればよろし

437:nobodyさん
09/01/19 17:15:56
再入力させるのはなぁ
既にハッシュ化してるんだからそのまま入れてもセキュリティ上問題無いのに
ハッシュ化されていれば再ハッシュ化は行わないようになってくれてたら良かった

フォームのパスワードの初期値と送信されたデータが同じだったらハッシュ化はしない
とするだけで出来たはずなのにな

438:nobodyさん
09/01/19 17:38:24
ちょっとコード読んでみたけど
ハッシュ化のタイミングでセッションは既に今送信されたデータに書き換えられてて
元あったものとの比較が出来なくなってる

これ以上手間が要るならめんどくさいなー

439:nobodyさん
09/01/19 17:45:57
確認用の入力分を使えばいいんじゃねえの?

440:nobodyさん
09/01/19 18:11:18
確認入力のバリデーションと競合して分け分かんなくなってきた
どういう仕様になってるんだろ

passwordフィールドはハッシュ化されるが
password_confirmはハッシュ化されない
おかげで確認画面にいってから戻るとパスワードが違うと言うエラーが出る問題も絡んでくる


441:nobodyさん
09/01/19 18:17:05
やはり確認用の入力を使うと言う手段が本筋じゃないな
passwordもpassword_confirmも同様にハッシュ化して
フォームの初期値から変更がなければハッシュ化は行わない、
と言う設計にすべきだと思う

でもこれをやるには今のAuthコンポーネントの仕様からじゃだいぶ手間がかかる

442:nobodyさん
09/01/19 18:26:26
つーかもう
Authの自動ハッシュ化を無くして
手動でハッシュ化するのが一番楽だわ

443:nobodyさん
09/01/19 19:02:35
cakeは謙虚な心がないと使いこなせない

444:nobodyさん
09/01/19 19:20:43
ハッシュ化なんてユーザパスワードくらいでしかやってないし
自動ハッシュ化止めてセーブ時とログイン時にハッシュ化するようにしたらできたくせえ!

445:nobodyさん
09/01/19 22:36:21
form部分は
name="raw_password"
name="raw_password_confirm"
にしといて、
validateでは、
raw_passwordとraw_password_confirmを比較
saveの前にpassword = raw_passwordしとくのは?

446:nobodyさん
09/01/19 22:42:10
それもいいかもね
コンポーネントに手入れ無くて良いし
でもAuthで暗黙的にハッシュ化されるわりにそれを意識したコーディングになってるから
違和感はあるけどね
それなら明示的に書く方が、とおもう

447:nobodyさん
09/01/20 00:34:26
Validationで戻ったときはパスワードは再入力させる方が一般的だと思うけどね。

448:nobodyさん
09/01/20 00:36:53
あぁ、そういう話か。
普通再入力の際にはパスワードは消えてるでしょ

449:nobodyさん
09/01/20 02:09:06
エレメントを呼び出すんじゃなくて
ビューからアクションを呼び出す事って出来ないのかな?

450:nobodyさん
09/01/20 02:15:23
事故解決

451:nobodyさん
09/01/20 02:47:07 W42hdWVL

iis,oracle,php5インストール後、
cakePHP入れて、ブログのチュートリアルやってんだけど、
ビュー作って確認するところのテーブル一覧表示で日本語データが表示されません。
半角英数ですと表示されます。数値、日時も問題なく表示されています。
db内には、正しい全角データが入っているのですが、
なぜでしょう?



452:nobodyさん
09/01/20 02:49:30
>>451
ソースの文字コードとMySQLの文字コード確認

453:nobodyさん
09/01/20 02:50:47 W42hdWVL

両方、utf8です。

454:nobodyさん
09/01/20 03:21:49
そもそもoracleか・・

455:nobodyさん
09/01/20 11:56:56
>>452
oracleだと書いてあるだろボケ
なにがMySQLの文字コードだよ


456:nobodyさん
09/01/20 13:54:45
>>451
phpのinternal_encodingとかその辺の設定確認
あとcakeを介さず直接接続→出力が文字化けするか否か確認


457:nobodyさん
09/01/20 15:52:01
>>455
www

458:nobodyさん
09/01/20 16:57:25
あれ、一人だけID出てるな

459:nobodyさん
09/01/20 17:03:38 b4+xy3zg
sage無きゃ出るでしょ

460:nobodyさん
09/01/20 17:07:06
なるほどそういうことか

461:nobodyさん
09/01/20 17:13:23
sage無くても出ないけどね

462:nobodyさん
09/01/20 17:41:48
1.2なってからのfindやinputの修正は地味だけど良いね
非常に分かりやすくなった

463:nobodyさん
09/01/21 01:59:22
scaffoldだとAuthコンポーネントってちゃんと働かない?
webルートにアクセスすると、一応/users/loginへ
リダイレクトされるんだけど、そこでurlを/users/indexって
書き替えると、ログインしてなくてもユーザーの一覧が
見えてしまう。(´・ω・`)


464:nobodyさん
09/01/21 05:54:40
Controllerになんか書くんじゃなかったっけ。

465:nobodyさん
09/01/21 10:09:05
>>464
Controllerには許可する方を書くわけだから不要だと思う
>>463
ほかのControllerでも同じ症状なら、scaffoldが原因だろうけど、、、

466:nobodyさん
09/01/21 10:42:49
空のindexを書くと、indexにはAuthが効く。
やっぱ、scaffoldが原因かなぁ。
ちゃんと全部自分で書かないとダメか。


467:nobodyさん
09/01/21 10:48:54
action内でscaffoldのフローに飛ばせないのが、辛いよね
この問題にぶちあたって、結局1から書くことになる
すべてのactionを

468:nobodyさん
09/01/21 10:55:35
試してないけどさ
beforeFilter()でaction名を見て、適宜login()に飛ばしてみたら?

469:nobodyさん
09/01/21 11:01:21
if (in_array($this->action ,a('index' ,'etc')) && !$this->Auth->user()) {
// リダイレクト
}

470:nobodyさん
09/01/21 11:34:17
認証掛けるくらいなんだから、うかつに編集されないように
scaffoldを使わないのが正しいやり方だと思う。思うけどね。

471:451
09/01/21 16:59:21
事後報告です。
>>456
> >>451
> phpのinternal_encodingとかその辺の設定確認

この辺りの設定も甘い所がありましたが、utf8で調整するも変わりませんでした。
で切り分けるためにも下を行ったのですが・・・。

> あとcakeを介さず直接接続→出力が文字化けするか否か確認

直接データもらうと、sjisで出力されてきて意味がわからず悩みました。
知っている人はなんでもないんでしょうけど。

で、結構な時間を費やしDBからデータ出力の時点があやしいとなり、
いろいろググってたら判明!
CAKEインストの時のDB設定で文字コード設定があることがわかり、
(設定した時は、どこぞのブログの設定をコピペしてきたんで文字コードを
設定している意識がなかったorz)確認するとsjisになってた、でこれをutf8へ
指定して、cakeの問題無くDBデータが表示されることが確認出来た。

で、ここで疑問が直接もらうとなぜSJISでもらうのか、
恐らくcakeでsjisからutf8へ文字コード変換してることになるんだと思うけど、

結局、oracleが出力文字コードを変えるようで、OSの環境変数を設定して、
NLS_LANG=JAPANESE_JAPAN.AL32UTF8
問題無く直でもutf8で出力されることを確認。

ふー時間くったー。
途中oracleの調子が悪くなって、再インストに見舞われるし。
チュートリアルを進めよう~。

472:nobodyさん
09/01/21 17:57:23
>471
へぇ~、いまはOracleでもまともに動くんだなぁ。

2年位前はDBO周りがバグだらけで使い物にならなかったけど。


473:nobodyさん
09/01/21 20:17:56
投稿された記事の編集権限みたいなものもACLで管理する?
機能制限みたいなものはACLでやるんだけど
同じ機能でもオブジェクトのidによって変わる、みたいなのもACLでやるべきなのかな?

474:nobodyさん
09/01/22 01:10:40
containでモデル指定すると親モデルと同じ階層に並ぶ形で出てくるけど
親モデルの奥に配置するにはどうすればいい?
Model1->find('all',array(
'contain'=>array(
'Model2'
)),

結果:
array(
[0]=>array(
[Model1]=>array(),
[Model2]=>array(),
)
)

475:nobodyさん
09/01/22 10:29:14
decorte.phpのCakePHP1.2.1対応版はまだかな~

476:nobodyさん
09/01/22 12:48:42
cakeのDB接続まわりを参考にしたいのですけど
どのあたりのソースを見ればよいのでしょうか?
/app/config/database.php.default
に接続情報がありますが
これらの情報を使用して接続している部分あたりを見たいです

477:nobodyさん
09/01/22 12:53:15
>>476
cake/libs/model/datasources
cake/libs/model/datasources/dbo
あたりかな


478:nobodyさん
09/01/22 12:54:16
/cake/libs/model
接続に言ってる所と言うのならその下のdatasources/dboの下

479:nobodyさん
09/01/22 15:44:55
CakePHP には、Railsでいうmigrationがないけど、
みんなはDBスキーマはどうやって管理してる?

前スレを見たら少し話題になってたけど、なんかgdgdに終わってた。

480:nobodyさん
09/01/23 00:16:41
CakePHPの1.2.0.7962でセキュリティコンポーネントを使って
二重投稿防止しようとしてるんだけど全然防止できない
saveした後に明示的にセッションからトークン消してやればうまくいくんだけど、
皆様方そんなことをしている様子はないし

URLリンク(www.1x1.jp)

やってることはほぼこのまんま
1.2なんで$formでフォーム生成してるのが違うくらい

フレームワーク使ってるってのに全然サクサク感がねぇー

481:nobodyさん
09/01/23 02:23:23
>>479
とりあえず、普通にSQLでやってる。
create_tables.sqlとか適当なファイルにcreate table文まとめてる。
で、Subversionで管理。

ほんとは、マイグレーションあると便利だけどね。
こんな感じの使い方ができるPHPスクリプトを作ればいいんだけど、
面倒だからやってない。でも、そのうちやるつもりw
php rake.php db:migrate
php rake.php db:migrate VERSION=3
php rake.php db:create
php rake.php db:drop


482:481
09/01/23 02:38:24
今調べてみたら、1.2だと非公式だけどマイグレーションあるんだね。
知らなかったわ。
今度試してみよう。

483:nobodyさん
09/01/23 04:06:53
>>473
マニュアルのauthコンポーネントとACLのページを少ないから読んで見るといいかも
単純なログイン後とログインして無いとかならauthでいける

484:nobodyさん
09/01/23 07:29:32 YSArohX3
cakeのfindで、一番大きなidのデータを取得したり、
一番新しいcreatedのデータを取得したりとかって、簡単にできますか?
やり方があれば、教えてください。

485:484
09/01/23 07:37:43
sortして1番めを取得すれば良かったのか…
>>484自己解決で。素人ですみません。

486:nobodyさん
09/01/23 10:46:31
>>481-482
自分もこういうのを見つけていた。まあ「cakephp migration」でググっただけ
だけど。

"CakePHP migration" フォーラム - CakePHP Users in Japan
URLリンク(cakephp.jp)

CakePHP のおいしい食べ方: DBマイグレーションか、DBスキーマシステムか
URLリンク(cakephp.seesaa.net)

誰か使っている人いないかな。

487:nobodyさん
09/01/23 17:31:45
>>484
sql の max 関数 調べてみい

488:nobodyさん
09/01/24 16:41:32
AuthComponent の認証をディレクトリ単位でわけるよい方法ってないでしょうか?

/document_root/siteA/ 配下と
/document_root/siteB/ 配下でわけたい。

siteA 配下は 教師モデルを対象に認証済みのユーザーはアクセス可能とし、
siteB 配下は 生徒モデルを対象認証済みのユーザーを対象にする。
当然、教師認証済みであってもは siteB にはアクセスできず、生徒は認証済みであっても
siteA にはアクセスできない

みたいな事がやりたいんですが。。。



489:nobodyさん
09/01/24 16:51:08
acl

490:488
09/01/24 17:14:12
acl は、同一ユーザーテーブルの中での権限の割り当てではないでしょうか?
がんばって読んでみたんですが、そもそもユーザー認証を行なうモデルが異なる場合は
対応できないように思いました。

今回は、教師と生徒で登録されているテーブルが違うのでログインページも教師用と生徒用があります。

教師は siteA/login.php にて。生徒は siteB/login.php にて認証します。

で、教師でログインした場合は siteA 配下のみアクセス可能。生徒でログインした場合は siteB のみ
アクセス可能としたい。

かっこ悪いすが、サブドメインきって cake そのものを2通り用意したほうが簡単かもしれないと思ってしまいました。
何かよい方法があればいいな、と。


491:nobodyさん
09/01/24 22:19:27
もっと嫁

492:nobodyさん
09/01/24 22:20:11
cake2個用意するとか前にも言ってるやつが居たが
プログラマーのやり方じゃない


493:nobodyさん
09/01/24 22:44:47
cakeはもっとサンプルが公開されてると、こうした初心者の人も助かりそうだね。
初心者がcakeのソースなんて追え無いんだから。

494:nobodyさん
09/01/24 22:58:31
つーか公式マニュアルにAROとACOの説明があるのに
>>490の理解になるのはおかしい
ちゃんと読んでない

495:nobodyさん
09/01/25 11:58:58
アクションが増えるとコントローラーの行数も増えるのたが、
お前らのコントローラーの行数は最大でどの位ですか。

496:nobodyさん
09/01/25 12:03:41
アクションの数自体、1コントローラ最大で10くらいしか経験無いわ

497:nobodyさん
09/01/25 19:50:45
「CakePHPポケットリファレンス」の資料に載ってる
CakePHPの命名規則って、かなりでたらめ?

498:nobodyさん
09/01/25 21:22:02
一つの関数(アクション)の行数を短くしろとは聞くが
一つのクラス(コントローラー)の行数を短くしろとは
あまり聞かない。

499:nobodyさん
09/01/25 23:34:20
>>497
「CakePHPポケットリファレンス」の命名規約(p.406-408)で
「これ、おかしんじゃない」のワースト3を教えて。
URLリンク(book.cakephp.org)の規約

500:nobodyさん
09/01/25 23:37:01
俺も手元の開いてみた
なんか楽しいw

501:nobodyさん
09/01/26 00:04:38
えーっと、どれも酷いので順番は付けられないけど
コントローラーの命名規則
英単語の単数形+"Controller" って書いてるのに、例が PowerUsersController
モデル名+"_id"って書いてるのに、例がpower_users_id
あとある?


502:nobodyさん
09/01/26 01:11:31
ホントだ。あるねえ。
コントローラの命名規約
○クラス名 英単語の複数形+"Controller"  PowerUsersController
テーブルとカラムの命名規約
○外部キー モデル名+"_id" power_user_id、article_id
(モデル名は単数形だよね。)
修正しました。

503:nobodyさん
09/01/26 10:35:54
編集フォームの初期値をセットするには
$form->create('User');
で作っていたとしたらどういう変数名・配列構造でセットすればいいの?


504:nobodyさん
09/01/26 10:52:09
>>503
$this->data['User']['name'] = '麻生太郎';

505:nobodyさん
09/01/26 12:24:49 j8WtT0GU
1.2系のAuthComponentにおいて任意のidでユーザ認証されてしまう、という脆弱性が。
1.2.1.8004へアップデート推奨らしいぞ。

URLリンク(cakephp.jp)
URLリンク(www.pseudocoder.com)

506:nobodyさん
09/01/26 13:21:32
AuthComponentをStableから使い始めた俺は勝ち組w

507:nobodyさん
09/01/26 13:41:36
>>505
ワロタw

どこがAuthなんだよ

508:nobodyさん
09/01/26 16:40:15 j8WtT0GU
これってやばいんだよね?

509:nobodyさん
09/01/26 20:39:14
testsuiteって使ってる?
マニュアル見ても、よく分からん。

510:nobodyさん
09/01/26 22:55:14
>>508
機能として破綻してるw

511:nobodyさん
09/01/26 23:57:03
ああー
よくわからんままやったら、
フィールド消えたわ
まじか、これ

512:nobodyさん
09/01/27 10:11:27
バグが取れるまでstableにしませんとか誇らしげに語ってなかったっけ?w

513:nobodyさん
09/01/27 11:51:11
>511はtestsuiteの話しな

testsuiteの解説がガイドブックとかに無いし、
web上にもあんまり情報が無いので、よくわからん。
でも。simpletestをインスコしたら、bakeの際に
いろいろ聞かれなくなったのは楽だな。

514:nobodyさん
09/01/27 12:20:04
1.2.1.8004 Stable ですが

設置 URL が example.jp/t/ の時、tests というコントローラにアクセスしようと、

URLリンク(example.jp) ってやると、URLリンク(example.jp) に勝手になってしまって

Error: EstsController could not be found.

となります。 t に限らず webrootが1文字で とコントローラの最初の一文字が同じだと
上記のようになると思いますが、何か注意するところはありますか?

515:nobodyさん
09/01/27 12:32:20
>>514
URLリンク(cakephp.jp)
これと同じかな

516:nobodyさん
09/01/28 11:36:58 AHb2WVE2
既存テーブル名が日本語で、cakeが認識しません。
どうすればいいのでしょうか?
php直ですと日本語テーブル名でクエリは通ります。


517:nobodyさん
09/01/28 12:33:02
cake周りの文字コードをutf-8にしたら
とりあえず、認識した。

518:nobodyさん
09/01/28 18:06:35
テーブル名が日本語ってトラブルの元じゃない? って、以前言われた。

testって、データを入れて出して一致してるか確認してるんだって事が
ようやく少し分かった。

519:nobodyさん
09/01/28 18:29:34
テーブルとかカラムが全角文字だと激怒する奴いるけど
別に日本で使うシステムなら問題ないんだけどな
Oracle/Access+VBのシステムなんかよくあるし
PHPだって変数名ですら全角文字でもOKなんだし

520:nobodyさん
09/01/28 19:00:41
>>519
全角って、そんなに変じゃないの?
bakeする時に日本語で全部作ってくれると楽そうだなーって思ってた。
多言語化を考える必要なんて全くない物を作るのにi18nすら面倒で、
ソースに日本語のエラーメッセージを書いてやろうと思ってた。

521:nobodyさん
09/01/28 19:02:34
あ。でも、そうすると複数形ってどうすんだ?

522:nobodyさん
09/01/28 19:04:55
DB関連の開発系ツールも含めて全て対応出来てるんならいいんだろうけど
海外製のライブラリは対応出来てないものが多いし
結局、全角ゴリ押しは開発者側に負担を強いることが多いよ
プロジェクト内で使う環境を全部調査して、誰にも迷惑かけないと判明したら使えばいいと思うけど

523:nobodyさん
09/01/28 19:05:44
>>521
個別テーブル名定義で対応するしかないと思う
やったことないし試そうとも思わないから詳しくは知らない

524:nobodyさん
09/01/28 20:22:20
早速、日本語名utf8のテーブルやフィールドを作って、
cake bake allしてみた。
コンソールは微妙に文字化けしてたけど、難なく焼けた。
でも、アクセスしたらエラーが出た。ファイルを見たら、
ファイルがshift jisで認識されて、日本語部分は全部文字化け。

こんなことで苦労したくないので、これ以上は試すの止める。

525:nobodyさん
09/01/29 05:37:51
CakePHPは使ったことがありませんが、非常に興味があり質問させて
いただきます。

今まで自作の簡易フレームワークで業務アプリを作ってきました。
画面数は数十あります。
表示はSmartyを使っています。

これを少しづつCakePHPに置き換えたいと考えていますが、
フレームワークを変更するとかなり大掛かりな作業になりそう
ですし、部分的に置き換えていくのが実際できるのかわかりません。

CakePHPは、上述のように既存のWebアプリを部分的に置き換えていける
ものなのでしょうか?
それとも、新規Webアプリから採用するべきものなのでしょうか?




526:nobodyさん
09/01/29 11:43:51
>>525
新規案件だけにしたほうが苦労が少なくていいと思う

527:nobodyさん
09/01/29 11:51:59
>>525 思いついたところから書くと

最低クリアされるべき条件
・DBの構造(idとか)
・URL(/controller/action/param.. の形式)
がクリアされないといけない

そのうえで、Modelごと(≒tableごと)移行していくというのであれば、不可能ではないと思うが。

現実的には、DBを共通化して、Cakeによるサイトを作っていき、同時に稼働させてテストし、一気にリプレイスってことになりそうな気がするけど、どうなんだろうね。

ただ、Cakeに慣れるまである程度時間がかかるから、いずれにせよ新規アプリから始めないと、苦労すると思うよ。

528:525
09/01/30 06:58:44
>>526, 527
レスありがとうございました。
やはり新規案件からCakePHPをはじめたほうが無難ですね。
スキルを醸成してから、既存システムの変更を検討します。


529:nobodyさん
09/01/30 11:51:03
自作クラスのインスタンスを得るにはどうすればいいの?

データを引数に持たせてインスタンス同士をいろいろ比較してくれるクラスを
昔作ったんだけどどう持ち込めばいいのかわからない

530:nobodyさん
09/01/30 17:53:58
ポケットリファレンスを見てるんだが。
1.2になってModel::findが大幅に機能強化されたのに、
記述が少なすぎる。もしくは、Model::generateList()
のページに代わりの方法が書いてあればいいが、
Model::find()だけでは意味不明だろう。

531:nobodyさん
09/01/30 18:27:52
>>530
おとなしく改訂版を待ってろ

532:nobodyさん
09/01/30 18:55:05
改訂版って出るの?

533:nobodyさん
09/01/30 19:21:00
コントローラから2つのモデルとデータをやり取りする場合、
アソシエーションを使う方がいいのか、
Controller::usesで直接指定する方がいいのか。

534:nobodyさん
09/01/30 19:29:43
アソシエーション使うと結果変わる事ない?
たぶん親モデルと関連してるレコードしか該当しないよ

535:nobodyさん
09/01/30 23:31:39
コントローラからコントローラへデータを渡すのって、どうするの?

536:nobodyさん
09/01/31 01:44:15 ZNZRtHpp
flash

537:nobodyさん
09/01/31 04:27:13
>>536
なるほど。
urlでパラメータを渡すなら、redirectでも良さそう。
でも、urlだと大きなデータは渡せないよね。
データが丸見えになるし。

あと、同じウィンドウの中でのみ渡すってなると、
どんな方法が良さそう?

538:nobodyさん
09/01/31 04:30:59
>>537
まあなんだ。
ウェブアプリはデスクトップアプリと
考え方が違うが・・・
まあ、がんばれや。

539:nobodyさん
09/01/31 05:48:56
Session->renew()で新しいsession_idを割り振れば
いけるかな?と思ったが、甘かった。同じブラウザでは
renewする前のが消える。
別のブラウザなら大丈夫だった。(当たり前か)


540:nobodyさん
09/01/31 08:38:22
解決。セッションの使い方を間違ってる。
ユニークキーの発行が正しい。

541:nobodyさん
09/01/31 09:18:36
Cakeユーザーの低レベルさが泣けてくる

542:nobodyさん
09/01/31 09:28:15
>>541
今CakePHPが注目を集めている為、素人が「PHPフレームワークなら俺にも何か簡単に
Webアプリが作れるかな。」という気になっているじゃない?
見方を変えるとCakePHPの功績は大きいかも?

543:nobodyさん
09/01/31 09:38:59
にしてもプログラマーと呼べないレベルの質問が多すぎる


544:nobodyさん
09/01/31 09:47:48
そろそろsymfonyの時代か・・・?

545:nobodyさん
09/01/31 10:44:44
それでも作れちゃうなら凄いこと

546:nobodyさん
09/01/31 10:46:19
そんなレベルの人が正しくフレームワークを使いこなせてるとは思えない
保守不可能なシステムを作ってそう

547:nobodyさん
09/01/31 11:16:37
Web屋と呼べないレベルではあるが
exe屋だったら最初そんなもんだろ。
まあ、フレームワーク知識自慢しかできないようじゃ、
お前らすぐに抜かれるよ。

548:nobodyさん
09/01/31 13:50:46
>>529
自作クラスなんてコンポーネントにしちゃえばいいよ。
で、コントローラーで
$this->Myclass->eat('hoge');

で。

>>535
作り方としてデータを渡したいような内容のものがあるならモデルに書いた方がいい。
で、コントローラーからそのモデルのアクションを読み出してデータを取得。

549:nobodyさん
09/01/31 16:13:14 x6QrlarV
authcompornentでユーザ登録した後、自動的にログイン状態に遷移する処理について
なにか方法があれば教えていただけませんでしょうか?

550:nobodyさん
09/01/31 16:23:21
マニュアルを読め

551:nobodyさん
09/01/31 17:40:26
データが全然こなくて小一時間悩んでたけどconditionsて書く所がconditonsになってた~ 時間返せー

552:nobodyさん
09/01/31 17:50:06
色々読んでみたが、結局趣味でやるぶんにはイイFWってことか

553:nobodyさん
09/01/31 18:44:40
>>551
あるあるwwww
JavaScriptでもundefinedとunidentifiedをよく間違えるんだよな

554:nobodyさん
09/01/31 18:55:23
配列仕様だからそういうミスしても分からないんだよね
なにかあるたびに配列にミスが無いかチェックしてるわ

555:nobodyさん
09/01/31 19:10:10
よく使うやつはテキストエディタの強調表示設定に入れておくのが吉

556:nobodyさん
09/01/31 19:38:57
symfonyを採用したオープンソースのSNS OpenPNE3.0が1/27にリリースされたそうな。
URLリンク(www.openpne.jp)
と言う事は、OpenPNE3.0はPHP4のサーバにはインストール出来ないと言うことか?
多くのアプリがPHP4で開発されたもので、PHP5での稼働が保証されていないので、
サーバのPHPを5に出来ないんだよな。

557:nobodyさん
09/01/31 21:24:40
>>548
モデルAとモデルBで、一応形としては
A hasMany B
B blongTo A
なんだけど、普段必要になるのは、Bのうちnot deleteのフラグが立ってる
1つのデータだけなのよ。そして、まれに(not delete関係なく)全ての
データが必要になる。これをどう扱ったら良い?

A hasOne B
にしても、BにA_idというフィールドが必要なだけに、こちらが望む
通りに紐付けするには条件(not delete=true)が足りない気がするし、
SQLの実行に時間や負担がかからないか心配だし、汎用性がどうか?

Bのデータをidで直接呼び出した方が早いような気がしたので・・・
Aに、not deleteに当るBのデータのidを入れるフィールドを作っていて、
AのコントローラでBのモデルも扱ってread(Bのid)ってするつもりだった。
だけど、このやり方って変?

558:nobodyさん
09/01/31 21:53:45
>>557
ゆとりなの?死ぬの?

こんな風に A のモデル書いて
class A extends AppModel
{
var $hasMany = array('B' => array(
'className' => 'B',
'conditions' => array('B.delete' = 'not delete'),
),);

function hogehoge()
{
unset($this->hasMany['B']['conditions']['B.delete']);
return $this->find('all');
}
}

で、普段はコントローラから $this->A->find() でデータ取得して、
B.delete を無視する時は $this->A->hogehoge() 使うようにするだろう。jk


559:nobodyさん
09/01/31 23:42:40
コントローラーから別のコントローラーに値を渡す方法と言われて、セッションとかそういう話じゃなかったことしかないな

560:nobodyさん
09/02/01 01:12:20
質問です。

$data = array(
array(
'User' => array('id' => 1, 'name' => 'suzuki'),
'Tag' => array(
array('id' => 1, 'title' => 'hoge'),
array('id' => 2, 'name' => 'fuga')
),
),
array(
'User' => array('id' => 2, 'name' => 'sato'),
'Tag' => array(
array('id' => 1, 'name' => 'piyo'),
array('id' => 3, 'name' => 'moge')
)
)
);
$result = Set::extract('/Tag[id=1]/..', $data);
debug($result);

このとき$resultには、結果的に$dataと同じデータが入ると思うんですが、
「Notice (8): Undefined offset: 1 [CORE/cake/libs/set.php, line 415]」
というエラーが出て、2つめのデータが表示されません。何が原因なのでしょうか?

561:560
09/02/01 01:26:07
すみません、追記です。
PHPのバージョンは5.2.8、CakePHPのバージョンは1.2.1.8004です。

あと「array('id' => 1, 'name' => 'piyo'),」は、
「array('id' => 1, 'title' => 'hoge'),」とした方が自然ですね。


よろしくお願いします。

562:nobodyさん
09/02/01 22:33:35
>>560
よくわからんけど。
Tagの添字のID=1が二つあるからじゃね?
それ以外の条件での検索については、エラーは出ないし。



次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch