[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 07/03 16:30 / Filesize : 202 KB / Number-of Response : 839
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 17ホール目【v2.4】



1 名前:nobodyさん [2014/03/01(土) 17:03:24.57 ID:8AJ9GD6E]
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです

■本家
www.cakephp.org/
APIドキュメント
api.cakephp.org/
github - cakephp
github.com/cakephp
the Bakery
bakery.cakephp.org/
Issue
cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

■日本語公式
cakephp.jp/
フォーラム
cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] book.cakephp.org/2.0/ja/index.html
[1.3] book.cakephp.org/ja

※前スレ
kohada.2ch.net/test/read.cgi/php/1378659370/

154 名前:nobodyさん mailto:sage [2014/03/25(火) 00:00:22.77 ID:???]
>>153
自作できるのは知ってるのですが、
inListの逆はあるのかな?と思い、質問しました。
conditionsのNOT INみたいな感じであると思ったのですが

155 名前:nobodyさん mailto:sage [2014/03/25(火) 00:47:37.46 ID:???]
>>150
自分もHTML式の記述にも切り替えられたらいいなと思うけど残念ながらなさそう
実現方法は下記ページの「HtmlHelper が出力するタグの変更」に載ってた
ttp://book.cakephp.org/2.0/ja/core-libraries/helpers/html.html#id1

このマニュアルだとloadConfigを各ビューで呼ぶみたいだけど、
コントローラのヘルパー設定で
var $helpers = array('Session', 'Html'=>array('configFile'=>'html5_tags'));
みたいに設定すればloadConfigを自動的に呼ぶようになるみたい

156 名前:nobodyさん mailto:sage [2014/03/25(火) 09:37:47.58 ID:???]
>>155
ありがとうございます!出来ました!
コントローラーから指定できるのが便利ですね。勉強になります。

157 名前:nobodyさん mailto:sage [2014/03/25(火) 10:10:21.88 ID:???]
CakeにTwigView組み込んで使ってる人いる?
フィルタの追加方法を知りたいんだが

158 名前:nobodyさん mailto:sage [2014/03/25(火) 11:56:36.78 ID:???]
1:フォームにて画像を登録する
2:以下のようにsetFlashにて成功メッセージを表示
$this->Session->setFlash('編集しました');
$this->redirect(array('action'=> 'edit'));

処理は実行されるものの、ブラウザキャッシュが残った状態になります。
ビューにCache-Controlのmetaタグを入れたり、
コントローラーに$this->response->disableCache()をしても変わりません。
なにかよい方法はないでしょうか?
ちなみにIE11やchromeでなり、firefoxではなりません。

159 名前:nobodyさん mailto:sage [2014/03/25(火) 18:59:45.10 ID:???]
>>158
ブラウザキャッシュが残っている状態を、
もっと具体的に書いて欲しい。

160 名前:nobodyさん mailto:sage [2014/03/25(火) 19:50:57.49 ID:???]
>>159
2でリダイレクトしているのに、1の画像が表示されます。
更新ボタンを押すと新しい画像に変わっているので、
ブラウザキャッシュが効いていると思われます。

161 名前:nobodyさん mailto:sage [2014/03/25(火) 20:26:46.16 ID:???]
>>160
それなら、その場しのぎ的だけど、画像へのURLに
?t=23193123 みたくUNIXタイムスタンプつけたらいいんじゃね。
別URLになるからキャッシュされててもとりにくるはず。

162 名前:nobodyさん mailto:sage [2014/03/26(水) 03:05:43.85 ID:???]
>>161
その機能あるけど。。。



163 名前:nobodyさん mailto:sage [2014/03/26(水) 17:31:59.85 ID:???]
Treeビヘイビアを使う以外で、簡単に表示順番を変える方法ってないですかね?
カテゴリではなく、単なる一覧の表示順番を変えたいだけなので、
Threeビヘイビアで必要なカラム(parent_id、lft、rght)を追加するのは無駄に思いまして。

164 名前:nobodyさん [2014/03/26(水) 18:54:27.87 ID:BNu4KpVt]
OrderableBehavior, SortableBehavior, PriorityBehavior とかあったと思う

今は自作で賄ってる

