トップページphp
1001コメント321KB

【PHP】フレームワーク CakePHP 11ホール目【v1.3】

レス数が1000を超えています。これ以上書き込みはできません。
0001nobodyさん2011/02/16(水) 21:52:35ID:zCTGjUMq
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生した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
0938nobodyさん2011/06/19(日) 02:49:47.55ID:???
>>936
appまでの途中のパスに日本語使ってるとか無い?
0939nobodyさん2011/06/19(日) 03:01:01.96ID:???
>>937
treeビヘイビアを使えば、親のIDを指定してModel->delete()で子も消せるよ。
ダルマ落しみたいに中抜きしたい時は、 Model->removeFromTree()で。
0940nobodyさん2011/06/19(日) 07:14:15.09ID:???
変なバグに遭遇して調べ中なのですが
Cakeの最新バージョンでは、以下の不具合って直ってますか?
Group Byしている時にpaginator->number()が表示されない件
http://d.hatena.ne.jp/aroundthedistance/20090728/1248784179
0941nobodyさん2011/06/19(日) 12:53:39.87ID:???
>>939
treeビヘイビアというのがあったんですね。
今まで自作してツリーをカスタマイズしてました・・。

大変参考になりました。ありがとうございました。
0942nobodyさん2011/06/20(月) 15:10:17.74ID:???
都道府県のDBってどうしてる?
1~47まで都道府県のテーブル用意して、住所などが必要なテーブルでそのIDを設定するのが
本来の正しい設計かもしれないけど、
実際Cake(PHP)でやるとめんどくさいよね。毎回selectが増えるだけのような気がするし。
VARCHARで実装してしまうのはだめかな?
0943nobodyさん2011/06/20(月) 18:53:56.79ID:???
lithium、0.9.9の次、1.0じゃねーのかよw
公式リリースはまだ先なのかね?
0944 忍法帖【Lv=13,xxxPT】 2011/06/20(月) 22:37:52.29ID:???
>>942
面倒だったら日本郵政グループのKEN_ALL.CSVでマスターテーブル1つ作っちゃえばいいのでは?
0945nobodyさん2011/06/20(月) 23:28:05.47ID:???
>>942
フォームの選択の時は、bootstrapに書いてるな。
Configureに入れて。DBでは管理しない。

>>944
郵便番号から住所検索するとき、それ使ってるけど
ちょっと思うのが気になるよね。10万件ほどあるから当然なんだけど。
0946nobodyさん2011/06/20(月) 23:28:45.79ID:???
思う→重い

CakeでAjaxから読み込むとき、ちょっと重いんだよな
出力されるまで時間がかかる。
0947nobodyさん2011/06/21(火) 16:49:04.36ID:???
まだこんな時代遅れなの使う奴が存在してたのか
0948nobodyさん2011/06/21(火) 17:45:31.67ID:???
時代の最先端はどこですか?
0949nobodyさん2011/06/21(火) 19:26:01.33ID:???
文句言う前に時代後れじゃないFWを教えてください
0950nobodyさん2011/06/21(火) 23:28:19.97ID:???
やっぱりJavaのSpringだろ。

フレームワークなのにそのフレームワークを使って
書いたコードはフレームワークに依存しない。

という優れもの。
0951nobodyさん2011/06/21(火) 23:34:17.44ID:???
ちょっと何言ってるか分からないです
0952nobodyさん2011/06/22(水) 04:38:21.61ID:???
phpでおながいします
0953nobodyさん2011/06/22(水) 10:34:00.18ID:???
cakeで書いたものは移植性がない
0954 忍法帖【Lv=14,xxxPT】 2011/06/22(水) 12:36:35.63ID:???
フレームワークの変更はプログラミング言語が変更されるくらいのイメージ
0955nobodyさん2011/06/24(金) 10:38:37.73ID:???
もしかしてsetActionで別のアクション呼んでしまったら、
error-messageは出力されなくなるのか?

actionA() {
  if ($this->validates()) {
    $this-Model->save();
  } else {
    $this->setAction('actionB');
    return;
  }
}

↑このような状況で、actionBに飛んでactionBのビューが表示されたときに、
フォームのinputの下にerror-messageがでない。
ちなみに、actionAとBは同じフォームを中で呼んでいて(element)、Aを表示させるとerror-messageはちゃんと出る。
0956nobodyさん2011/06/25(土) 13:25:40.60ID:???
hasMany関係のデータを削除するとき、どうしてます?

