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

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

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2010/07/23(金) 09:13:26ID:v3m09M9u
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
0484nobodyさん2010/09/09(木) 10:41:38ID:???
なりすましで荒らす奴がいるから質問はID出すのが普通じゃね
0485nobodyさん2010/09/09(木) 11:27:23ID:???
文句や煽りレスをするよりわかるなら教えてやれば良いのにっていつも思う。
自分が知ってて簡単に答えられそうで、尚かつめんどくさくないなら。
面倒な奴は無視すれば良いんだよ。

誰かに教える事で不利益を被るのか?自分もググって他人に教えてもらうのに。
0486nobodyさん2010/09/09(木) 11:30:37ID:???
>>484
なりすましで荒らすやつより、スレが上がって変なやつわくことのほうがはるかに多いよ?
0487nobodyさん2010/09/09(木) 12:25:37ID:???
じゃあトリつければいいよ
とにかくなりすましができる環境で質問してあれは俺じゃないとか
実はあれ頴田の俺でしたみたいな感じになるのが荒れる最大の原因だから
0488nobodyさん2010/09/09(木) 12:31:13ID:???
いやそれが最大の原因ではないよ
0489nobodyさん2010/09/09(木) 13:20:50ID:???
>>487
お前馬鹿か?それかネットやったことないとか?

荒れるのは十中八九「誰かが構うから」だ。構わず無視しとけばいいだろ。
心底教えて欲しいと思う奴はID出すし、騙られるのが嫌な奴もそうする。
0490nobodyさん2010/09/09(木) 13:22:33ID:???
昨日から、>>487みたいな「俺ルール」押しつける奴は何がしたいんだ。
いや、おそらく同一人物かなw
0491nobodyさん2010/09/09(木) 13:39:32ID:???
構わなくても連投してたPerl忍者とかいたじゃん
0492nobodyさん2010/09/09(木) 14:04:42ID:???
いたからなんだ?
0493nobodyさん2010/09/09(木) 15:55:22ID:???
>>483
レス見る前に自己解決したんじゃないの?よくあること
0494nobodyさん2010/09/09(木) 16:05:49ID:???
>>493
仮にそうだとしても、俺なら「自己解決しました」なんて、書けない
レスくれた人に申し訳ないわ
0495nobodyさん2010/09/09(木) 16:07:57ID:???
どうでもいいよfind('all')くらい。きにすな
0496nobodyさん2010/09/09(木) 16:09:51ID:???
>>494
いやだからレス見る前に書き込んだんだろ
0497nobodyさん2010/09/09(木) 16:15:27ID:???
>>496
うん。論外だろ、それ
0498nobodyさん2010/09/09(木) 16:25:31ID:???
find('all');すごいです!!ありがとうございます!!

