【PHP】フレームワーク CakePHP 2ホール目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/11/14(水) 02:50:28ID:???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/
0154nobodyさん
2007/12/23(日) 03:56:58ID:nRcoZlZo返答ありがとうございます。
変更し、アップしてみたのですが、うまくいきませんでした。
(変更前と見た目に変化なし)
環境を追記します。
OS…Linux
Apache…1.3.37
PHP…5.2.3
MySQL…5.1.20
引き続きよろしくお願い致します。
0155nobodyさん
2007/12/23(日) 07:44:16ID:???なんじゃ、それ?
HTTPで公開してるのは、public_html ディレクトリだろ?
まず、そこに、.htaccessがなきゃ話にならんだろ。
さらに、RwriteBaseってのは、クライアント側から見えるURLを書く物で、まるで理解してない。
つか、Apacheのマニュアル読んでるの?
0156nobodyさん
2007/12/23(日) 08:29:31ID:nRcoZlZo色々な問題をごちゃ混ぜにして考えていたようです。
0から勉強しなおしたいと思います。
public_htmlにapp,cakeフォルダなどをアップし、app/webrootフォルダ内の
.htaccessに>>151のBの内容を追加したところ、
(多分)問題なく動作することを確認しました。
ご迷惑をお掛けし申し訳ありませんでした。
0157nobodyさん
2007/12/23(日) 08:41:22ID:???おい。
HTTPで公開してるディレクトリに、cakeディレクトリ以下は、"置かない"。安全性が落ちる。
"アップし"なんて書いてるとこ見ると、ローカルに開発用のHTTPサーバも持ってないのか?
それは、共有サーバを使ってる他の人にとって、"迷惑"。
0158nobodyさん
2007/12/23(日) 14:49:20ID:???0159nobodyさん
2007/12/23(日) 15:49:17ID:???0160nobodyさん
2007/12/23(日) 16:24:59ID:nRcoZlZoうまくいきました。
/
/cakephp
/cake ← cakeフォルダ(appと並んでいたほう)
/public_html ← appフォルダをリネーム
/vendors
/public_html ← ドキュメントルート
/css,files,img,.htaccessなど、app/webrootディレクトリに入っていたフォルダやファイル一式
上記のように各ファイルを設置し、
ホームディレクトリの.htaccessに「RwriteBase /」を追加し、
同階層のindex.phpのROOT,APP_DIR,CAKE_CORE_INCLUDE_PATHをそれぞれ
「DS.'path to cakephp'.DS.'cakephp'」「'public_html'」「ROOT」にし、解決しました(多分)。
>>157
ローカルでテストしていました。
紛らわしい言い方をして申し訳ありませんでした
0161nobodyさん
2007/12/23(日) 16:26:57ID:nRcoZlZo○ドキュメントルート
0162nobodyさん
2007/12/23(日) 18:29:45ID:???しかも成功したのか
俺が間違ってるのか
0163nobodyさん
2007/12/23(日) 18:32:41ID:nRcoZlZoすいません、Rewriteでした。
最初の文章をコピペしてたのでずっとRwriteと書いていました・・
0164nobodyさん
2007/12/23(日) 18:51:21ID:???狐につつまれて(←何故か誤用)ただけだから
0165nobodyさん
2007/12/23(日) 19:41:40ID:???0166nobodyさん
2007/12/23(日) 21:14:17ID:???0167nobodyさん
2007/12/24(月) 01:16:59ID:???初心者が勉強するには挙動や仕組みが複雑すぎるし、
勉強すべきウェブアプリの流れが自分で組めない。(組まなくて良い)
0168nobodyさん
2007/12/25(火) 04:06:06ID:???0169nobodyさん
2007/12/25(火) 10:50:49ID:dm3PQI94わかる。でも、書いたあとのコードがわかりやすい。
フレームワークを使う前のコードなんて自分で書いたコードなのにゾっとする。
読めたもんじゃない。。。
0170nobodyさん
2007/12/25(火) 22:35:34ID:???位置から作るといちいち迷ってそれが占める時間が結構ある希ガス
0171nobodyさん
2007/12/26(水) 10:31:28ID:???通常、
AページでAテーブルの内容を表示(Aコントローラー+Aモデル)
BページでBテーブルの内容を表示(Bコントローラー+Bモデル)
というような感じで作ると思うんだけど、
CページでAテーブル+Bテーブルの要約内容を表示したい場合は、どうすれば?
Cコントローラーで、AモデルBモデルを使うというような考え方でいいのかな。
質問の意味が通じなそうスンマセン(´・ω・`)
サイトのトップページで、多テーブルの情報を表示させたいというような場合の話です。
0172nobodyさん
2007/12/26(水) 11:24:07ID:???var $uses => array('Amodel', 'Bmodel');
0174nobodyさん
2007/12/26(水) 12:26:56ID:???0175nobodyさん
2007/12/28(金) 00:04:04ID:???0176nobodyさん
2007/12/28(金) 01:37:12ID:???0177nobodyさん
2007/12/28(金) 02:04:26ID:???0178nobodyさん
2007/12/28(金) 09:49:34ID:???0179nobodyさん
2007/12/28(金) 09:55:56ID:???0180nobodyさん
2007/12/29(土) 15:34:55ID:???0181nobodyさん
2007/12/29(土) 15:45:50ID:???0182nobodyさん
2008/01/01(火) 02:04:43ID:???いったんわかってくるとサクサク作っていけるのが嬉しいね。
ただ、マニュアルは機能を網羅してるわけじゃないんだな。
マニュアルに載っていることが全て、だと思って進めてくと意外としょうもない所でつまずいたりしちゃうね。
まあこれはCakeに限った話じゃないけど。
0184nobodyさん
2008/01/04(金) 01:10:03ID:???マニュアルだけだと(特に1.1系)他のフレームワークに見劣りする。
1.2系はちょっと自分用に改造するとすごい使いやすい。
0185nobodyさん
2008/01/04(金) 13:24:08ID:???0186nobodyさん
2008/01/04(金) 14:28:39ID:???0187nobodyさん
2008/01/04(金) 14:59:45ID:???0188nobodyさん
2008/01/04(金) 21:12:38ID:yI22KOOz・admin routesのとき、paginatorの飛び先がおかしいのがなおった
・posts/index/foo:bar が $this->params['pass'] でなくて $this->params['named'] に入る
・posts/view/20 は $this->params['pass'] に入る
・loadModel, loadComponent は非推奨 App:import('Model', 'name') にしろといってくる。
・generateList() も find('list', array()) にしろといってくる。
・webservice 使用時 $this->layoutPath をわざわざ指定しないといけなくなった。
・何気にapp_controller.php, app_model.php の場所がかわってる(そのままでも動くが、気持ち悪いので変えた)
いまんとこ、こんな感じでした。
0189nobodyさん
2008/01/05(土) 10:59:20ID:???bakeで生成されるコードも伴って変更されてるといいな
0190nobodyさん
2008/01/05(土) 15:28:31ID:???>・何気にapp_controller.php, app_model.php の場所がかわってる(そのままでも動くが、気持ち悪いので変えた)
* Create the same file in app/app_controller.php
* Create the same file in app/app_model.php
って書いてあるからpre-betaと変わっていないと思うんだけど。
0191nobodyさん
2008/01/05(土) 17:30:26ID:???チェックされる(ポストされた)データが配列でわたるようになってる。
使いにくくなった。なんでだ?
0192nobodyさん
2008/01/05(土) 18:40:44ID:???$this->Post->del($id);
で、SQLエラーでちまったよ。
エリアスがユニークじゃない!とかいわれたよ・・・
どうしたもんかね?
0193nobodyさん
2008/01/07(月) 15:01:55ID:???モデルの _tableInfo変数 が _scema変数 に変わった
_scemaの構造も_tableInfoとちょっと違う
まあ、この変数は積極的に使うものじゃないけどね。
0194nobodyさん
2008/01/08(火) 12:06:39ID:???ってなっているけれど
コントローラー名がテーブル名だと、アクセスするときに変じゃない?
普通画面名とか、機能名とかつけるものだと思っていたんだけれど、
どうなんでしょう
bakeでviewを作成するときに、選択可能なリストにModelがでてくるけれど、
コントローラーだしてほしい
そういうものなのかなぁ
0196nobodyさん
2008/01/08(火) 16:24:57ID:???規約に従ったphpファイルを作ってアップロード、実行するとbakeされるように出来ないのかな。
0197nobodyさん
2008/01/09(水) 17:55:03ID:???え、url上の名前って簡単に変えられるの?
モデルの
var $name = 'Post';
ってところの名前変えれば出来るって事?
0198nobodyさん
2008/01/09(水) 18:08:04ID:???それはむしろモデルに対するテーブル名じゃまいか?
urlウンヌンは、好きな名前でアクション作れば良いかと。
0199nobodyさん
2008/01/09(水) 18:57:52ID:???コントローラで$usesを定義してやれば好きなモデルをいくつでも使うことができるから
極端な話、$usesさえあればコントローラの名前は任意で大丈夫。
つーか、コントローラ名=URL上の表記だから、コントローラ名は
アクセス側から分かりやすい名前にする方が重要だと思う。
正規化でテーブルが沢山増えた場合はなおさら。
で、$usesを定義しないとコントローラ名を単数形にしたモデルを自動で使う。
その時、PHP4はクラス名からモデル名を引っ張ってこれないから$nameを見てモデル名を決める。
$nameはその時に使う。逆に言うとPHP5以降は$nameは不要。
…だったと思うけど、情報古いかもしんないから注意してね。
0200nobodyさん
2008/01/09(水) 23:29:04ID:???前は、date型のフィールドなら日付選択のセレクトタグが出たんだが。
0201nobodyさん
2008/01/10(木) 21:31:14ID:???モデル使いたい場所で、
App::Import('Model', $model_name); //pre-betaではloadModel
$model = new $model_name();
$model->findAll();
とかやってるw
やばいかなぁ。
0202nobodyさん
2008/01/11(金) 00:37:03ID:edIhawVfちょいやばですね
0204nobodyさん
2008/01/11(金) 20:24:44ID:???0205nobodyさん
2008/01/12(土) 01:07:43ID:???コントローラ以外で、モデルを使う方法他に何がある?
0206nobodyさん
2008/01/12(土) 07:06:39ID:???0207nobodyさん
2008/01/12(土) 09:24:00ID:???それをBehaviorにしてBehaviorで使うこともありますし、
テーブルに保存されたデータをもとに値を返すComponentも考えられますし、
コントローラ以外のどこででも、モデルを使うことって考えられますよ。
0208nobodyさん
2008/01/12(土) 21:32:01ID:4ugQnDqA少なくとも
「早く開発できる」
も大切ですけど、
「規約に沿った開発」
を心がけた方が最終的には良いかと思いますが、いかがでしょうか。
0210nobodyさん
2008/01/13(日) 01:41:55ID:???こういうやつとは仕事したくないな。
汚いソースを読まされそうだ。
0211nobodyさん
2008/01/13(日) 10:00:42ID:???1つのアクションでしか使わないモデルを、
コントローラ全体から呼び出すのはどうなのかな?
あまり、変わらなければ、規約に沿ったほうがいいね。
0212nobodyさん
2008/01/13(日) 14:32:44ID:???さすがにテンプレートやヘルパーでモデル呼び出しはしないけど
ヘルパーのようにモデル同士が連携したくなる場合なんてざら。
開発規則で決めればコンポーネントからモデル呼び出しも十分
視野に入るだろ。
そもそもコントローラの責任範囲はあまりに広すぎる。
save()時に関連キーの値を意識しなきゃいけないとかアホだろ
モデルに任せとけよそんなもん。
0213nobodyさん
2008/01/13(日) 19:43:12ID:???本当にそう?
たとえば、xoopsなんかにある、”ブロック”
メインのページの左右に表示され、ページの中のコンテンツとは
直接関係無いような情報(もちろんデータはデータベースにある)を
表示するとき、それをどのように作る?
0214nobodyさん
2008/01/13(日) 19:47:23ID:???悪いことは言いたくないが、一つだけ言わせてくれ。
function foo($v1=null, $v2=null, $v3=null) {
if($v1がなんたらだったら) {
$v1 = $v2;
$v2 = $v3;
}
}
こういうコードはやめてくれ。引数とコードがわけがわからなくなる。
0216nobodyさん
2008/01/13(日) 20:39:16ID:???0217nobodyさん
2008/01/13(日) 21:12:12ID:???0218nobodyさん
2008/01/13(日) 21:52:00ID:???Cakeだからといって特別なことはございません。
0219nobodyさん
2008/01/13(日) 22:26:54ID:???トランザクションに関してはデータベースごとに構文が違うわけで、
データベースの違いを吸収するCakePHPには
当然トランザクションの機能があってしかるべきでは?
0220212
2008/01/14(月) 03:54:21ID:???http://bakery.cakephp.org/articles/view/transaction-behavior
0221nobodyさん
2008/01/14(月) 03:54:41ID:???0223nobodyさん
2008/01/14(月) 11:48:41ID:???しょぼーん
0224nobodyさん
2008/01/14(月) 13:10:50ID:???1.2はbakeでそこそこいけるぞ
0225nobodyさん
2008/01/14(月) 14:59:49ID:p06mFmgfcake1.2用って書いてあってサンプルコードまで載ってるのに、これ以上どうしろと。
0226nobodyさん
2008/01/14(月) 22:01:03ID:qwz7LRgA0227nobodyさん
2008/01/15(火) 02:37:42ID:???0228nobodyさん
2008/01/15(火) 11:58:53ID:???こういうの誰か作って配布してたりする?
0229nobodyさん
2008/01/15(火) 18:18:48ID:???0230nobodyさん
2008/01/15(火) 21:44:26ID:???0231nobodyさん
2008/01/15(火) 21:49:55ID:???利用者レベルじゃ使用できんだろ。
コードはいた後、コードいじらないと使い物にならないんだから。
0232nobodyさん
2008/01/16(水) 00:10:13ID:???例えば、「モデルが無いですよ」とかエラーを吐いてくれるとこで、作るべきファイル名やコードをブラウザが表示してくれてるけど、それを手動で作る代わりに「(デフォのでいいから)作成」ってボタンがあったら嬉しいじゃない?
0233nobodyさん
2008/01/16(水) 00:42:46ID:???0234nobodyさん
2008/01/16(水) 00:46:04ID:???0235nobodyさん
2008/01/16(水) 03:05:48ID:???0236nobodyさん
2008/01/16(水) 08:37:03ID:???0237nobodyさん
2008/01/16(水) 08:57:12ID:???まあそれによってフレームワーク自体が肥大するのは困るけど、これはそこまでたいした話じゃない。
0239nobodyさん
2008/01/16(水) 11:33:15ID:???0240nobodyさん
2008/01/16(水) 11:49:22ID:???app/config/bootstrap.php に今はベターっと書いてるんだけど
これだとアプリごとに書く必要があって かといってcake/bootstrap.phpに書いちゃうと
バージョン上げる時に忘れて上書きしちゃいそう
0242nobodyさん
2008/01/16(水) 12:14:38ID:???コンポーネントはいちいち利用宣言するのがめんどくさくて
ほとんどapp_controllerに書いちゃってるけど、まずいかな?
0243nobodyさん
2008/01/16(水) 14:48:27ID:???bootstrap.php で読み込ませてる
0244nobodyさん
2008/01/16(水) 15:53:09ID:???汎用的な関数は、app/config/bootstrap.php に書いてる。
app以下にあるし、空ファイルだし、そのために作られたファイルだろ?って思ってる。
汎用的なクラスは、vendersにおいて使ってるけど。
0245nobodyさん
2008/01/16(水) 15:56:29ID:???間にもう一層入れたい場合どうやる?
Controller
↑
AppController
↑
MyController
↑
FooController
このとき、
class FooController extends MyController
ってすると、MyControllerがいませんっていわれちゃう。
0247nobodyさん
2008/01/17(木) 10:34:58ID:???何で作る?コンポーネント?
このクラス、モデルデータを必要とするんだよね。
何で作ればいいんだろう?
0248nobodyさん
2008/01/17(木) 11:22:09ID:???vendors/oreore.inc.php に書いて
app/config/bootstrap.php から vendor('oreore.inc');
で読み込むことにしますた さんくす
0249nobodyさん
2008/01/17(木) 11:54:11ID:???app/config/core.php
define('DEBUG', 2);
この状態で、特定のページだけデバッグ情報を出さないようにって出来ないものかな?
1)XMLを出力するプログラム
2)それを受け取って処理するプログラム
1の方はもう出来上がってて、デバッグが出力されると構文が崩れて困る。
かといって、define('DEBUG',0);にすると、2の方の開発が困る。XMLは動的なものを使いたい。
0250nobodyさん
2008/01/17(木) 13:27:06ID:???App::import('Contoller', 'MyController'); //昔はloadController
class FooController extends MyController
ってすればいいんじゃないの?
0251nobodyさん
2008/01/17(木) 16:34:27ID:2woYNb+hヒント、
function beforeRender()
{
if ($this->layout=='ajax') Configure::write('debug', 0);
}
これでわかったら、スーパーひとしくんプレゼント!
0253nobodyさん
2008/01/17(木) 18:42:25ID:???詳しく聞いて無いから間違いかもしれないけど、
たぶんそれは設計ミス。
モデルとコントローラーとビューは疎結合にあるべき。
答えとしてはコンポーネントにモデルインスタンスを渡せば良いと思う。
ビューの部分のロジックは、ヘルパーに委譲。
本当にどうしてもどこでも使いたいなら、bootstrapに書くか、vendorで外部ライブラリとして読み込ませる。
■ このスレッドは過去ログ倉庫に格納されています