ModelにhasManyを書いて、dependentをtrueにして削除するか、
削除時に各テーブルをforeachで回してdeleteするか。

自分はhasManyをModelに書かずに必要なときだけ
bindModelしています。
0957nobodyさん2011/06/25(土) 14:03:37.25ID:???
そうですか
0958nobodyさん2011/06/25(土) 15:25:53.73ID:???
そうですよ
0959nobodyさん2011/06/26(日) 22:52:58.28ID:???
PaginationHelperで出力するリンクって
設定かでquery string形式の(?page=1みたいな)リンクに
変更できますか?
結局PaginationHelperのソース書き換えて対応したんですが
書き換えずに済む方法があれば方法を教えて欲しいです。
バージョンは1.3です。
0960nobodyさん2011/06/27(月) 23:48:47.50ID:???
>>943
ズコー
0961nobodyさん2011/06/28(火) 03:16:25.11ID:???
Lithium 1.0は11月リリースの予定らしい。
symfony2に浮気しようかな。

他にPHP 5.3ベースのフレームワークってある?
0962nobodyさん2011/06/28(火) 04:25:36.29ID:???
どうして5.3ベースが良いの?
0963nobodyさん2011/06/28(火) 08:35:52.44ID:???
もはや5.2以前のシンタックスがタルい。
0964nobodyさん2011/06/28(火) 08:46:54.56ID:???
でも、5.3以前の鯖も多いよね
0965nobodyさん2011/06/28(火) 10:02:59.80ID:???
5.3以降と以前で主に何が変わったの?
0966nobodyさん2011/06/28(火) 22:29:51.03ID:???
http://php.net/manual/ja/language.oop5.late-static-bindings.php
0967nobodyさん2011/06/29(水) 02:01:54.30ID:???
cakephpで3年くらいやったけど
俺俺フレームワークの方が開発速度が速い。
そしてphpだけしゃ武器にはならんから
object-cを習得中。
先を見越せばphpのフレームワークなんて、時代おくれ。
0968nobodyさん2011/06/29(水) 03:29:14.31ID:???
とバカが申しております
0969nobodyさん2011/06/29(水) 08:59:10.65ID:???
>>967
俺もCake風のオレオレフレームワークを作った
どうせMySQLしか考慮しないし、速度の遅さは致命的だからね。
キャッシュ作っても新たにデータを投稿する度に削除する必要があるし、
速いに越した事はないだろう。
0970nobodyさん2011/06/29(水) 09:38:48.03ID:???
メンテする身にもなれや
0971nobodyさん2011/06/29(水) 10:11:36.12ID:???
自分がメンテする場合は?
0972nobodyさん2011/06/29(水) 11:53:23.28ID:???
会社でやるんじゃなくて個人でやるんならいいんじゃない?
会社ならやめてほしいな。
お前がずっと責任とれるはずもないんだから
0973nobodyさん2011/06/29(水) 13:19:00.43ID:???
会社でやってもドキュメント作ればいいじゃん。
Cakeのコーディングすら、個々のPGで癖があるのに
0974nobodyさん2011/06/29(水) 14:04:09.00ID:???
>>973
多分他人が作ったオレオレフレームワーク触ったことないんだろうな。
ものすごい苦痛だよ。

フレームワーク自体のバグは誰がなおす?
そのフレームワークの思想は大多数にウケるのか?
0975nobodyさん2011/06/29(水) 14:09:42.82ID:???
俺は生PHPが好き
0976nobodyさん2011/06/29(水) 14:22:57.04ID:???
>>975
あんっちゃんとゴム付けて
0977nobodyさん2011/06/29(水) 14:44:32.33ID:???
自分が一年前に作ったオレオレフレームワークだっていじるの苦痛だもんな。
0978nobodyさん2011/06/29(水) 15:48:10.37ID:???
だから、他人のコードはオレオレじゃなくても苦痛だっての
0979nobodyさん2011/06/29(水) 16:21:09.22ID:???
俺ベーマガ世代だから他人のコード読むのなんて余裕
0980nobodyさん2011/06/29(水) 16:30:41.22ID:???
バーチャルフィールドで登録数を表示する事って出来るのでしょうか?

・Userモデル
id,categories_id,name
・Categoriesモデル
id,name