他所でやれ
0499nobodyさん2010/09/09(木) 16:30:25ID:???
マジで自称アングラサイトの「俺は三行まで」を求める馬鹿がいるとは・・・
0500nobodyさん2010/09/09(木) 16:31:11ID:???
俺は三行までってなんだよwww
0501nobodyさん2010/09/09(木) 17:26:36ID:???
さんぎょう で変換しても三行が出てこないgoogleIME
0502nobodyさん2010/09/09(木) 17:43:47ID:???
どうでもいいがぐぐったら、findAllで解説しているサイトが多くてうざいな
Cakeは情報が多くて助かるが多すぎるのもあれだな
0503nobodyさん2010/09/09(木) 17:48:27ID:???
仕様をころころ変えるCakeが悪いと思うが
0504nobodyさん2010/09/09(木) 17:52:06ID:???
findAllで良かったろ!なにしてんだ
0505底辺2010/09/09(木) 21:47:14ID:???
>>405
どういうこと?
爆発の恐れって事?
0506nobodyさん2010/09/09(木) 21:50:33ID:???
>>505
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rlz=1T4GPTB_jaJP291JP291&q=bom
0507nobodyさん2010/09/10(金) 00:50:01ID:???
BOMがついて困ってる人はいたけど
BOMつけようとする奴ははじめてみた
0508nobodyさん2010/09/10(金) 00:51:02ID:???
爆発するから気をつけないとな
0509nobodyさん2010/09/10(金) 12:38:20ID:???
1.3で、デバッグ用にSQL文を表示する方法を教えてください。
ぐぐったら、<?php echo $this->element('sql_dump'); ?>
でいけるとすぐ出てきたのですが、やってみたら
Not Found: /xxx/xxxxx/app/views/elements/sql_dump.html;
とエラーになります。
elements/sql_dump.htmlがないみたいなんですがどこかで入手できるのでしょうか?
0510nobodyさん2010/09/10(金) 13:46:37ID:???
>>509
>>483
0511nobodyさん2010/09/10(金) 14:00:06ID:???
>>509
あぁすまん、よく読んでなかったわ。
sql_dump.ctpは/xxx/xxxxx/cake/views/elementsにあるはずなんだが、ないか?
0512nobodyさん2010/09/10(金) 14:06:03ID:???
>>509
なんで、 .html なの? sql_dump.ctp だと思うが
拡張子変えてる?
0513nobodyさん2010/09/10(金) 14:51:11ID:???
第三者だが、>>509に書いてあるコードを今開発しているビューに貼り付けたら
普通にSQL文のテーブルが出力されたけどな。
やっぱ、元ファイルの拡張子をhtmlにしたのが原因だと思う。
0514nobodyさん2010/09/10(金) 15:15:18ID:???
いや、元ファイルじゃなくて、viewの拡張子をhtmlにしてるんじゃ?
こんな弊害あるのね
0515nobodyさん2010/09/10(金) 15:30:29ID:???
こうしたら読み込めたりしないかな?やってないけど
<?php echo $this->element('sql_dump.ctp'); ?>
0516nobodyさん2010/09/10(金) 15:57:09ID:???
>>515
sql_dump.ctp.html を読みに行きそう
0517nobodyさん2010/09/10(金) 16:16:11ID:???
話がちょっとずれるが、viewの拡張子をphpに変更したとき、
「view.php」というviewファイルを扱おうとしたら動作がおかしくなった。
0518nobodyさん2010/09/10(金) 16:30:54ID:???
>>515
foreach ($paths as $path) {
if (file_exists($path . 'elements' . DS . $name . $this->ext)) {
$file = $path . 'elements' . DS . $name . $this->ext;
break;
}
}

ってなってるから無理

cssだと拡張子ついててもOKなのに、こういう統一性がないところが嫌だな
0519nobodyさん2010/09/10(金) 23:46:45ID:???
>>511-
cake/views/elementsのほうにありました。app/views/elementsの方見てた。
解決しました、アリが東
0520nobodyさん2010/09/11(土) 23:25:50ID:7mKdJQTU
appディレクトリを2つ用意した場合で
それぞれのapp内で同じコンポーネントやヘルパーを使いたいとします。

その場合、どちらかをrequireして読み込む方法しかないのでしょうか?
0521nobodyさん2010/09/11(土) 23:39:30ID:???
通常のappとそれをコピーしてapp_adminにしてURLで使い分ける方法教えてください
0522nobodyさん2010/09/11(土) 23:42:40ID:???
なんでそんなことしなきゃいけないんだ
0523nobodyさん2010/09/11(土) 23:43:36ID:7mKdJQTU
自己レスです。bootstrap.phpに以下のように共通ディレクトリを指定して
そこにファイルを置くと、app内に置かなくても読み込まれました。
App::build(array(
'helpers' =>array(ROOT . DS . 'common' . DS .'helpers' . DS),
));

こういう便利な機能があったんですね。もう少しマニュアル読んで勉強します。
0524nobodyさん2010/09/11(土) 23:57:14ID:???
それURLで使い分けれてなくね?
0525nobodyさん2010/09/11(土) 23:58:07ID:???
その質問は>>521だろ?
0526nobodyさん2010/09/12(日) 00:00:49ID:???
別人だったんだ・・・
0527nobodyさん2010/09/12(日) 00:53:23ID:???
>>522
PHPで作る携帯サイトって本を買ったんだけど、
appフォルダとapp_adminをドメインで分けて作っていっくことを前提で解説してあったんで
0528nobodyさん2010/09/12(日) 00:58:08ID:???
>>527
別の方法考えな。
appとapp_adminを分けるってことはそれぞれのフォルダにいくつか同じファイルが存在するってことだろ?
バグ生み出す原因を作るだけだぞ
0529nobodyさん2010/09/12(日) 01:00:58ID:???
>>527
ようするに別アプリケーションなわけですよ。
てかその本ヒドイ予感
05305282010/09/12(日) 01:30:51ID:???
>>527
その本持ってたわw
やり方は本に書いてあるから、よく読め

