【PHP】フレームワーク CakePHP 17ホール目【v2.4】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2014/03/01(土) 17:03:24.57ID:8AJ9GD6ECakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja
※前スレ
http://kohada.2ch.net/test/read.cgi/php/1378659370/
0100nobodyさん
2014/03/14(金) 23:37:29.52ID:???こんなところでしょーもない質問はしない
0101nobodyさん
2014/03/15(土) 02:23:33.07ID:???0102nobodyさん
2014/03/15(土) 09:07:57.50ID:???0104nobodyさん
2014/03/15(土) 22:57:03.97ID:???誰も答えてないんで作ってみた
テーブルの結合条件は知らんので適当に解釈してね
$params['joins'][] = array(
'type' => 'INNER',
'alias' => 'B',
'table' => 'b',
'conditions' => array(
'B.date = A.date',
'B.text = A.text',
'B.delete = A.delete',
)
);
$params['conditions']['A.delete'] = 'b';
$params['fields'] = array('A.id', 'A.date', 'A.text');
$params['order'] = array('A.date asc');
$this->A->find('all', $params);
0105nobodyさん
2014/03/18(火) 15:37:09.88ID:???http://example.com/download/dl.php
のように拡張子をphpにしたいです
ぐぐってもわからないのですが何かやり方はありますか?
0106nobodyさん
2014/03/18(火) 20:05:49.26ID:???リクエストハンドラ要らんかもしれん
0107nobodyさん
2014/03/19(水) 19:49:36.31ID:???実際は違うけど、開発した人は影響受けてそう
0108nobodyさん
2014/03/19(水) 20:01:23.03ID:???にしても、なんかもっさい感じだな
コメントが日本語ってのもあるけどソースも…
0109nobodyさん
2014/03/19(水) 23:34:46.59ID:???Cakeよりmicro系に近い
Cakeっぽさって何かある?
0110nobodyさん
2014/03/20(木) 00:08:10.16ID:???zendとかsymphonyとかEthnaとか、
OSSならWordPressとかECCUBEとかphpBBとか
有名所は独自の構成だけど、fc2ブログはCakeっぽかった。
だから、君の言う「普通のMVC」がこうなのかは知らんが。
0111nobodyさん
2014/03/20(木) 00:42:22.76ID:???今さら手直し効かないレベル。
中の人もきっと諦めてるんだろう・・・
0112nobodyさん
2014/03/20(木) 01:36:29.70ID:???0113nobodyさん
2014/03/20(木) 01:44:49.45ID:???0114nobodyさん
2014/03/20(木) 07:02:02.26ID:???sがつくつかない、大文字小文字、省略形とかの差ぐらい
0115nobodyさん
2014/03/20(木) 07:30:03.64ID:???fc2ブログのほうがcakephpより古いんだよね
0116nobodyさん
2014/03/20(木) 07:51:32.20ID:???0117nobodyさん
2014/03/20(木) 10:00:51.75ID:???もちろん、オープンソースにするんだから当然なんだが
0118nobodyさん
2014/03/20(木) 15:13:14.69ID:???これ、めちゃくちゃ便利だな
0119nobodyさん
2014/03/20(木) 16:04:17.30ID:???http://tech.a-listers.jp/2012/01/31/the-evil-unnecessary-has_and_belongs_to_many/
0120nobodyさん
2014/03/20(木) 16:15:47.05ID:???0121nobodyさん
2014/03/20(木) 16:51:21.02ID:???0122nobodyさん
2014/03/20(木) 17:09:04.14ID:???中間テーブル無しで管理する方法があるなら教えて欲しい
0123nobodyさん
2014/03/20(木) 20:34:48.05ID:???0124nobodyさん
2014/03/20(木) 21:24:40.70ID:???Railsでもhmtに移行してるし
0125nobodyさん
2014/03/21(金) 00:20:48.70ID:???0126nobodyさん
2014/03/22(土) 17:59:24.57ID:???$this->User->save(array('id' => 1, 'name' => 'aaa'), false);
こんな感じで更新しようとしたのですが、
なぜかage・commentがnullになります。
saveの前にcreateしても一緒です。こういう現象になった方、いませんでしょうか?
ちなみにjQueryを使ってAjaxで実行しています。
0127nobodyさん
2014/03/22(土) 18:41:02.58ID:???<option value="01">1</option>
<option value="02">2</option>
<option value="03">3</option>
...
<option value="31">31</option>
みたいのを生成してくれるヘルパーかプラグイン知りませんか?いちいち書くのめんどい
0128nobodyさん
2014/03/22(土) 18:58:26.38ID:???0129nobodyさん
2014/03/22(土) 18:59:39.59ID:???仕様でございます。
save()はPKがあればUPDATE、無ければINSERTだけど、
UPDATEの際渡されたデータに入れ替える。
ajaxじゃなく普通の更新フォームの場合、変更しなかったデータもPOSTされてくるから、
そういう問題になることが無いので、ajaxであれ?となるのはたまにあるな。
テクニックとして、save()の第三引数に、INSERT、UPDATEしたいフィールドを指定できる。
$this->User->save(array('id' => 1, 'name' => 'aaa'), false, array('name'));
こうすることでおそらく意図通りの動きをすると思うよ。
0130nobodyさん
2014/03/22(土) 19:02:18.13ID:???普通にFormHelperで出来るような気がするけど。
まぁ日付となると、FormHelperは英語向けすぎてちょっと使いにくいから、
別途Helper作ることはあるけどさ。
0132nobodyさん
2014/03/22(土) 20:12:45.97ID:???$paginator->numbers(true);でリンクを生成しました
記事が三件、limitを1にすると、23のリンクが生成されて、配列は一個だけ
2を押すとfoo/index/page~2に飛ぶのに1のときと同じ配列が表示され、23のリンクが生成されています
(2ページ目に飛んでいない)
3を押しても同様です
心当たりはbelongtoで他のdbのデータも引っ張ってきていることくらいです
何か特殊なケースはあるんでしょうか?
ご存知のかたご教示ください
0134nobodyさん
2014/03/22(土) 21:18:12.91ID:???0135nobodyさん
2014/03/22(土) 21:33:09.93ID:???おおおお、これははじめて知りました!勉強になります。
何時間も悩んでいたのですが、解決できそうです。
本当に助かりました。ありがとうございました!
0136nobodyさん
2014/03/22(土) 22:53:51.01ID:???の場合、どんな名前でsetしますか?
allとかpaginateを使う場合だと「pages」としているのですが、
1件取得するだけなので、単数形(page)の方が良いのかな?と悩んでいます。
0137nobodyさん
2014/03/22(土) 23:01:37.17ID:???0138nobodyさん
2014/03/22(土) 23:36:58.97ID:???0139nobodyさん
2014/03/23(日) 00:28:11.20ID:???単純明快だと思う
0140nobodyさん
2014/03/23(日) 00:57:04.37ID:???allならpages
listならpages
countならpage_count
0141nobodyさん
2014/03/23(日) 01:01:42.86ID:???0143nobodyさん
2014/03/23(日) 15:38:47.72ID:???わざわざ>>129みたいに第三引数を指定しなくても
第一引数のデータに含まれていないカラムは
INSERTでもUPDATEでも勝手にNULLになったりはしないはず
第一引数に余計なカラムが含まれていると疑ったほうがいいんじゃないかい?
あとjQueryとかAjaxとかはPHP側から見れば何の関係もないよ
0145nobodyさん
2014/03/23(日) 20:23:17.81ID:???http://jp2.php.net/
0146nobodyさん
2014/03/24(月) 03:32:24.08ID:???あれ、そうだったっけ。
普通のformばかりで、たまにajaxでやると、何かであー・・・ってなった記憶があったから、
質問を読んで、それだと思っちゃった。
でも、逆に一部のカラムをNULLに戻すのはどうするんだったか・・・
0147nobodyさん
2014/03/24(月) 08:45:17.91ID:???0148nobodyさん
2014/03/24(月) 10:59:37.56ID:???というルールって無いですよね?
予約語となる名前を使用したらエラーを出したいのですが
0149nobodyさん
2014/03/24(月) 14:22:54.30ID:???ブール値返す関数だったらなんでも設定できるし
0150nobodyさん
2014/03/24(月) 16:13:10.55ID:???閉じタグを />じゃなくて > にしたいです。
何か設定項目があるのでしょうか?
0151nobodyさん
2014/03/24(月) 17:24:59.51ID:???0152nobodyさん
2014/03/24(月) 17:31:22.12ID:???0153nobodyさん
2014/03/24(月) 21:44:26.29ID:???欲しいバリデーションルールがなければ簡単に自作できるよ
ライブラリのValidation.phpにルール名そのままの関数があるので
同じような形で関数を作ればいい
作った関数はモデルかビヘイビアで実装すれば
元々あるルールと同じように使えるようになる
詳細は以下のページを参考にどうぞ
ttp://book.cakephp.org/1.3/ja/The-Manual/Common-Tasks-With-CakePHP/Data-Validation.html
ttp://book.cakephp.org/2.0/en/models/data-validation.html
※2.x系は日本語訳されてるページが少ない・・・1.3の情報でも問題ないはず
0154nobodyさん
2014/03/25(火) 00:00:22.77ID:???自作できるのは知ってるのですが、
inListの逆はあるのかな?と思い、質問しました。
conditionsのNOT INみたいな感じであると思ったのですが
0155nobodyさん
2014/03/25(火) 00:47:37.46ID:???自分も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を自動的に呼ぶようになるみたい
0157nobodyさん
2014/03/25(火) 10:10:21.88ID:???フィルタの追加方法を知りたいんだが
0158nobodyさん
2014/03/25(火) 11:56:36.78ID:???2:以下のようにsetFlashにて成功メッセージを表示
$this->Session->setFlash('編集しました');
$this->redirect(array('action'=> 'edit'));
処理は実行されるものの、ブラウザキャッシュが残った状態になります。
ビューにCache-Controlのmetaタグを入れたり、
コントローラーに$this->response->disableCache()をしても変わりません。
なにかよい方法はないでしょうか?
ちなみにIE11やchromeでなり、firefoxではなりません。
0160nobodyさん
2014/03/25(火) 19:50:57.49ID:???2でリダイレクトしているのに、1の画像が表示されます。
更新ボタンを押すと新しい画像に変わっているので、
ブラウザキャッシュが効いていると思われます。
0161nobodyさん
2014/03/25(火) 20:26:46.16ID:???それなら、その場しのぎ的だけど、画像へのURLに
?t=23193123 みたくUNIXタイムスタンプつけたらいいんじゃね。
別URLになるからキャッシュされててもとりにくるはず。
0163nobodyさん
2014/03/26(水) 17:31:59.85ID:???カテゴリではなく、単なる一覧の表示順番を変えたいだけなので、
Threeビヘイビアで必要なカラム(parent_id、lft、rght)を追加するのは無駄に思いまして。
0164nobodyさん
2014/03/26(水) 18:54:27.87ID:BNu4KpVt今は自作で賄ってる
0165nobodyさん
2014/03/27(木) 01:08:52.80ID:???OrderedBehaviorが一番有名みたいですね。
こちらを試してみます。ありがとうございました。
0167nobodyさん
2014/03/27(木) 02:30:47.64ID:???デフォルトでUTF-8、LFにすることってできますか?
windows環境の話です
0168nobodyさん
2014/03/27(木) 05:28:16.61ID:GNd/C0+Yひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。ひんがら目気色悪すぎこっち見んな死ね。
0169nobodyさん
2014/03/28(金) 17:36:04.92ID:???Router::connect('/', array('controller' => 'pages', 'action' => 'display', 'home'));
アクセスしたページがトップページ(ホーム)か否かを調べるのって
$this->params['pass']の中にhomeがあるかどうか調べる方法以外ありますでしょうか?
0170nobodyさん
2014/03/29(土) 07:45:47.19ID:???0171nobodyさん
2014/03/29(土) 12:11:30.75ID:???0172nobodyさん
2014/03/31(月) 18:12:43.27ID:???inquiry_repliesかinquiry_messagesかで小一時間悩んでるんですが
どっちがいいと思いますか?
0173nobodyさん
2014/03/31(月) 18:48:56.48ID:???返信用と分かってるならinquiry_repliesでいいんじゃねーの。
用途に合った明確な名前をつけるのは分かりやすくていいよ。
ただ、あとから返信以外の用途にも使うみたいなことになって、
名前と用途が合わなくなるというのも、ありがちな話。
これに1時間悩むんだったら、
リーダブルコード ―より良いコードを書くためのシンプルで実践的なテクニック とか
読んでみたらいいんじゃね?
命名の良し悪しは場合によりけりで、いくら考えてつけても裏目に出ることはあるし、
読んだからといって悩まなくなるわけじゃないけど。
0174nobodyさん
2014/03/31(月) 19:49:24.29ID:???その本に命名規則について書いてあるんでしょうか?
正直、プログラミングよりも命名や設計で物凄く時間がかかっています。
後からやり直したくなることも何度かあるし。
やっぱり同じコード・同じ設計を何度も書くというのは避けたいので、
汎用性の高い、カスタマイズ性のある設計を考えるのですが、
そうすると時間ばかりかかって先に進めません
0175nobodyさん
2014/03/31(月) 21:19:58.42ID:???クラス名やメソッド名をBusinessLogicとかexecuteとかにしてあとあと泣くのは自分。
0176nobodyさん
2014/03/31(月) 21:29:42.21ID:???規則については書いてないかな。
もっといえば、命名についてだけ書いてあるわけじゃない。
けど、読みやすいコードに、よく考えられた変数名は重要だし、
4部のうちの1部は命名に関してだよ。
http://kadoppe.com/archives/2013/01/book-readable-code.html
自分は読み途中だからてきとうに見つけた感想文でもはっとく。
自分が読んだとこまでの感想としては、
読んだところで悩まずに書けるようにはならないかな。
けど、納期に追われておざなりになるところだし、
読めばちょっと自分で気を使っただけだと、
気を配りきれない要素を拾えるんじゃないかなと思っている。
あくまでリーダブルコード。設計については書いてないよ。
0177nobodyさん
2014/03/31(月) 23:45:02.75ID:???0178nobodyさん
2014/04/01(火) 00:05:45.77ID:???Cakeの場合、ある程度の決まり事があるのでだいぶ楽なのですが、
やはり、自分で納得行かないコードのまま進むことがあります。
かといって、他人のコード見ても分かりやすいとは思わないし。
(有名所のOSSのソースしか見てませんが
とりあえず質問した件は、inquiry_repliesにしてみます。
0180nobodyさん
2014/04/01(火) 00:50:20.63ID:lnxBtai1ドリュルリュルウリュリィブブブブブブッッ!!!!あへあへうんこまん!!!ぶりっちょ!!!
ケツの穴からドババババババババッバwwwwwwwwwwwwWWWW
wwwwwwwwwwww
WWWwwwwwwwwwww??? ? ? ? ? ? ? ????? ????????wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
なお、まにあわんもよう
0181nobodyさん
2014/04/01(火) 07:10:33.33ID:???それをちゃんと理解しているなら浪人生活なり語学留学なり存分に楽しんだらいい
0182nobodyさん
2014/04/01(火) 09:58:54.32ID:???0183nobodyさん
2014/04/02(水) 05:14:01.71ID:???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
やはり何かファイルが足りないのでしょうか?
0184nobodyさん
2014/04/02(水) 06:25:25.12ID:???cakephp/lib/Cake/Model/Datasourceにあるっしょ。
Missing Datasourceになる理由は、情報不足でよくわからんけど。
0185nobodyさん
2014/04/02(水) 11:09:44.80ID:???data[Post][test1]
のラジオボタンがあるとします。
idが、PostTest10、PostTest11、PostTest12となってしまうのですが、
これをPostTest1_0、PostTest1_1、PostTest1_2
みたいにする事って出来ないのでしょうか?
0186nobodyさん
2014/04/02(水) 13:11:18.07ID:???0187nobodyさん
2014/04/02(水) 13:32:26.95ID:???自分でも作れるけど、車輪の再発明みたいな感じで面倒だし。
0188nobodyさん
2014/04/02(水) 13:53:48.92ID:???1人でも3人でもCakePHP使うよ。
3人のうち2人がほかのフレームワークに慣れてるなら、それに合わせるけど。
0189nobodyさん
2014/04/02(水) 15:43:50.23ID:???色んなもの開発して行くうちにそれなりにライブラリは出来て行くから再発明にはならないでしょ
自分で同コストで出来ることをフレームワーク習得にさらに時間費やすならその理由が無いと
少人数小規模すぎると効率化のメリットよりも、処理の重さや習得の手間、細かい所に手を入れ出すと途端にコストが増す、無駄にシステムが大きくなるとかのデメリットのが目立つよね
0190nobodyさん
2014/04/02(水) 16:12:41.55ID:???自動で振られるIDは制御不可能です。
FormHelper をオーバーライドしてカスタマイズするしか無い。
個別に指定するなら第二引数のidキーで指定できます。
0191nobodyさん
2014/04/02(水) 16:16:36.30ID:???Zendみたいなライブラリの寄せ集め的なFWだと
他のプロダクトでも流用できたりするけど、
CakePHPとかはFWに拘束されてしまうからな。
もっと結合度の低い構成にしてほしいとは思う。
0193nobodyさん
2014/04/02(水) 17:26:18.77ID:???後半2行はCakeだろうとオレオレだろうと一緒じゃね?
開発人数や規模が変われば冗長化するのは当然じゃん。
なら、みんなで共有・共通事項で合わせられる、
Cakeのような既存のFW使うほうが、よっぽど効率がいい
0194nobodyさん
2014/04/02(水) 17:33:22.17ID:???0195nobodyさん
2014/04/02(水) 18:00:04.95ID:???経験者ならFW使う前に自作ライブラリ作ってるだろうし、
ファイル数個で済む程度のアプリなら、それ使えば良いと思うが。
0196nobodyさん
2014/04/02(水) 21:01:45.37ID:???CakePHPは完璧でもないし、すこし合わないプロジェクトな事もあるけど、
CakePHPであると言うだけで、それに慣れてる人を探すことができるよ。
オレオレに慣れてる人は、今いるメンバーだけだよ。
本当にちょっとしたものなら、自作ライブラリでもいいけど、
今ならComposerでライブラリとってきて、必要なとこだけ自分で書くのがいいと思うよ。
0197nobodyさん
2014/04/02(水) 21:31:51.71ID:???あれなんなの仕様?
0198nobodyさん
2014/04/02(水) 21:37:35.82ID:???0199nobodyさん
2014/04/02(水) 22:21:06.03ID:???あ、そっちにおいてあるんですね。
Datasource class Mysql could not be found.
って書いてあるから、てっきりファイルが何か足りないのでは?と思っていました。
もう少しソースを見なおしてみます。
>>186
1人だけど使ってます。MVCを楽にやりたかったから。
■ このスレッドは過去ログ倉庫に格納されています