【PHP】フレームワーク CakePHP
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2006/11/18(土) 20:53:22ID:???本家
http://www.cakephp.org/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0752nobodyさん
2007/09/20(木) 18:44:41ID:???0753nobodyさん
2007/09/20(木) 19:25:42ID:???0754nobodyさん
2007/09/20(木) 21:36:38ID:???そういう時は出力するコントローラのアクション内で、
Configure::write('debug', 0);
でスッキリ。
0755nobodyさん
2007/09/21(金) 13:49:22ID:7403NihySQLもわけわからんとこでエラーでるし。
さすがは a 版。
やっぱり今はまだ 1.1 を使ったほうがよさそう。
0756nobodyさん
2007/09/21(金) 18:01:26ID:???0757756
2007/09/21(金) 18:49:13ID:sxzZ5KcOな感じが一般的ですか?
0758nobodyさん
2007/09/21(金) 23:19:35ID:???普通に動いているが?
0759nobodyさん
2007/09/22(土) 00:48:28ID:???0760nobodyさん
2007/09/22(土) 03:59:23ID:???でもやっぱりalphaだと安定性が心配。
0761nobodyさん
2007/09/22(土) 17:26:50ID:???0762nobodyさん
2007/09/23(日) 14:48:44ID:???0763nobodyさん
2007/09/23(日) 16:06:27ID:???0767nobodyさん
2007/09/23(日) 21:18:16ID:???0769nobodyさん
2007/09/23(日) 23:34:12ID:???PHPフレームワークに限らず、全部ゴミ。
ドキュメント読んだりAPI見たりしてわからなければソース見ればいい。
しかしコアソースを変えさせるのは如何なものかと思ってみたりする。
以上、独り言ですた。
0772nobodyさん
2007/09/24(月) 01:35:40ID:???貧乏な上に技術もなく さらには語学力もないのに
遠吠えしてるやつってしょうもないよなあ
だな
こんなとこでほえてないで フォーラムにポストするなりすりゃいいのに
0773nobodyさん
2007/09/24(月) 02:18:10ID:???手を入れる必要があればあるほど、「効率よく開発できるフレームワーク」から
遠ざかっていくことは間違いないな。
あんまり手を入れる必要があるのなら、自分で書いても大して変わらなく
なってしまうわけだし。
0774nobodyさん
2007/09/24(月) 12:18:00ID:???ガキの独り言に何をそんなにムキになって噛み付いてんだ?w
じゃ、まずはモマエからオープンソースの意味について言ってごらん
0775nobodyさん
2007/09/25(火) 19:59:07ID:???デキるやつは、多少バグがあろうと関係ない。
ソースを読んで内部を把握するから詳しくなる。
そしていざ使うとなったときに、
一方はすでに内部から把握している人、
一方は今から勉強する人にわかれる。
0776nobodyさん
2007/09/25(火) 22:41:30ID:???それに、ソースいじりだすとさ、バージョンアップの時も作業が増えるし、いじらなくて済む
ならいじらない方がいいと思うのはおかしいですか?
ごみは言いすぎかもしれないけど、「ソース読むのが前提」ってのは本末転倒かと。
俺は、>769の意見に賛成だよ。
0777nobodyさん
2007/09/25(火) 22:58:10ID:???Cakeが空のクラスを継承してることに気が付くから、
フレームワークの根幹に手を入れるなんて大冒険しなくて良いことに
気が付くよ。
ていうかCakeでソース読まないってどんだけエスパー揃いなんだよ。
膨大なよくわからんHowtoググルより
Cakeぐらいなら、ソース読んだほうがぜんぜんわかりやすいだろう。
0778nobodyさん
2007/09/25(火) 23:08:09ID:???0779nobodyさん
2007/09/26(水) 01:35:02ID:???$this->Hoge->setSource("hoges");
としたのですが、FindAllをするとSQLのエラーとなります。
トレースを見たところ、
SELECT FROM `hoges` AS `Hoge` WHERE 1 = 1
てな具合で、SELECTの後のフィールドリストが空になっています。
自前でモデルの中でフィールドを定義するのか、
それとも、setSourceしたあとに何らかのメソッドでモデルを更新するとか
勝手に想像しながら、APIドキュメントを眺めてはいるのですが、それらしいものが見つかりません・・・
アドバイスお願いできないでしょうか・・・
#ぐぐったら、
#http://d.hatena.ne.jp/cvyan/20070925
#同じようにはまってる人がいました・・・
0780779
2007/09/26(水) 03:03:06ID:???自前でSQLを用意してfindBySqlメソッドを使えば、indexビューは表示できるようになりました。
$sql = "SELECT `Hoge`.`id`, `Hoge`.`name`, `Hoge`.`username` FROM `hoges` AS `Hoge`";
$result = $this->Account->findBySql($sql);
$this->set('hoges', $result);
ただ、InsertやDeleteメソッドも同様にSQLを用意しないと駄目な感じです。
せっかくのフレームワークなので、もう少しスマートな方法があればいいのですが・・・
0781nobodyさん
2007/09/26(水) 09:27:28ID:???モデルの基底クラスでテーブルのメタ情報をキャッシュするようになってるので、そのせいだと思う。
reset()かnewでなんとかならないかな。
0782nobodyさん
2007/09/26(水) 10:10:24ID:???0783nobodyさん
2007/09/26(水) 10:32:59ID:???それは、ドキュメント読む方が早いか、ソース読むのが早いかによるんじゃないかなぁ。
読む速度が同じであっても、ソースを読んだ方が理解や応用、拡張が素早く出来るので、結果的に作業は早くなると思う。
まぁべつにソースを全部読めっていうわけじゃないし、本末転倒ってほど悪くは無いと思う。
むしろ折角のスクリプト言語で読みやすくなってるのにそのメリットを生かさない方がもったいない。
もちろん、よいドキュメントはいつだって欲しいけどさ。
0784nobodyさん
2007/09/26(水) 10:54:34ID:???CakePHPの出来が悪いと言うことにはならない。
本当のプログラマにとってはドキュメントもソースも同じようなものだけどね。
ソースも読めないような人間は、ドキュメントを読めないのと同じ。
0785nobodyさん
2007/09/26(水) 11:31:59ID:???1.1使ってる?
そのうち使いそうだろうから、試してみたけど全然問題なかったよ。
1.2.0.5427alphaでテスト。
コントローラのbeforeFilterとindex、どちらの一行目で
setSourceしても問題なかった。
個人的には、ログのように1年単位でテーブルを分ける的な場合なら
モデル側で使用するテーブルを判断するべきじゃないのかと思うが。
0786779
2007/09/26(水) 15:17:54ID:???沢山のレスありがとうございました。
#Versionは1.1を利用しています
0787nobodyさん
2007/09/26(水) 16:35:14ID:???0788787
2007/09/26(水) 17:04:51ID:???view.phpで$this->controllerがnullになってるみたいね。
0789nobodyさん
2007/09/26(水) 18:31:30ID:???このフォルダ、なんに使うんだろうか?
このフォルダがあると言うことは、何かしらの
ユーザー定義のクラスか何かを置くのだと思う。
新しいデータベースサーバーへの対応?
だとしたら、それは app/models/datasources/dbo になるはず。
しかし、そんなフォルダはない。
まさかRDBMS以外、つまりODBMSやXML等に対応するためか?
0790nobodyさん
2007/09/27(木) 17:13:09ID:???Tracでそのディレクトリのコミットログを見たら
どういう意図で追加されたかわかるかもよ
0791nobodyさん
2007/09/28(金) 11:52:16ID:???かえって不便な気がしてきたんだけど。
0792nobodyさん
2007/09/28(金) 14:13:03ID:8QRsdJbb自作に関しては作ってみたけどヤメタ。
独自に名前空間もった変数名つけてincludeしちゃったほうが
お手軽だったりするしさほど問題なかったりする。
form系のヘルパーは使うよ。inputとかtextareaとかselectTagとか。
html系のlinkとかimageとかは使いでは無いね。
0793nobodyさん
2007/09/28(金) 15:42:01ID:???formヘルパーにいっちゃってたりして結構めんどいね。
極力ヘルプレスなほうがわかり易いと思った。
0794nobodyさん
2007/09/28(金) 19:12:35ID:???0795nobodyさん
2007/09/28(金) 21:24:25ID:???> 自作に関しては作ってみたけどヤメタ。
> 独自に名前空間もった変数名つけてincludeしちゃったほうが
> お手軽だったりするしさほど問題なかったりする。
それって、単にHelperクラスを継承しないってことなだけじゃね?w
Helperクラスを継承しないでHelperを自作している。
だよね?
0796nobodyさん
2007/09/28(金) 22:13:37ID:???>>795
あー、Helperじゃなくてプレーンなファイルなんだけど、
何か俺の言ってることもHelperと関係ない気がすごいしてきた。すまん。
ちょっとリセットして。
そもそもHelperを自作するような場面自体が少なそう。
なんていうか、デザイン要素を含むビューだとHelperの内部に
HTMLを書くことになってデザイナーがいじれないから、
アプリケーション独自のパーツ表示系とかにHelper使えない。
htmlヘルパーやjavascriptヘルパーのような汎用的かつ
ほとんどデザイン要素を含まない(含むとしてもフルカスタマイズ可能な程度)ような機能の
ヘルパーしか自作できない感じ。
そもそもヘルパーとはそういうものな気もするけどね。
>>791 はどんなヘルパーを作ったのか気になる。
0797名無しさん@Vim%Chalice
2007/09/28(金) 22:26:39ID:???Controllerは入力のデータについて集中したいというか、
Viewの表示用にデータ整形とかする関数を全部Helperに丸投げするって感じ。
テンプレートにはなるだけコードを排除したいし。
#つーか本当はControllerでHelperの指定をするのも嫌なんだけど。
#いきなりViewでHelper使えるようにする方法はないかな?
0798nobodyさん
2007/09/28(金) 22:32:36ID:???なら、AppControllerのコンストラクタでHelperファイル検索して
全部突っ込んじゃえw
0799792
2007/09/28(金) 23:06:22ID:???HelperがViewから自由に呼べないのはもどかしいよね。
細かいの一杯作ると読み込むの手間だし、
かといって1つでっかいの作ると富豪すぎる気がして。
テンプレートのコード排除は同意。
ちなみにそのHelperでデータ整形するコードって、
echo '<td>hoge</td>';
とかいうふうにコードの中にHTML入っちゃってたりする?
この書き方は個人的には絶対に避けるんだけど。
理由はHTMLエディタで認識できないし、エンジニア以外がメンテできなくなるから。
なので、そういう整形用途でrenderElementで十分だったりする。
関数作れないけどまあViewだしコピペでいいか〜とか。
頻繁に使われるならさらにrenderElementで小分けする。
あとclassが書かれたファイルをデザイナーさんがメンテするのもちょっと。
ってここは社内事情だし、まあエンジニアがテキストエディタで全部メンテするならいいけど。
0800名無しさん@Vim%Chalice
2007/09/29(土) 01:46:37ID:???Controllerの中では使いもしないHelperの配列を
用意しなくちゃならないのがそもそも気持ち悪い。
なんていうのかな、その辺はView側で完結して欲しいって思う。
>>799
Helperの中にはタグは入れてないよ。
(Cake付属のHelperはモリモリ使っててムカつくよね!)
主にModelからブン投げてきたデータを食って
配列地獄を隠蔽したり、必要なデータだけ返すって感じ。
どうしてもテンプレートが必要ならHelperから
renderElementを呼んで引っ張ってくる。
あと、renderElementはテンプレートを細分化する他に、
PHPから動的にjavascriptを生成したい場合など
コードを隔離したい場合にも使える。
ほんまView側の要だと思う。
0801nobodyさん
2007/09/29(土) 02:03:25ID:???つまり、Viewの中にphpコードを書いてHelperをロードしたいということかな?
Viewの中にコードねぇ。まあいいけど。
0802nobodyさん
2007/09/29(土) 02:08:55ID:???renderElementの中でタグを出力するのは良いのか?w
Helper呼び出しのコードを書くのは悪くて、
renderElement命令実行というコードを使うのは問題ないのか?w
0803nobodyさん
2007/09/29(土) 02:21:16ID:???> 理由はHTMLエディタで認識できないし、エンジニア以外がメンテできなくなるから。
という理由なら、renderElementを使う方法も使えないよな。
そもそもHTMLだけでループや条件分岐を表現できないのだからどうしようもない。
またフォーム系のタグにつける名前はコードの都合によってつけるものだから
当然エンジニアの仕事になる。
0804792
2007/09/29(土) 10:14:12ID:???>主にModelからブン投げてきたデータを食って
>配列地獄を隠蔽したり、必要なデータだけ返すって感じ。
>どうしてもテンプレートが必要ならHelperから
>renderElementを呼んで引っ張ってくる。
んーなるほど...ほんとにデータ整形だけなのか...
そこまでHelperでやっちゃうとほとんどコントローラ出番ないんじゃない?
Helperはデータを返すんじゃなくて表示できる形の文字列を返すものという
俺ルールで縛ってるから、
個人的にはそういうのならコントローラでやっちゃうか
コンポーネントにしちゃうか、
もしくはModelのafterFind使ったりだ。
0805792
2007/09/29(土) 10:19:44ID:???>Helperの中でタグを出力するのは悪くて、
>renderElementの中でタグを出力するのは良いのか?w>
そういうことじゃないよ。タグを出力するよしあしじゃなくて、
コードの中にタグが混入してるのがアウト。
○ <h1><?php echo h($hoge) ?></h1>
× <?php echo '<h1>' . h($home) . '</h1>'; ?>
renderElementした先で○のようにタグが.thtmlでコード外に書かれてるのならおk。
どりーむうぇーばーとかでいじれる。
Helperでもこのルールで書かれてばいいっちゃいいけど、
どりーむうぇーばーとかで開いたときにめちゃめちゃにならないように縛りいれると
renderElementでやるのと大差なくなる。
0806792
2007/09/29(土) 10:30:49ID:???>という理由なら、renderElementを使う方法も使えないよな。
ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
それくらいは教える。
ループ書いたりとか条件分岐はエンジニアが書くけど、
見栄え自体はあとからデザイナーさんが調整してほしいから。
0807名無しさん@Vim%Chalice
2007/09/29(土) 11:14:53ID:???あー悪い、View側つーか、要はControllerとテンプレートの間にもう1クッション、
表示用の準備を「PHPで」書ける空間が欲しいなって事。
Modelはデータソースへの正しい入出力に全力を注ぐべきだし、
Controllerは見た目なんかに関知しないでビジネスロジックに集中したい。
テンプレートは出来るだけHTMLの純度を高めたい。
問題の範囲を切り分けたいって意味なんだけど、分かりにくいね、ごめんちゃい
#今回はもう後戻りできないからControllerに直接Helper指定してるけど:-p
>>804
業務用の社内システム作ってるから、
Controllerのやる事は割とあるんよね (社内事情
0808792
2007/09/29(土) 11:29:02ID:???>Modelはデータソースへの正しい入出力に全力を注ぐべき
理想は俺もそうしたいが、使い勝手を考えると
Modelクラスにデータ整形のメソッドとか書くと使い易いんだなこれが...
何かデータ整形のための構造がもう1個あってもいい気もするね。
うまい名前が思いつかないけど。
>業務用の社内システム作ってるから、
>Controllerのやる事は割とあるんよね (社内事情
なるへそ。その状況想像したら分離したくなる気持ちはわかったよ。
0809nobodyさん
2007/09/29(土) 11:44:45ID:???> ○ <h1><?php echo h($hoge) ?></h1>
> × <?php echo '<h1>' . h($home) . '</h1>'; ?>
上が○ならこれもOKってことだよな?
<h1><?php echo $helper->h($hoge) ?></h1>
>>806
> ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
いや、だからその先の.thtmlにコードが入っていたら結局同じことでしょ?
0811792
2007/09/29(土) 12:51:34ID:???>上が○ならこれもOKってことだよな?
><h1><?php echo $helper->h($hoge) ?></h1>
おk
>> ちゃうちゃう。デザイナーさんはrenderElementした先の.thtmlを開くの。
>いや、だからその先の.thtmlにコードが入っていたら結局同じことでしょ?
そのコードが○な感じで書かれてばおk
>>810
beforeRenderをコントローラー内じゃなくて
何か別のクラスに分離したいよね。
まあ自作してもいいけどね。
0812nobodyさん
2007/10/03(水) 20:59:09ID:???ビュー周りが気持ち悪くて、使いにくいな。
bakeで作られるソースの話だが、viewとeditのctpで統一感がない。
viewの場合、<?php echo $author['Author']['id']?> という形で表示。
つまり、$authorに全データがはいってくるわけだが、
editの方は、なぜか、echo $form->input('id');
モデル名は<?php echo $form->create('Author');?>で指定しているわけだが、
肝心のデータはどこから???
ふーん。$form自体がデータをもっちゃってるのね。
タグ出力だけの機能じゃないんだ。
で、$formにデータをセットしているところは?
へぇ、コントローラにヘルパーとしてFormを入れたら
勝手にデータ読んじゃうんだ。なんだこの仕様w
0813nobodyさん
2007/10/03(水) 21:39:13ID:???0814nobodyさん
2007/10/03(水) 21:57:16ID:???たぶん、そうなんだろうけど、直接読むところじゃないよな。
controller->dataはPOSTしたときのデータ専用に使っとくれ。
ということで、そこらあたりがっちり書き換えてしまった。
表形式でのデータ編集もしたかったし、
Formヘルパーは使わずに独自のヘルパー(?)作ったよ。
0815nobodyさん
2007/10/04(木) 09:53:08ID:???まあオプションでいちいち
指定するとタグ直書きとあんまり代わらないからな。
ただ、独りよがりな仕様は否めない。
勝手にオプションを追加しておいて
それを削除するにはソースいじらにゃならん、とか
0816nobodyさん
2007/10/09(火) 16:06:42ID:???ちんこの美しさは半端ない
あれはまさに神の授けた人類の至宝だね
りっぱなやつを見ているだけで俺なんか
イきそうになるよ
だからお前も一緒にホラ や ら な い か?
ありくい
0817nobodyさん
2007/10/13(土) 00:42:51ID:???複数のmodelで使うバリデーションってどこに書けばいいの?
本も買ってみたんだけど、>>648でもふれられているように、自前の
バリデーションの説明は載ってなかった…
0818nobodyさん
2007/10/13(土) 03:00:25ID:???中間に別のModelをはさんでそこで書いてもいいが。
0819nobodyさん
2007/10/13(土) 06:46:38ID:???AppModelでいいのか。
なんかcake/ディレクトリに手を加えるのに抵抗あったからapp/の中のどこかかと思った。
さんきゅー。
0820nobodyさん
2007/10/13(土) 09:05:42ID:???0821nobodyさん
2007/10/13(土) 18:51:56ID:???ありがとうございます。
cake/app_model.phpを見たら
>Create the same file in app/app_model.php
って書いてありますね…
見落としてました。
0822nobodyさん
2007/10/15(月) 01:21:45ID:???いや俺を含めてね。
0823nobodyさん
2007/10/15(月) 16:42:00ID:???0824nobodyさん
2007/10/15(月) 16:56:02ID:???0825nobodyさん
2007/10/15(月) 18:58:29ID:???0826nobodyさん
2007/10/15(月) 21:37:52ID:???0827nobodyさん
2007/10/15(月) 21:50:58ID:???[フライング]
0828nobodyさん
2007/10/16(火) 10:46:59ID:???0829nobodyさん
2007/10/16(火) 17:34:23ID:wp+6b1Ucチュートリアル通り進めてると
思うんだけど原因がわかりませぬ。
だれか教えてください。
0830nobodyさん
2007/10/16(火) 19:47:20ID:???0832nobodyさん
2007/10/16(火) 22:24:04ID:???「使うに」の”に”がおかしいっていいたいんだろ?教養ない奴。
理解できなかったら、副助詞の「は」を補って
まだフレームワーク使うには、早いので、勉強してください と読め。
0833nobodyさん
2007/10/16(火) 23:07:35ID:???どこにVALID_NOT_EMPTY定数入れておこられたん?
エスパーきぼんぬと言われてもしょうがない
0834nobodyさん
2007/10/16(火) 23:08:02ID:???0835nobodyさん
2007/10/16(火) 23:31:16ID:???0836nobodyさん
2007/10/17(水) 00:55:10ID:???0837nobodyさん
2007/10/17(水) 00:57:48ID:???「使うには早い」 Google 検索結果・・・17,900件
1件のブログの人?
0838nobodyさん
2007/10/17(水) 01:15:36ID:???0839nobodyさん
2007/10/17(水) 01:32:54ID:???0840nobodyさん
2007/10/17(水) 16:55:45ID:???どっかの誰かさんが書いた糞本と違って内容が濃いことを願います。
本の質も少しでもRailsを模倣してほしいよ。
0841nobodyさん
2007/10/17(水) 17:31:04ID:???やり方がわからなくて今はmodifiedを1回持ってきて再設定してるんだけど。
>>840
Railsは書籍がいっぱいあるからうらやましいよね。
0844nobodyさん
2007/10/17(水) 19:20:08ID:???0845841
2007/10/17(水) 19:56:57ID:???いや、例外的に更新して欲しくないという時もあるよ。
その例外のためにmodifiedとは別の項目つくるのもスマートじゃないし。
So-net blog:sandmanの旅行の写真”とか”:CakePHP その7 - createdとmod..
http://blog.so-net.ne.jp/sand_man/2007-07-24
>ついでに、コントローラーごとに、この機能をオン/オフする変数が欲しい。
0846nobodyさん
2007/10/17(水) 20:24:38ID:???0847nobodyさん
2007/10/17(水) 21:54:28ID:q7TPqrYz初期設定とかはどこですればいいんでしょう?
例えばファイルから設定を読み込むとか、
読み込んだ設定をセッションに登録するとか…
0848nobodyさん
2007/10/17(水) 23:02:39ID:???コントローラの話?なら
var $uses = array('Model', 'Model2');
で定義してアクセスするには
$this->Model->ググれ();
>>847
/app/config/bootstrap.phpとか
0849nobodyさん
2007/10/17(水) 23:57:11ID:???おお、DB使わなくてもそれでいけるんですね(?)
すごいなあ
ついでになんですが…
独自の関数(例えばhoge)ってどこに定義すればいいんでしょう…
AppControllerに定義すると継承されるので、そのURLでアクセスされるとアクションとして処理されちゃいますよね
class AppController extends Controller {
function hoge {
}
}
class FooController extends AppController {
}
とかだと、http://nantoka.com/hoge/
でhoge()がアクションとして処理されそうな気が…
むずいなあ・・・
早く本でないかなあ
0850nobodyさん
2007/10/17(水) 23:58:11ID:???>でhoge()がアクションとして処理されそうな気が…
訂正…
とかだと、http://nantoka.com/foo/hoge/
でhoge()がアクションとして処理されそうな気が…
0851nobodyさん
2007/10/18(木) 01:17:44ID:???■ このスレッドは過去ログ倉庫に格納されています