>>529
前半部分しか読んでないけど、新たな発見があって悪くはなかった。
p118の表とかCakeの流れが分かりやすく書かれてたし。
0531nobodyさん2010/09/12(日) 02:32:07ID:???
俺もその本持ってて公開用・管理用とで分けてるけど、何がいけないんだ?
同じコントローラーでも公開・管理で仕様が異なるんだから
バグの原因にならないと思うけど。

むしろ、1つのファイルに長々とコードを書いていくことが
バグや見落としの原因になるぞ。
0532nobodyさん2010/09/12(日) 02:53:28ID:???
>>531
あぁスマン>>528は本見る前に書いたレスだから忘れてくれ。

同じコードがあちこちに散在しているプロジェクトは修正忘れが起きやすくバグをうむ。
だから、>>528みたいな忠告をしたんだけど、ソース見てみたら、
共通なのはapp_model.phpとか、あまりないのな。
0533nobodyさん2010/09/12(日) 03:16:47ID:???
>>531
ついでだから、こちらも質問させてくれ。

1つの関数に長々とってなら分かるけど、
1つのファイルに長々とコードを書いていくとバグの原因になるのはなんで?
0534nobodyさん2010/09/12(日) 03:23:34ID:???
てか共通な部分はどうするの?
モデルなんて一緒じゃないの?
0535nobodyさん2010/09/12(日) 03:58:40ID:???
自分はやんない派だけど検索パスの追加かなー?
0536nobodyさん2010/09/12(日) 04:35:47ID:???
あ、そっか
views,controllersは別々で問題ない。
configあたりはほぼ同じ内容でコピペなんだろうね

でもなんだかんだで同じ処理って出てくるよなぁ
メンテナンス性は落ちそうに思うんだけどな
0537nobodyさん2010/09/12(日) 05:12:08ID:???
>>533
前者がわかるのになぜ後者がわからないの?
単にコードが長いと見落としがあるだろ。
それ以外も出来るだけコードを簡潔にするのが良いって聞いたこと無いか?

>>534
それは>>523にすればいいんじゃねぇ?
実質、configファイルのコピーだけだと思う。

俺の場合、公開用・管理用とで分けてるから、同じような処理は出にくいな。
findのconditionやsaveの条件も異なるし。ビューの表示する内容も。
0538nobodyさん2010/09/12(日) 05:14:56ID:???
ま、appを分けなくても function admin_index()とか
コントローラー内でアクション分けする方法もあるから、
自分が管理しやすい方法でやればいいと思うよ。
05395322010/09/12(日) 09:03:48ID:???
>>537
コロコロ意見変わってスマンが、やっぱり>>532は撤回。
たまたまチェックしたmodelのファイルの中身がアソシエーションとバリデーションの
設定くらいしか書いてなかったから、このくらいならいっかと思ったけど、
よくよく調べると、他にも同じようなコードが散在しているね。

メンテナンス性を考えるとモデルくらいは>>523のようにした方がいい気がする。


>単にコードが長いと見落としがあるだろ。
>それ以外も出来るだけコードを簡潔にするのが良いって聞いたこと無いか?


関数なりメソッドなりのコードを簡潔にするってのは聞いたことあるけど、
ファイルを短くた方がいいなんて聞いたことがないな。
ファイル分割したら、コードの見落としって減るか?
1つのファイルに100個ぐらい関数あったら、見落としそうってのも分かるけど、
Cakeのファイルなんて普通は多くても10個や20個じゃない?
0540nobodyさん2010/09/12(日) 13:24:32ID:???
なるへそ
0541nobodyさん2010/09/12(日) 13:44:17ID:???
>>539
あんまりスクロールが長いと可読性が下がって見落としが増える。
コメントを充実させたり、役割ごとにきちんとファイル分けした上での関数10個なら問題ないと思う。
ごった煮でファイル名が曖昧になるようなファイルは関数10個でも見辛い。
05425322010/09/12(日) 14:02:34ID:???
>あんまりスクロールが長いと可読性が下がって見落としが増える。
PDTみたいなの使ってない?
PDTだと関数一覧が表示されるから、そういう理由で可読性が下がることはないと思うぞ。
便利だし、使ってみたら?

>ごった煮でファイル名が曖昧になるようなファイルは関数10個でも見辛い。
それは論外でしょ
0543nobodyさん2010/09/12(日) 15:11:59ID:???
>>542
普通にありえるだろ。
数学ファイルなのか、ベクトル計算ファイルなのか、二次元ベクトル計算ファイルなのか、内積計算ファイルなのか。

