【PHP】フレームワーク CakePHP 11ホール目【v1.3】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2011/02/16(水) 21:52:35ID:zCTGjUMqCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※sage推奨
※質問時もsageること
※他フレームワークとの比較等はスレ違いです
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
github - cakephp
http://github.com/cakephp
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
0503nobodyさん
2011/04/06(水) 15:30:04.66ID:???まぁ、それならそれで良いよ。ただ、そういうプロジェクトもあるって事は理解しろよ。
0504nobodyさん
2011/04/06(水) 15:54:13.60ID:???0505nobodyさん
2011/04/06(水) 16:03:54.11ID:???0506nobodyさん
2011/04/06(水) 16:07:43.86ID:???ある程度の規模のプロジェクトだと100%の規約の遵守を求められるよな。
規約を守っていなければ、動作が正常でもバグ扱い。
俺もそれが普通だと思っているのだが、そうじゃない人にとって規約ってなんなんだろう。
0507nobodyさん
2011/04/06(水) 17:03:43.47ID:???が、英語圏製なので仕方が無いのかなとも思うよ。
最良のフレームワークだとはまったく思ってない。
でも、Cakeというフレームワークを使って、
楽になる部分は多いし、使う以上は規約にそったほうが効果もでやすいからな。
それにCakeは規約どおりじゃないと苦労するフレームワークだとも思う。
単数・複数や主キー名をid以外にしたりと、逃げ道は用意されてる部分もあるけど、
そういうの使うのは、ハマリの元だわ。
0508nobodyさん
2011/04/06(水) 17:03:56.78ID:???お前らからしたら、俺がその「規約を守らなくてもいい人」だと言うことだろうけど、
>>502に書いたとおり、
俺は「規約が守らない人もいて、完全に厳守させるのは人間だから難しい。
だから、チーム毎、プロジェクト毎で分かればそれで良いじゃないか」
と言いたいだけなんだけどな。お前らはどうも頭が固いようだな。
0509nobodyさん
2011/04/06(水) 17:07:19.44ID:???0510nobodyさん
2011/04/06(水) 17:43:49.17ID:???複数形にしても、間違ってたらエラーになるわけだし。
エラーになったから規約が難しいのがおかしい、ということを許し続けると
それこそフレームワークを使う意味のないほど混沌としたソースに
なる気がする。
「複数形がわからなければ辞書で調べろ」くらいはルールにできるだろ。
0511nobodyさん
2011/04/06(水) 18:22:20.17ID:???<?php echo $this->element('header', array('cache' => true)); ?>
テストの時にキャッシュをしたくないので、core.phpの
Configure::write('Cache.check', true);
をコメントアウトしました。
しかし、キャッシュされます。
冒頭のようにビューに書いた場合、どうしてもキャッシュされるのでしょうか?
0512nobodyさん
2011/04/06(水) 20:31:22.12ID:???0513nobodyさん
2011/04/06(水) 21:42:55.64ID:???分類したいんだけど、単純にビューで echo $html->image("sub/foo.png") としても
表示出来なくて…。
こういうのは、どうすれば良いのでしょうか?
すごく簡単な事なんだろうけど、どなたか教えて頂けませんか?
0514nobodyさん
2011/04/06(水) 22:38:28.84ID:8sZZCO1iCakePHPは複合キーに対応していないとのことですが、
別に複合キーのテーブルのモデルでも
$Controller::primaryKeyに設定できないだけで、
モデルのfindメソッドとかは使えるし、
特に問題ないのかなーと思ってしまうのですが、
どのような場合に困る(対応していない)のか
馬鹿な俺にでも分かるように教えてもらえませんか?
0518nobodyさん
2011/04/07(木) 00:31:02.97ID:???カラム名どんなのがあるか最初に調べに行くのなw
そんなのModelに定義するようにすりゃーいいのに。
速度より使いやすさを取ったか。
0520nobodyさん
2011/04/07(木) 01:29:37.39ID:???ググってもこれと言った方法がありません・・。
Windows上でシェルのプログラムが正しいかテストする方法はないのでしょうか?
0521nobodyさん
2011/04/07(木) 02:46:08.85ID:???小リナックスかアンドリナックスを入れる
0522nobodyさん
2011/04/07(木) 02:54:26.99ID:???ちゃんとCLIでphpが動くように設定しておけばうごくんじゃね?
Winで開発してないから、断定的なことは申し上げられないが。
0523nobodyさん
2011/04/07(木) 03:29:37.72ID:???0524nobodyさん
2011/04/07(木) 03:35:45.09ID:???コマンドプロンプトで
php C:\htdocs\cakephp\cake\console\cake.php -app app test
みたいなコマンドで普通に実行されました。
3時間ぐらい悩みましたが、問題なく出来そうです。ありがとうございました。
0525nobodyさん
2011/04/07(木) 04:32:01.56ID:???0526nobodyさん
2011/04/07(木) 13:28:09.21ID:???0527nobodyさん
2011/04/07(木) 14:38:28.18ID:???0528nobodyさん
2011/04/07(木) 14:43:49.48ID:???0529nobodyさん
2011/04/07(木) 15:24:13.83ID:???教えてやりゃいいことだと思うんだが
0532nobodyさん
2011/04/07(木) 16:30:13.31ID:???日本のマの平均給与が低いわけがわかった
0533nobodyさん
2011/04/07(木) 17:02:38.88ID:???0534nobodyさん
2011/04/07(木) 19:10:52.62ID:???B「え?いや・・・え?これが?」
A「お前本当に馬鹿だな。全てがお前と同じ人間ばかりかよ。
これだからプログラマ脳だと言われるんだ」
C「わからないじゃなくて、分からない奴もいるって話だろ。お前がルールの全てか。」
D「「漢字読める俺マジレベル高いw」←wwwwwww」
B「・・・」
0535nobodyさん
2011/04/07(木) 19:54:40.69ID:???つぎに誰がそのソースみるのかわかったもんじゃない。
0536nobodyさん
2011/04/07(木) 20:00:22.84ID:???A「ソースのコメントに漢字使うんじゃねえボケ!読めねーだろうが!」
B「わかりました。Aさんの仕様に合わせます」
こう言えばあっさり終了するわな。どんだけコミュ力ねーんだw
自ら関係をややこしくしてるのな
0540nobodyさん
2011/04/07(木) 22:05:38.14ID:???0541nobodyさん
2011/04/07(木) 23:13:04.80ID:???0544nobodyさん
2011/04/08(金) 05:06:31.14ID:???少し見てみたら、ものによっては完成度低いのもあるっぽいんだけど、
沢山ありすぎて全部みて使えるの探すのつらす。
0546nobodyさん
2011/04/08(金) 11:13:22.78ID:???0547nobodyさん
2011/04/08(金) 13:41:36.04ID:???0548nobodyさん
2011/04/08(金) 13:46:25.03ID:???0550nobodyさん
2011/04/08(金) 13:49:24.40ID:???0551nobodyさん
2011/04/08(金) 16:19:21.29ID:???find('all', array("test"=>"test");
で、ひとつもヒットしないはずなのに
なぜか全てのレコードの要素がヒットしてしまいます
なぜヒットしてしまうのか検討がつきません
どなたか詳しい方いましたら教えていただけませんか。よろしくおねがいします
読解力ないからよくわからんけど、
Cakeが最新なら引数の指定がすでにちがう。
んでcore.phpでdebugレベルあげたらSQLや件数が確認できるから
それで見当つくんじゃないかな。
0553551
2011/04/08(金) 18:02:13.57ID:???気分を害した方いましたらすいません
>>552
ありがとうございます。引数を調べたところ無事できました。
参考にしている本の内容ではfindAll()メソッドを使っていて、
そのメソッドが新しいバージョンだと使えないみたいで
findでも同じ引数でできるものかと勘違いしてたみたいです。
0554nobodyさん
2011/04/08(金) 21:00:03.96ID:???文字コードってdatabase.phpで設定するやつ?
encoding=utf8ってやってもupdateしてくれないわ
これどういう条件だとinsertじゃなくupdateしてくれんだろ
0557nobodyさん
2011/04/09(土) 00:42:48.52ID:???各コントローラ共通の関数
これらは作れるけど、
各ビュー・コントローラ共通の関数の置く場所って用意されてないよね。
結構用途として必要な気がするけどなぁ
0558nobodyさん
2011/04/09(土) 01:14:29.30ID:???この質問たびたび見るけど
cakephp/libs or cakephp/vendors
だからな。
0559nobodyさん
2011/04/09(土) 05:15:53.72ID:???やはり自民党清和会の下に結集し、日教組を壊滅させることでしょうね。
日教組の教師に「労働者の権利」などという左翼思想を吹き込まれた連中が義務も果たさずに
サビ残は嫌だ、有給取らせろなどと権利ばかり主張しています。
あとは残業代を要求して裁判を起こしてるような腐った輩を社会全体で徹底的に叩くことでしょう。
0561nobodyさん
2011/04/09(土) 14:22:34.77ID:???自作の共通関数をlibとは考えられないな〜。
0562nobodyさん
2011/04/09(土) 14:26:08.69ID:???/model配下には各テーブルに対応したvalidationなどを作成すると思うのですが、
実装者が存在しないテーブルのmodel名でmodel.phpを作りました。
要件的に「動けばOK」なので特に問題は無いのですが、Cakeの規約に反しているように感じています。
テーブル:
files(web上にアップロードしたファイルのパスやファイル名を保持する。ここでDL可としたファイルのみ、ダウンロードなどが可能)
実装:
files.phpにはvalidation。upload機能の場合のみ、upload.phpを使用。
個人的にはfiles.phpにすべて記述すべきと思ったのですが、どうでしょうか。
0563nobodyさん
2011/04/09(土) 14:53:58.71ID:???vendorsは廃止になってないよ。
以前は、vendors/cssやvendors/img、vendors/js にファイルを置くと
webdir配下に置いてあるのと同じように使えてたけど、それが廃止になっただけ。
0565nobodyさん
2011/04/09(土) 15:00:10.04ID:???0566nobodyさん
2011/04/09(土) 15:02:11.37ID:???その実装者の実装みてないから、良い実装かどうかはなにもいえないけど、
モデルを作ったことに関しては問題ないと思うよ。
この辺を読むとなにか分かるかもね。
http://www.1x1.jp/blog/2008/04/cakephp_model_6misinformation.html
http://d.hatena.ne.jp/hiromi2424/20101122/1290379655
0567nobodyさん
2011/04/09(土) 16:44:49.74ID:???>2. DBを使わないといけない(DB操作が無いと使えない)
なるほど。
テーブルに直結していなくてもいいのですね。controllerの肥大化は確かにまずいですね。
0568nobodyさん
2011/04/09(土) 20:07:55.18ID:???コントローラのメソッドの引数が バリデーションに引っかかると消えてしまうので悩んでいます。
http://localhost/lists/additem/7
↓ バリデーションに引っかかると
http://localhost/lists/additem
cake bake で作られた edit メソッドではバリデーションに引っかかってもちゃんと引数を引き継いでいるんですが、イマイチ仕組みがわかりません。
どの辺りを調べれば良いかなど、アドバイスをお願いします。
0569nobodyさん
2011/04/09(土) 20:13:14.37ID:???よくわからんけど、URLが変化してるってなら、リダイレクトしてんじゃないの?
遷移・リダイレクトなしにURLが変化する事は流石にないし。
というかCakeがどうこうできる部分でもない。
0570nobodyさん
2011/04/09(土) 23:04:19.28ID:???なに、IDってauto_incrementじゃないとUPDATEできないの?
それ問題だろ。マジで。
0571nobodyさん
2011/04/10(日) 00:14:09.48ID:???Tag hasMany Postの関係のモデルがあるのですが、
Tagのうち、Postと結びついているもののみを取得したい場合どのように検索するのが一番よいのでしょうか?
0572nobodyさん
2011/04/10(日) 00:18:50.03ID:???form->createのarrayに'url'を追加してみたらどうでしょう。
同じ問題を見たことがある
0573nobodyさん
2011/04/10(日) 01:30:39.63ID:???Tag hasMany Postって変わった構造だな。
まぁそれは置いといて、Tag側のテーブルにカラム追加しないと使えないけど、
belongsToアソシエーションのcounterCache使えば?
Postモデルの$belongsTo = array('counterCache' => true) して、
tagsテーブルにpost_countフィールド作れば良かったはず。
詳しくはぐぐれ。
0574nobodyさん
2011/04/10(日) 02:04:25.16ID:???TagとPostの名前を例に使ったのはちょっと不適切でしたね。
counterCasheの存在を知らなかったので、調べてみます。
ありがとうございました。
0575nobodyさん
2011/04/10(日) 18:52:08.74ID:???また一人で開発しようとする場合は何人日かかります?(デザイン抜きで)
そもそも、その規模のものはcakephpでは運用無理ですか?RoRとかのほうがいいのかな?
0580nobodyさん
2011/04/10(日) 21:04:02.20ID:???規模なら結構作れると思うよ。俺も似たようなSNS作ってるし。
アクセス増加はキャッシュでどうにかなると思う。
Cakeのじゃなくてmemchachedを使うとか。
0581nobodyさん
2011/04/10(日) 21:44:52.07ID:???CakeってDBのレプリケーションに本体レベルで対応してなよね?
Cakeは中・小規模向けだと思うから、mixi規模は無理じゃないかな。
機能だけそろえるってなら話は別だけど、
シンプルなSNSから発展していろんな機能がついてるから、
作るのはかなり時間かかると思うぞ。
開発者の能力にもよるだろうけど、普通に3桁人月じゃないかな。
0582nobodyさん
2011/04/10(日) 23:46:27.64ID:???0583nobodyさん
2011/04/11(月) 02:22:00.62ID:???コンテンツの事まで言うと、
アバターなんかも3Dで作った物をgifに変換して・・・みたいにしてるみたいだし
cakeなんかで作る部分とは違う技術が必要だよね。
0584nobodyさん
2011/04/11(月) 03:36:02.16ID:???てか、Cakeで生成するファイルでDB分けられるんだから、
そういう負荷対策出来ると思うんだけど。
0585nobodyさん
2011/04/11(月) 10:36:06.39ID:???List, SubList にそれぞれ no という項目あって、それぞれを no 順で取得したいのですが、
List から find('all') で取得した場合 List は no 順になっても SubList が id 順になってしまいます。
以下のように取得して View に渡しているんですが、いいやり方ありますでしょうか?
$this->set('lists', $this->List->find('all', array('order' => array('List.no, List.id DESC'))));
0586nobodyさん
2011/04/11(月) 11:13:07.76ID:???0587nobodyさん
2011/04/11(月) 16:45:08.99ID:???http://log.ryti.ch/items/view/3773
0588nobodyさん
2011/04/11(月) 18:51:32.41ID:???結局SQL書いてるわ....
0589nobodyさん
2011/04/11(月) 18:52:42.64ID:???それはやってみたんですが、
$this->List->find('all', array('order' => array('ListSub.no, ListSub.id DESC')
とすると ListSub なんてないと怒られてしまいます。
0590nobodyさん
2011/04/11(月) 19:03:42.57ID:???array('order' => 'List.no DESC, ListSub.id DESC')
か
array('order' => array('List.no' => 'DESC', 'SubList.id' => 'DESC'))
のどっちかにしろって話じゃないの?
0591nobodyさん
2011/04/11(月) 19:29:41.23ID:???何度もごめんなさい。
書き方変えてみたけどダメでした。
List から id はとってこれるけど、
$this->List->find('all', array('order' => array('List.id' => 'DESC')
こうすると ListSub.id なんてカラムはないよと言われるんです。
this->List->find('all', array('order' => array('ListSub.id' => 'DESC')
SQL Error: 1054: Unknown column 'ListSub.id' in 'order clause'
List は ListSub を hasMeny、ListSub は List を belongsTo でそれぞれ関連づけています。
まだモデルの仕組みなどわかってない部分が多いので、ここを調べろなどのアドバイスでもお願いします。
0592nobodyさん
2011/04/11(月) 20:45:04.42ID:???悩むくらいならそれもありだと思う。
ナンバリングのために、あるテーブルにsaveした場合の処理は、
sqlでUPDATE文書いた。
0593nobodyさん
2011/04/11(月) 21:19:28.81ID:???たぶんやりたいことは
this->ListSub->find('all', array('order' => array('ListSub.id' => 'DESC')
なんじゃないか
0594nobodyさん
2011/04/11(月) 21:41:28.44ID:???コントポーネントの数がすごいことになった。
0596nobodyさん
2011/04/11(月) 23:27:03.36ID:???0597513
2011/04/11(月) 23:27:39.13ID:???親切なレスありがとうございます。
パーミッションは問題無くて、単に拡張子が大文字になってただけだった。
すぐにお礼レスしたかったけど、規制かかって書き込めず、忘れてしまってた。
0598nobodyさん
2011/04/12(火) 00:32:09.98ID:???数えたら50〜60ぐらい。たいしたことなかった。
コントローラも同じくらい。
ゲームはロジックが複雑だから、コントローラにごちゃごちゃ書きたくなくてコンポーネントに書いた。
0599nobodyさん
2011/04/12(火) 01:03:22.27ID:???Cakeだと重くね?
0601nobodyさん
2011/04/12(火) 02:05:11.25ID:???0602nobodyさん
2011/04/12(火) 02:31:07.71ID:???■ このスレッドは過去ログ倉庫に格納されています