165 名前:nobodyさん mailto:sage [2014/03/27(木) 01:08:52.80 ID:???]
>>164
OrderedBehaviorが一番有名みたいですね。
こちらを試してみます。ありがとうございました。

166 名前:nobodyさん mailto:sage [2014/03/27(木) 01:40:31.88 ID:???]
>>162
あるけど?

167 名前:nobodyさん mailto:sage [2014/03/27(木) 02:30:47.64 ID:???]
bakeで生成されるコードのエンコードを
デフォルトでUTF-8、LFにすることってできますか?
windows環境の話です

168 名前:nobodyさん [2014/03/27(木) 05:28:16.61 ID:GNd/C0+Y]
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。

169 名前:nobodyさん mailto:sage [2014/03/28(金) 17:36:04.92 ID:???]
ルーティングを以下のようにしているとします。
Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));

アクセスしたページがトップページ(ホーム)か否かを調べるのって
$this->params['pass']の中にhomeがあるかどうか調べる方法以外ありますでしょうか?

170 名前:nobodyさん mailto:sage [2014/03/29(土) 07:45:47.19 ID:???]
何かスレ止まってると思ったら、板移転してたのか

171 名前:nobodyさん mailto:sage [2014/03/29(土) 12:11:30.75 ID:???]
2chて何となく一人よがりでカッコ悪い

172 名前:nobodyさん mailto:sage [2014/03/31(月) 18:12:43.27 ID:???]
お問い合わせ(inquiries)の返信テーブルを
inquiry_repliesかinquiry_messagesかで小一時間悩んでるんですが
どっちがいいと思いますか?



173 名前:nobodyさん mailto:sage [2014/03/31(月) 18:48:56.48 ID:???]
>>172
返信用と分かってるならinquiry_repliesでいいんじゃねーの。
用途に合った明確な名前をつけるのは分かりやすくていいよ。
ただ、あとから返信以外の用途にも使うみたいなことになって、
名前と用途が合わなくなるというのも、ありがちな話。

これに1時間悩むんだったら、
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック とか
読んでみたらいいんじゃね?

命名の良し悪しは場合によりけりで、いくら考えてつけても裏目に出ることはあるし、
読んだからといって悩まなくなるわけじゃないけど。

174 名前:nobodyさん mailto:sage [2014/03/31(月) 19:49:24.29 ID:???]
>>173
その本に命名規則について書いてあるんでしょうか?

正直、プログラミングよりも命名や設計で物凄く時間がかかっています。
後からやり直したくなることも何度かあるし。
やっぱり同じコード・同じ設計を何度も書くというのは避けたいので、
汎用性の高い、カスタマイズ性のある設計を考えるのですが、
そうすると時間ばかりかかって先に進めません

175 名前:nobodyさん mailto:sage [2014/03/31(月) 21:19:58.42 ID:???]
汎用性はあまり考え過ぎない方がいい事のが多いけどね。
クラス名やメソッド名をBusinessLogicとかexecuteとかにしてあとあと泣くのは自分。

176 名前:nobodyさん mailto:sage [2014/03/31(月) 21:29:42.21 ID:???]
>>174
規則については書いてないかな。
もっといえば、命名についてだけ書いてあるわけじゃない。
けど、読みやすいコードに、よく考えられた変数名は重要だし、
4部のうちの1部は命名に関してだよ。

kadoppe.com/archives/2013/01/book-readable-code.html

自分は読み途中だからてきとうに見つけた感想文でもはっとく。

自分が読んだとこまでの感想としては、
読んだところで悩まずに書けるようにはならないかな。
けど、納期に追われておざなりになるところだし、
読めばちょっと自分で気を使っただけだと、
気を配りきれない要素を拾えるんじゃないかなと思っている。
あくまでリーダブルコード。設計については書いてないよ。

177 名前:nobodyさん mailto:sage [2014/03/31(月) 23:45:02.75 ID:???]
ストアドプロシージャとか実行するにはどうすれば良いの?