抽象化されたファイル名になればなるほど、およそ関係ないか、他でも再利用可能な便利関数でてくる。
トレードオフな関係に論外はありえない。
0544nobodyさん2010/09/12(日) 16:11:10ID:???
>>542
君は会員専用や管理画面も同じファイルに書いてるの?
0545nobodyさん2010/09/12(日) 17:27:22ID:???
>>544
自分が書いたCakeのアプリはそうだね。
分割してもControllerやModelのコードの半分以上が共通になるような仕様だったから。

>>527のControllerみたいに共通する部分がほとんどない場合は分割すればいいと思うよ。


>>543
曖昧になるのは単にセンスがないだけだと思うのだが。

たぶん単なる例えで言ったんだろうけど、
>数学ファイルなのか、ベクトル計算ファイルなのか、二次元ベクトル計算ファイルなのか、内積計算ファイルなのか。
って、全部まとめてmathファイルでよくね?
0546nobodyさん2010/09/12(日) 17:49:39ID:???
>>545
センスで作られたコードほど読み辛いものはないし
曖昧なケースなんてコーディングしてればいくらでもでてくるだろ…

中、大規模なコーディングしないと解らないのかもしれん。
0547nobodyさん2010/09/12(日) 19:06:17ID:???
オブジェクト指向初心者の私に誰かアドバイスをくだされ。

model内の変数を処理する時に、配列を使うか、オブジェクトにしちゃうかの判断は
どうすればよいでしょうか?

オブジェクトってどこからでも取り出せて便利だから、今まで 

$thisMonth = date(m);
こんな感じでやっていたのも、

$this->thisMonth = date(m);

のように基本的に全部オブジェクトにしたらいいんじゃないか?って思っちゃったのですが、
大きな間違いでしょうか?(重くなるとか・・)
0548nobodyさん2010/09/12(日) 19:13:04ID:???
>>547
えーと、なにを言いたいのかサッパリ分からない。
05495472010/09/12(日) 19:21:33ID:???
>>548

分かりにくくて申し訳ないです。

functionをまたいで使用する値を格納する時に、
全部オブジェクトにしちゃうのはまずいのだろうか?っていう疑問です。

下記のような形の時です。

public function getDate(){

$this->thisMonth = date(m);
}

public function showDate(){

$this->getDate();
echo $this->thisMonth;
}
0550nobodyさん2010/09/12(日) 19:22:56ID:???
それただのメンバ変数
というか此処で聞くことじゃないってわからないの?
05515472010/09/12(日) 19:30:59ID:???
すいません。スレ違いでしたか。
申し訳ありませんでした。

メンバ変数というのですね、ググって勉強しなおします。
どうもありがとうございます。
0552nobodyさん2010/09/12(日) 19:54:10ID:???
ちょww
単に覚え間違いだったのかw
0553nobodyさん2010/09/12(日) 19:59:05ID:???
別に笑うところじゃないし。何がおかしい?
0554nobodyさん2010/09/12(日) 20:03:01ID:???
ちょwwwwwwwwwwwwww
0555nobodyさん2010/09/12(日) 20:08:24ID:???
呼び名なんて別にどうでもいい。
最初からソース提示してるんだからわかる。スレ違いなだけ。
それに対して「単に覚え間違い」とかずれたツッコミしてるんだけど?
0556nobodyさん2010/09/12(日) 20:08:24ID:???
>>553
メンバ変数をオブジェクトだと思っていたところ。
そしてそれをオブジェクト指向と関係があると思い、
CakePHPのスレで質問したところ。
更に、547自身が何を笑われているかわからないところ。
0557nobodyさん2010/09/12(日) 20:09:17ID:???
>呼び名なんて別にどうでもいい。
>最初からソース提示してるんだからわかる。スレ違いなだけ。

俺らはエスパーだと思ってるの?
0558nobodyさん2010/09/12(日) 20:10:04ID:???
>>550 = >>553 == >>555 == 俺
わからないお前がバカだから消えろ
0559nobodyさん2010/09/12(日) 20:13:00ID:???
>>556
オブジェクト指向と関係あるよ
0560nobodyさん2010/09/12(日) 20:13:46ID:???
CakePHPとは?
0561nobodyさん2010/09/12(日) 20:18:41ID:???
自分より知識がないだろうと思うと茶化す
実にくだらない
0562nobodyさん2010/09/12(日) 20:41:18ID:???
少し知った奴が初心者を馬鹿にする行事がまた行われたのか…
毎度ご苦労様です!
0563nobodyさん2010/09/13(月) 00:08:18ID:???
1.3.4がでたらしいな

と思ったら

2.0系もでんのか??

スピードはええな
0564nobodyさん2010/09/13(月) 00:13:59ID:???
>>563
お、いつのまに更新されてたか。

2.0はだいぶ前から出てるよ。
0565nobodyさん2010/09/13(月) 03:04:28ID:???
>>564
2.0マジか!知らなかった・・・

1.2.xから1.3.xの時は結構大変だったけど、
2.0系も別物な感じなの?

今日知ったばかりでまた情報集めてるとこなんだ

# やっと管理してるの片っぱしから1.3.3にしたのに。。。
0566nobodyさん2010/09/13(月) 14:33:45ID:???
1.1から1.2はけっこう変わったけど、1.2から1.3はそれほどでもない
オフィシャルのマイグレーションガイドも、ちょっとだけだったし
2.0はまったく見てないからわからん
0567nobodyさん2010/09/13(月) 14:41:19ID:???
>>565
ついでに言うと3.0も。
途中でプロジェクトが分離して、今は名前が変わっちまったがな。
0568nobodyさん2010/09/13(月) 14:47:44ID:???
配列地獄はいつ解消されますか?
0569nobodyさん2010/09/13(月) 14:51:55ID:???
>>568
Cake系を使い続けるかぎり無理じゃね?
Lithiumも配列地獄っぽいし。
0570nobodyさん2010/09/13(月) 16:48:46ID:???
>>566
>>567
ありがと 昨日、流れっていうのかな見たよ
プロジェクトなのか派生なのかずいぶんでてるんだね
純正というかメインのStableはCakePHP1.3.3ってことでいいのかな

>>568
配列は慣れな気がしてきたよ
0571nobodyさん2010/09/13(月) 17:56:55ID:???
オレオレフレームワークでも配列使ってたから、移行に違和感なかったな。
ただ、モデル(テーブル)を$data['User']['name']感じにする概念は無かったが。
0572nobodyさん2010/09/14(火) 17:23:02ID:sGtN+/un
controllerがUTF-8でビューはShift-JISにしています。
afterFilterを使って出力時にmb_convert_encodingで
UTF-8からSJISに文字コード変換する方法は良くあるのですが、
findでデータ取得の時にSJISにする方法ってないでしょうか?
0573nobodyさん2010/09/14(火) 17:36:34ID:???
>>572
ビューもUTF8にしてafterFilterで文字コード変換じゃダメなの?
find時に文字コード変換はafterFindでできそうな気がするけど、
DBもUTF-8で作ってるのにビューだけShiftJISにこだわる理由はあるんだろうか
0574nobodyさん2010/09/14(火) 18:12:47ID:sGtN+/un
>>573
携帯用のビューでして、ShiftJISで表示させたいんです。
0575nobodyさん2010/09/14(火) 18:15:45ID:???
>>574
まずsageようじゃないか
そして>>573にあるように、UTF-8でつくろう
方法はキミが分かってる通りだ
05765732010/09/14(火) 18:22:34ID:???
質問時はsage推奨って>>1に書いてますね。すみませんでした。

あと、UTF-8で作る方法は知っていますが、>>574で書いたとおり、
携帯用のビューはShiftJISなのでそうしたいんです。
現代の携帯端末はほとんどUTF-8に対応しているとはいえ、、
今までそれで表示していて問題がなかったので。

でも、それしか方法がないと言うなら、一旦findで配列を取得して
foreachでmb_convert_encodingしてSJISに変換し、ビューに渡す方法にします。
05775722010/09/14(火) 18:23:30ID:???
番号間違えました・・。>>576>>572です。
0578nobodyさん2010/09/14(火) 18:25:53ID:???
またひとりアドバイスに従わない強者がいたか
0579nobodyさん2010/09/14(火) 18:26:27ID:???
>>576
どうしても、ビューはShiftJISにしたいっていうなら、
mb_convert_encodingの処理はafterFind()の中に書けばいいと思うよ。
0580nobodyさん2010/09/14(火) 19:09:36ID:???
viewで変換できないん?
0581nobodyさん2010/09/14(火) 19:30:32ID:???
utf8の方が女にもてる
0582nobodyさん2010/09/14(火) 19:56:50ID:???
携帯サイトってShift_JISで作るんじゃないの?
軽くググったら、そういう解説ばかりだけど。
0583nobodyさん2010/09/14(火) 20:28:55ID:???
どんなにググってもviewだけsjisなんて解説出てきません ><
■ このスレッドは過去ログ倉庫に格納されています