として、「そのカテゴリに何人のユーザが登録しているのか?」
をバーチャルフィールドとして取得したいと思います。
バーチャルフィールドで書ける場合、書き方を教えてください
0981nobodyさん2011/06/29(水) 17:22:31.29ID:???
>>980
UserがbelongsTo Categoryならば、
Categoryにuser_countフィールドを作れば自動でカウントしてくれるよ。
0982nobodyさん2011/06/29(水) 17:37:38.74ID:???
>>981
var $virtualFields = array('user_count'=>'COUNT(User.id)');

を、Categoryモデルに書いたらカウント数を取得できました。
ありがとうございます。
0983nobodyさん2011/06/29(水) 20:13:54.90ID:???
cakephpで3年くらいやったけど
俺俺フレームワークの方が開発速度が速い。
そしてphpだけしゃ武器にはならんから
object-cを習得中。
先を見越せばphpのフレームワークなんて、時代おくれ。
0984nobodyさん2011/06/30(木) 09:37:18.67ID:???
言語がどうのって考えてる時点でセンスないからやめたほうがいい
0985nobodyさん2011/06/30(木) 10:52:27.52ID:???
センス無くても仕事は出来るよ
0986nobodyさん2011/06/30(木) 17:41:27.29ID:???
$this->set('items', h($items));

コントローラで上記のように毎回h()でエスケープするのが面倒だし、
エスケープし忘れも発生してしまいそうだから、
自動でsetした値をエスケープしたいんだが、どうしたらいい?
0987nobodyさん2011/06/30(木) 18:02:55.94ID:???
え?エスケープって既にされてなかったか?俺の勘違いかしら・・・
0988nobodyさん2011/06/30(木) 18:05:04.83ID:???
エスケープはViewの出力する部分で使うべきだよ
0989nobodyさん2011/06/30(木) 18:12:03.20ID:???
>>987
されてるの?
俺はされてないぞ

>>988
例えば
ビューで
名前だすときは、
echo h($user['User']['name']);
住所出すときは
echo h($user['User']['address']);
ってやるってこと?
>>986の方法のほうが楽なような・・・

エスケープって自動でされた覚えが俺もあるんだけど、気のせいかしら
0990nobodyさん2011/06/30(木) 18:22:21.93ID:/bA75Cwr
DBってよいのでしにない性別(1:男、2:女)と年代モデル(1,10代,2,20代・・・)をつくろうとしているんですが、(DBを使うまでもないデータ
普通のdaoと同じようなディレクトリ&クラス名で作ってしまょうか?
SeibetuModel
NendaiModel
みなさんどうされてますか?
0991nobodyさん2011/06/30(木) 18:24:17.90ID:???
日本語でおk
0992nobodyさん2011/06/30(木) 18:55:23.01ID:???
慣れない日本語を使って書き込んでくれてるんだろうから答えてあげたいけど、
ごめんわからんw
0993nobodyさん2011/07/01(金) 10:00:51.93ID:???
>>961
doophp,codeigniter,zendはphp5.3に対応してて警告もエラーも出ない
0994nobodyさん2011/07/01(金) 10:32:02.04ID:???
PEARとかのクラス名とCakeのコアクラスが衝突しちゃう場合
どう対応してますか?

ソース修正して、クラス名が出てくるところ全部書き換えるくらいしか思いつかないんですが・・・

Cakeはコアクラスにプリフィックス付いてないのがツライ・・・
0995nobodyさん2011/07/01(金) 10:37:12.36ID:???
そのために主要フレームワーク開発者が集まって議論したじゃないか
2.0が出るまで待つしかないだろ
0996nobodyさん2011/07/01(金) 13:47:40.87ID:???
>>990
テーブル、モデルとも作らない。
bootstrap.phpに
$GLOBALS['masters']['sex'] = array(1 => '男', 2 => '女');
みたいに書いてる。
0997nobodyさん2011/07/01(金) 14:09:55.01ID:???
$GLOBALS??

俺は、bootstrap.phpに
Configure::write('Masters.sex'array('1' => '男', '2'=> '女'));
って書いてるけど・・・
0998nobodyさん2011/07/01(金) 15:10:52.19ID:???
そういう意味だったのか。君たちすごい。
enum / set が使えれば良いのになって思う事はあるな。mysql限定になっちゃうけど。
0999nobodyさん2011/07/01(金) 16:22:05.12ID:???
1000取る人次スレ立ててから取ってくれ
1000nobodyさん2011/07/01(金) 16:27:18.64ID:???
やなこった
10011001Over 1000Thread
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。