178 名前:nobodyさん mailto:sage [2014/04/01(火) 00:05:45.77 ID:???]
>>175-176
Cakeの場合、ある程度の決まり事があるのでだいぶ楽なのですが、
やはり、自分で納得行かないコードのまま進むことがあります。
かといって、他人のコード見ても分かりやすいとは思わないし。
(有名所のOSSのソースしか見てませんが

とりあえず質問した件は、inquiry_repliesにしてみます。

179 名前:nobodyさん mailto:sage [2014/04/01(火) 00:36:15.98 ID:???]
>>177
ベタ書きして Model::query()


すまん、本当は俺もよく分からん

180 名前:nobodyさん [2014/04/01(火) 00:50:20.63 ID:lnxBtai1]
うんごぶりぶりんこ!!!!ドビュビュビュビュドバババババブッ!!!
ドリュルリュルウリュリィブブブブブブッッ!!!!あへあへうんこまん!!!ぶりっちょ!!!
ケツの穴からドババババババババッバwwwwwwwwwwwwWWWW
wwwwwwwwwwww
WWWwwwwwwwwwww??? ? ? ? ? ? ? ?????     ????????wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
なお、まにあわんもよう

181 名前:nobodyさん mailto:sage [2014/04/01(火) 07:10:33.33 ID:???]
只働きだろうと持ち出しだろうと、働かなきゃ空白期間だよ
それをちゃんと理解しているなら浪人生活なり語学留学なり存分に楽しんだらいい

182 名前:nobodyさん mailto:sage [2014/04/01(火) 09:58:54.32 ID:???]
なぜこのスレなんだw



183 名前:nobodyさん mailto:sage [2014/04/02(水) 05:14:01.71 ID:???]
↓の方法で、ControllerからModelにアクセスすると
public function hoge() {
 $this->loadModel('Hoge');
 $Users = $this->Hoge->find('all');
}

このようなエラーが表示されてしまいます。
Missing Datasource
Error: Datasource class Mysql could not be found.
Datasource is not found in Model/Datasource package.

↓の中には"empty"というファイルしか入っていないのですが、
cakephp\app\Model\Datasource

やはり何かファイルが足りないのでしょうか?

184 名前:nobodyさん mailto:sage [2014/04/02(水) 06:25:25.12 ID:???]
>>183
cakephp/lib/Cake/Model/Datasourceにあるっしょ。

Missing Datasourceになる理由は、情報不足でよくわからんけど。

185 名前:nobodyさん mailto:sage [2014/04/02(水) 11:09:44.80 ID:???]
フォームヘルパーのnameが
data[Post][test1]
のラジオボタンがあるとします。

idが、PostTest10、PostTest11、PostTest12となってしまうのですが、
これをPostTest1_0、PostTest1_1、PostTest1_2
みたいにする事って出来ないのでしょうか?

186 名前:nobodyさん mailto:sage [2014/04/02(水) 13:11:18.07 ID:???]
2、3人での小規模開発では使う必要無いですよね?自分でライブラリ作った方が

187 名前:nobodyさん mailto:sage [2014/04/02(水) 13:32:26.95 ID:???]
1人だけどCake使ってるよ。
自分でも作れるけど、車輪の再発明みたいな感じで面倒だし。

188 名前:nobodyさん mailto:sage [2014/04/02(水) 13:53:48.92 ID:???]
必要かと聞かれればその人次第だけど、
1人でも3人でもCakePHP使うよ。
3人のうち2人がほかのフレームワークに慣れてるなら、それに合わせるけど。

189 名前:nobodyさん mailto:sage [2014/04/02(水) 15:43:50.23 ID:???]
>>187
色んなもの開発して行くうちにそれなりにライブラリは出来て行くから再発明にはならないでしょ
自分で同コストで出来ることをフレームワーク習得にさらに時間費やすならその理由が無いと

少人数小規模すぎると効率化のメリットよりも、処理の重さや習得の手間、細かい所に手を入れ出すと途端にコストが増す、無駄にシステムが大きくなるとかのデメリットのが目立つよね

190 名前:nobodyさん mailto:sage [2014/04/02(水) 16:12:41.55 ID:???]
>>185
自動で振られるIDは制御不可能です。
FormHelper をオーバーライドしてカスタマイズするしか無い。
個別に指定するなら第二引数のidキーで指定できます。

191 名前:nobodyさん mailto:sage [2014/04/02(水) 16:16:36.30 ID:???]
>>189
Zendみたいなライブラリの寄せ集め的なFWだと
他のプロダクトでも流用できたりするけど、
CakePHPとかはFWに拘束されてしまうからな。
もっと結合度の低い構成にしてほしいとは思う。

192 名前:nobodyさん mailto:sage [2014/04/02(水) 16:21:34.23 ID:???]
>>186
人数は関係ないと思うよ
理解程度と何を作るかによる

一部分しか使わないときにはCakeは使わないな



193 名前:nobodyさん mailto:sage [2014/04/02(水) 17:26:18.77 ID:???]
>>189
後半2行はCakeだろうとオレオレだろうと一緒じゃね?
開発人数や規模が変われば冗長化するのは当然じゃん。
なら、みんなで共有・共通事項で合わせられる、
Cakeのような既存のFW使うほうが、よっぽど効率がいい

194 名前:nobodyさん mailto:sage [2014/04/02(水) 17:33:22.17 ID:???]
ファイル数個で済むようなちょっとしたアプリなのにcake使ったら、久々にソース読んだ時とかに絶対無駄に分かりづらくなる

195 名前:nobodyさん mailto:sage [2014/04/02(水) 18:00:04.95 ID:???]
全くのPHP初心者がCakeはじめるならそうなるだろうけど、
経験者ならFW使う前に自作ライブラリ作ってるだろうし、
ファイル数個で済む程度のアプリなら、それ使えば良いと思うが。

196 名前:nobodyさん mailto:sage [2014/04/02(水) 21:01:45.37 ID:???]
少人数だからとオレオレでやってたとこに途中参加する人のことを考えてあげてください。
CakePHPは完璧でもないし、すこし合わないプロジェクトな事もあるけど、
CakePHPであると言うだけで、それに慣れてる人を探すことができるよ。
オレオレに慣れてる人は、今いるメンバーだけだよ。

本当にちょっとしたものなら、自作ライブラリでもいいけど、
今ならComposerでライブラリとってきて、必要なとこだけ自分で書くのがいいと思うよ。

197 名前:nobodyさん mailto:sage [2014/04/02(水) 21:31:51.71 ID:???]
cake使っててテーブルの値勝手に全部消去された事あるんだけど
あれなんなの仕様?

198 名前:nobodyさん mailto:sage [2014/04/02(水) 21:37:35.82 ID:???]
cakeは遅いからな。下手なものには使えない

199 名前:nobodyさん mailto:sage [2014/04/02(水) 22:21:06.03 ID:???]
>>184
あ、そっちにおいてあるんですね。
Datasource class Mysql could not be found.
って書いてあるから、てっきりファイルが何か足りないのでは?と思っていました。
もう少しソースを見なおしてみます。

>>186
1人だけど使ってます。MVCを楽にやりたかったから。

200 名前:nobodyさん mailto:sage [2014/04/02(水) 22:34:26.36 ID:???]
>>197
それだけじゃ分からん

多対多のリレーションテーブルの属性値が消されたとか?

201 名前:nobodyさん mailto:sage [2014/04/03(木) 00:25:42.94 ID:???]
>>198
これよく分かんない。
CakePHPがボトルネックになって要求満たせなかったことが無いんだよねぇ。

202 名前:nobodyさん mailto:sage [2014/04/03(木) 00:46:56.03 ID:???]
>>201
お前の会社がオーバースペックのサーバ納品してボッてるだけだろ



203 名前:nobodyさん mailto:sage [2014/04/03(木) 02:21:11.20 ID:???]
>>202
サーバー安いしねぇ。
運用コストも含めて、要求以内だよ。
チューニングの余地は、アプリケーションのコードにもインフラ構成にも、普通に残ってると思うけど。
サーバー代が1割2割減ったところでたいした額じゃない。
それより、開発・保守開発が効率よくできるほうが、開発費がかからなくてありがたいね。

204 名前:nobodyさん mailto:sage [2014/04/03(木) 08:59:09.29 ID:???]
cakeは開発工数の少なさ、技術者の安さはトップクラスだから開発費は安いんだよな。
前も上がってたけど、ソーシャル系は厳しいな。用途次第ってことだ。
ボトルネックの経験がないところには発注するのは怖いな。ネックになった時に投げ出される可能性が高いってことだろ?

205 名前:nobodyさん mailto:sage [2014/04/03(木) 10:11:20.11 ID:???]
なのに、市場ではボトルネックを一切無視して、価格競争してるからな

206 名前:nobodyさん mailto:sage [2014/04/03(木) 14:48:37.49 ID:???]
それでいいんじゃね。
パフォーマンスとかうるさく言うんなら、FWやORMはおろか動的言語使うこと自体が要件に合ってないだろ。

207 名前:nobodyさん mailto:sage [2014/04/03(木) 15:13:32.96 ID:???]
>>203
インフラ代がいくらのレンジの話よ?

208 名前:nobodyさん mailto:sage [2014/04/03(木) 15:28:38.04 ID:???]
1000円以下

209 名前:nobodyさん mailto:sage [2014/04/03(木) 16:46:48.77 ID:???]
>>204
ボトルネックの経験って?

210 名前:nobodyさん mailto:sage [2014/04/03(木) 19:56:07.66 ID:???]
>>197
俺も前なった
1.3のいくつかの時までのバグだったから
今はもう起きないんじゃないか?

211 名前:nobodyさん mailto:sage [2014/04/03(木) 20:11:13.79 ID:???]
関係ない話で申し訳ないが、
2ch乗っとられたってマジらしいな

2chドットsc に移行するらしいが、
'2ch' . '.sc' ってのをNGワードにしているらしい

212 名前:nobodyさん mailto:sage [2014/04/03(木) 23:37:19.01 ID:???]
>>207
数万〜数十万/月
ってところだね。



213 名前:nobodyさん mailto:sage [2014/04/03(木) 23:41:04.71 ID:???]
どれどれと思ってやってみたら

ERROR:さくらが咲いてますよ。

ってなって書き込みできんかった。
どうでもよかったけど、サーバー側でNGワードとかされると引くわ・・・

214 名前:nobodyさん mailto:sage [2014/04/04(金) 15:29:28.73 ID:???]
>>212
人件費込み?

215 名前:nobodyさん mailto:sage [2014/04/04(金) 19:02:20.90 ID:???]
そうだよ

216 名前:nobodyさん mailto:sage [2014/04/05(土) 00:43:47.97 ID:???]
>>214
人件費は入ってないよ。
インフラが得意でインフラ方面のタスクをよくやってる人はいるけど、
インフラだけやってるって人はいないからね。
ただ、自分たちで何でもやらないとなものもあれば、
ある程度は作業を依頼できるインフラ屋さんに頼んでるのもあったから、
そういう場合は一部入ってると言えるかもしれない。

217 名前:nobodyさん mailto:sage [2014/04/05(土) 16:20:54.14 ID:???]
>>214
数万で込とかw

218 名前:nobodyさん mailto:sage [2014/04/05(土) 23:26:04.89 ID:???]
開発費は人件費だから
込みじゃないと比較できんな

219 名前:nobodyさん [2014/04/06(日) 01:43:29.71 ID:Iec7CVL5]
Cake3 触った人いる?

さっきちょっと見てみたんだけどさ、Model の扱いがぜんぜん違うんだな。

これ Cake2 から移行するのって最初から作るのと同じぐらい大変かもしれないな。

というか、それ以上に苦労するかもしれないな。

220 名前:nobodyさん mailto:sage [2014/04/06(日) 03:31:19.46 ID:???]
>>218


221 名前:nobodyさん mailto:sage [2014/04/06(日) 04:05:49.26 ID:???]
>>219
> さっきちょっと見てみたんだけどさ、Model の扱いがぜんぜん違うんだな。
やっとあるべき姿になったという感じだよね
元々Railsにインスパイアされてできたはずなのに、配列で返ってくるところは絶対変だったよな
まぁ、PHP4に引きずられたんだろうけど…

222 名前:nobodyさん mailto:sage [2014/04/06(日) 10:13:55.10 ID:???]
人件費込みのインフラ費が
一人月超えてくると
開発費との比較が必要になってくるな

それまではcakephpで悩まんな



223 名前:nobodyさん mailto:sage [2014/04/06(日) 20:45:00.75 ID:???]
今日は寒いな
まだストーブが要るとは思わんかった、灯油がもうないよ…

224 名前:nobodyさん mailto:sage [2014/04/07(月) 10:47:00.11 ID:???]
フォームのidを手動でCake式に変換する方法(関数)ってありますか?
test_hogeというnameならTestHogeにするみたいな

225 名前:nobodyさん [2014/04/07(月) 18:57:19.67 ID:LGjnvRjr]
>>224
FormHelper::domId()

226 名前:nobodyさん mailto:sage [2014/04/07(月) 19:46:25.07 ID:???]
>>225
思い通り出来ました!ありがとうございました。

227 名前:nobodyさん mailto:sage [2014/04/08(火) 11:37:39.61 ID:???]
チェックボックスを使ったバリデーションで質問です。
ルールを以下のようにしているのですが、
'rule' => array('multiple')
チェックボックの値に0がある場合、1つ選択しただけではfalseになります。
0という値を許可するには、独自バリデーションを作る必要があるのでしょうか?

228 名前:nobodyさん [2014/04/08(火) 14:29:13.60 ID:DFrq8Phr]
>>227
Validation::multiple() を見たら、

$check = array_filter((array)$check);
if (empty($check)) { return false; }

ってなってるから、ここで弾かれちゃうんだね。
フィールドの値を変更するか、自作するしか無いね。

コールバック渡せるように作ってくれれば良いのになぁ。
Cakeは、この辺の中途半端な不自由さが結構あるんだよな。

229 名前:nobodyさん mailto:sage [2014/04/08(火) 14:55:21.04 ID:???]
>>228
わかりました。自作します。

半角英数字のチェックを配列対応してなかったり、
確かに不自由さは多いですね。

230 名前:nobodyさん mailto:sage [2014/04/08(火) 22:23:04.86 ID:???]
>>229
checkboxは他のtypeと違って1個もチェックしないと、空文字列すら送らないんだよね。
なのでFormHelperでチェックボックスを生成した場合、hidden value="0"がチェックボックスと一緒に用意される。
だからバリデーションもそれにあわせて、0は真偽でいうと偽の値になってるんだ。
オレオレフレームワークからCakePHPに乗り換えたときは、そういうところに押し付けがましさを感じていたけど、
慣れてしまえばまぁ合理的かなと思うよ。
チェックボックスをDBにあるマスターテーブルから生成するような場合(割とよくあると思う)、
valueはそのテーブルのidにするのが自然だし、idは1から始まるのが基本的だからね。

なので、CakePHPで開発していくなら、バリデーションを自作するより、
チェックボックスのvalue="0"は未選択とするように、変更するのをお勧めするよ。

231 名前:nobodyさん mailto:sage [2014/04/09(水) 10:48:16.40 ID:???]
バリデーションで便乗質問ですが、
名前の姓・名のように、1つの項目で2つの入力箇所がある場合、
バリデーションはどうすればいいのでしょうか?

フォームのnameが
姓:data[User][name][sei]
名:data[User][name][,mei]

として、これ自体のバリデーションは独自関数を作れば出来ますが、
個別にエラーを出力することって出来ませんよね?
例えば「姓が未入力です」「名を日本語で入力してください」
とか出力したいのですが、validateのルール指定では
名前(name)に対する指定で、その下の連想配列に対する
姓(sei)や名(mei)には指定できないです。

232 名前:nobodyさん mailto:sage [2014/04/09(水) 11:56:22.61 ID:???]
cakeでも2.4.7でauthコンポーネント利用して認証入れてますが、
f5連打でセッション切れ起こしませんか?
ググって調べてでてきた情報で

Config/core.php最下部に

Configure::write('Security.cookie', 'cakephpfdebackend');
Configure::write('Session.checkAgent', false);
Configure::write('Security.level', 'low');

を追記してますが効果無し。
IE、FireFox、Chrome全てでセッション切れます。
2.3時代からcomposerでアップデートして現在最新ですが
2.3時代でも起きていたように思います。

開発途上段階でaclを入れようと、
alaxos/aclプラグインを導入しましたが、
設定画面で全てのアクションに対するRoleごとの権限をajaxで取りにいく部分があって、
既存のアクションが50はあるので、Role3つ*50で150回のajaxリクエストが走りますが
この途中で確実にセッション切れを起こしてしまい、困ってます。
セッション切れが起こるタイミングはまちまちで、リクエスト回数によるものではなさそうです。
$this->Auth->allow()を置いて認証を使わないようにしないと設定できない状況です。

何か手がかりになりそうな情報はないでしょうか?



233 名前:nobodyさん mailto:sage [2014/04/09(水) 12:49:01.33 ID:???]
>>231
バリデーションもだけど、その構造だとsave()できなくないか?

姓:data[User][sei]
名:data[User][mei]

どういうテーブルスキーマか知らんけど、普通にこれでいいんじゃないの?

234 名前:nobodyさん mailto:sage [2014/04/09(水) 13:22:45.53 ID:???]
>>233
beforeSaveで1つのnameにするので大丈夫かと思います。

単純にsei、meiを分ける方法が一番簡単だと思うのですが、
日付のフォームとか、Cakeは連想配列で管理しているので
同じように[name][sei]と出来れば良いなと思っています。

235 名前:nobodyさん mailto:sage [2014/04/09(水) 21:52:21.95 ID:???]
>>232
どう?
www.matomater.com/9769/

236 名前:nobodyさん mailto:sage [2014/04/10(木) 06:44:41.50 ID:???]
>>234
でも日付って、年月日で別個にバリデーションできたっけ?
日付としてひとまとまりだったような気がしたけど。
日付はそのままsave()出来るような気がしたけど、これって特殊だよね。
日付で出来る事だからといっても、その辺CakePHP内であまり汎化されてないような気がする。

まぁdata[User][name][sei] でポストするのはうまくいくとしたとしても、
バリデーションはすっきりとは行かないんじゃないか?

237 名前:nobodyさん mailto:sage [2014/04/10(木) 09:24:25.58 ID:???]
>>236
確かにそうですね。
それに年月日の場合、個別にバリデーションする必要無い気もします。
単に「日付が正しくありません」というメッセージを出せば
年が抜けてるのか月が抜けているのか関係無いような。

でも、この辺がもう少し柔軟性あればいいですよね
やっぱりフォーム側を[name_sei]のように変えるしか無いんですかね・・・

238 名前:nobodyさん [2014/04/10(木) 10:57:39.51 ID:ekNccxsF]
>>237
バリデーションしてから beforeSave 出来るわけだから、
スキーマを name にして、ルールを sei, mei の2つにする。
んで、 beforeSave で値を結合すれば良いんじゃない?

ただ、バーチャルフィールドを使わない理由は?
name を1フィールドにしなくてはならない要件があるの?

239 名前:nobodyさん [2014/04/10(木) 11:10:48.64 ID:ekNccxsF]
え、dateフィールド見たいにフォームで name の下に作ってるのか!

>>236 の言うように date や datetime は
Model で各要素を個別に扱えるようには作られてない。

240 名前:nobodyさん mailto:sage [2014/04/10(木) 11:12:27.99 ID:???]
あ、 何も考えずに age てた。sage にした方が良かったんかな

241 名前:nobodyさん mailto:sage [2014/04/10(木) 12:41:05.32 ID:???]
>>235
情報ありがとうございます。
if(!isset($_SESSION)) session_start();
を試したところ、セッションは切れないのですが
CAKEのセッション機構の設定が全部死んでしまいました。
これで解決させるとまずそうです。

最初からやっとけという話ですが、
CakeSessionを追ってみたところ、Session.autoRegenerateがtrueの場合
ある一定数のリクエストがあるごとにセッションIDを変更しており、
その変更のタイミングで同時リクエストが走ると
そこからセッション切れが発生する事がわかり、
autoRegenerateをfalseにして解決しました。

242 名前:nobodyさん mailto:sage [2014/04/10(木) 14:11:17.70 ID:???]
Cakeのセッション周りは昔から謎の挙動をするよな
詳細は忘れてしまったけど、要注意だ



243 名前:nobodyさん mailto:sage [2014/04/10(木) 14:21:07.20 ID:???]
そういうのがあるからフレームワークは怖い
Strutsみたいのだとまた違うけれど

244 名前:nobodyさん mailto:sage [2014/04/10(木) 14:33:01.94 ID:???]
>>237
FormHelperのコードを見るとわかるけど、バリデーションのエラーメッセージの表示は、
Modelname.fieldname という構成を想定してるよ。
バリデートルールはModelに書くから、Controllerが保持する$validationErrorsも、
[Modelname][fieldname]という2次元配列で格納されている。

$this->Form->input('Modelname.fieldname') で、その$validationErrorsの中身と対になるようになってる。

例外でモデル名を省略できるケースはいくつかある。
$this->Form->create('Modelname');
$this->Form->input('fieldname');

Controllerのusesが1個の場合と、複数ある場合1個目のモデル、usesを書かずコントローラー名からモデル名がわかる場合は、
$this->Form->create();
$this->Form->input('fieldname');
でもいけたような気がする。たぶん

245 名前:nobodyさん mailto:sage [2014/04/10(木) 14:37:55.60 ID:???]
Cakeで一番困ったのは>>197のバグでテーブル全部消されたこと

246 名前:nobodyさん mailto:sage [2014/04/10(木) 15:58:45.85 ID:???]
てか、そんなこと1回もなったことないけど、
ほんとにそんなバグあるの?

247 名前:nobodyさん mailto:sage [2014/04/10(木) 16:11:15.52 ID:???]
bakeしてんだけどviewだけが何故か生成されない
Cake2.3.5で、Windowsのコマンドプロンプトからbakeしてます

cake bake view テーブル名 を実行しても

Welcome to CakePHP v2.3.5 Console
---------------------------------------------------------------
App : app
Path: appのパス
---------------------------------------------------------------

と出るだけで終了して何も起きない

インタラクティブでやると

Would you like to create the views for admin routing? (y/n)
[n] >

の後で終了して、何も起きない

248 名前:nobodyさん mailto:sage [2014/04/10(木) 16:11:16.67 ID:???]
本当なら使用しているバージョン、どんなコードで再現したかなど
詳細を書いてほしいものだ
レスがなければ嘘だと判断していいと思う

249 名前:nobodyさん mailto:sage [2014/04/10(木) 16:13:07.05 ID:???]
>>246
WHERE 1=1 でDELETE発行するバグが1.3.4まであった
web.archive.org/web/20110803234417/http://cakephp.lighthouseapp.com/projects/42648/tickets/250-model-delete-bug
ググれば過去スレも出てくるよ、12ホール目

250 名前:nobodyさん mailto:sage [2014/04/10(木) 18:03:59.14 ID:???]
興味あったんで本当にテーブル削除されることがあるのか試してみた
以下のコードをコントローラのアクションに入れて実行
$this->テーブル->delete();

バージョン 1.3.2 1.2.8 1.2.0 のいずれも発生しなかった
>>249の提示した記事は英語なのであまり深くは読めていないが
ライブラリのmodel.phpを修正して$model->exists()をコメントアウトしてみたところ、
一応再現はできた

まとめると
@モデルのexistsメソッドをidが指定されていなくてもtrueを返すように上書き
Aモデルのdeleteメソッドを引数なしで実行
したときに DELETE FROM `テーブル` WHERE 1 = 1
が実行される(もちろん全テーブルじゃなくて1テーブルだけだが)
まあほとんどの人には縁のない現象といえるかな
もっと単純に再現できるコードがあるのなら提示してほしい

251 名前:nobodyさん mailto:sage [2014/04/10(木) 18:47:46.61 ID:???]
beforeDeleteはどこいった

252 名前:nobodyさん mailto:sage [2014/04/10(木) 19:06:10.92 ID:???]
普通に使ってるだけで起きたんだよなあ。
古いことなので今更調べる気にはなれない。



253 名前:nobodyさん mailto:sage [2014/04/10(木) 20:45:55.49 ID:???]
なるほどね、よくわかった
オラクルとかのトリガーでも自テーブルへの処理は参照すらできないから
記事のbeforeDeleteのような実装は単なるコーディングミスと判断していたよ
普通の処理とみなす人もいるってことね

254 名前:nobodyさん mailto:sage [2014/04/10(木) 20:58:33.13 ID:???]
Cakeに限らずだが、FMって問題が起きた時に
その原因を突き止めるのに苦慮することが多いよね






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<202KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef