【PHP】フレームワーク CakePHP 4ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/06/20(金) 01:24:40ID:???10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
Cookbook :: 1.2 Collection :: マニュアル
http://book.cakephp.org/ja
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/
【PHP】フレームワーク CakePHP 3ホール目【本命】
http://pc11.2ch.net/test/read.cgi/php/1205475360/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0109nobodyさん
2008/07/14(月) 14:05:46ID:???1.2からbehaviorsのattach/detachができるって、
あちこちに書いてあるけど、最近仕様が変わってるっぽいね。
よく書いてあるのが、コントローラで$this->Model->attach(ビヘイビア名)。
でも今は$this->Model->Behaviors->attach(ビヘイビア名)
間に、Behaviors(BehaviorCollection)が入ったようだ。
0110nobodyさん
2008/07/14(月) 15:48:07ID:???どうも、RC2にしてからユニットテストでメモリ不足と言われる。
メモリ制限をゆるくすればいいのだが腑に落ちない。
それで調べてみると、なんとアサーション一つにつき40KBぐらいも消費していた。
アサーションの数が3000個だと120MB。そりゃ足りないって言われるわなw
それでコードを追ってみてみると
/cake/tests/lib/cake_reporter.phpの関数
(特によく呼ばれるのはpaintPass)の中のob_start();が原因。
なんか知らんが、ob_start();を一回呼び出すとそれだけで40KBも消費する。
ob_end_flush()を呼び出すとメモリは解放されるっぽいけど、
どうもこのクラスの中では呼び出していない。(どこか他で呼び出しているの?)
そしてアサーション一つごとにob_startが連続して呼び出されることになる。
ob_startごときで40KBも消費するのも、変な感じだが
このob_startっているんだろうか?前のリビジョンのコードには存在しなかった。
とりあえず取ってみたが変化はわからない。
現在リファクタイリング中みたいだからそのうちどうにかされるのかもしれない。
0112nobodyさん
2008/07/15(火) 10:18:07ID:???$where = array('hogekb =' => 1);
$this->set('nei_kekka', $this->Nani_table->findNeighbours($where,"Nani_table.id",$id));
ここに1テーブルjoinさせたいのですが、
以下のように設定したjoin句はfindNeighboursのどこにセットすればよいのでしょうか?
$options['joins'][]=
array(
'type' => 'INNER',
'alias' => 'Hoge_table',
'table' => 'hoge_table',
'conditions' => array('Hoge_table.id = Nani_table.id')
);
0113nobodyさん
2008/07/15(火) 14:41:34ID:kKo7V/Gsそれをコントローラから参照したい場合、CSVファイルはどこに設置するのが
一番スマートなんでしょうか?
0114nobodyさん
2008/07/15(火) 14:50:47ID:???XMLファイルとか。
tmpフォルダとかかな?
0117113
2008/07/15(火) 20:00:24ID:???そうなんです、外部から見られたくはない。
いや見られても良いデータなんですけど、なんか変な感じなので。
>>114
tmpフォルダは考えたんですけど、役割的に違和感があるんですよね。
まぁ、結局DBにつっこんで今はやってみましたけど。
うーん。
0118nobodyさん
2008/07/15(火) 20:22:19ID:???appフォルダ以下にはデータは入れたくない。
cakeフォルダ以下には、データは入れるはずない。
appやcakeフォルダと同じ階層に、dataフォルダでも
作って、例えば画像ファイルとか入れられれば、
良さげに思うが。それは無理なん?
0119113
2008/07/16(水) 11:57:50ID:???あ、その方法がありましたね。
確かにそれであれば全然いける上に、スマートかも。
ありがとです。今後、検討してみます。
0120nobodyさん
2008/07/16(水) 13:11:14ID:ahXuksxuDBに入れるほどではないデータは配列にしてモデルに入れてるよ
0121nobodyさん
2008/07/16(水) 13:16:24ID:ahXuksxu0122nobodyさん
2008/07/16(水) 13:22:04ID:ahXuksxuCakePHPはデータ保存場所を考慮したフォルダ構成じゃないから
CakePHP内にデータを置くこと自体がスマートじゃ無いってことかな
0123nobodyさん
2008/07/16(水) 13:24:33ID:ahXuksxuそもそも、おかしい気がしてきたよ
0124nobodyさん
2008/07/16(水) 13:27:51ID:ahXuksxu0125nobodyさん
2008/07/17(木) 08:07:12ID:/Q3Ys2pH10年後、20年後にも、CakePHPはあるだろうか?
そもそもPHPは使われてるだろうか?
0127nobodyさん
2008/07/17(木) 08:46:29ID:???じゃあ、こう考えるんだ
10年前はどうだったかを。
それで今も残っていればあるってことになる。
って10年前はPHPそのものがなかったか。
0128nobodyさん
2008/07/17(木) 09:23:54ID:r8Tb5l59これやれば10年後安心てのはIT社会には無い
0129nobodyさん
2008/07/17(木) 09:26:42ID:???フォルダ内のファイル名を読み込んだ時に
$file = readdir($dir)
だけだと日本語のファイル名が文字化けしてしまう。
部分的に関数通して文字化け回避する方法ってある?
0130129
2008/07/17(木) 09:58:29ID:???0131nobodyさん
2008/07/17(木) 16:12:51ID:hC9JNlTlAppModel::queryを使って取得したデータを
paginatorに渡す方法ってありますか?
0132131
2008/07/17(木) 16:26:20ID:hC9JNlTl0133131
2008/07/17(木) 17:05:12ID:hC9JNlTl対象のModelでpaginateをオーバーライドして、
$coditionsの中にsqlを入れて取り合えず
期待する動作は得られるようになりました。
0135nobodyさん
2008/07/18(金) 16:19:03ID:???無茶じゃなくてまっとうな方法。
Modelにpaginateメソッドは存在しないからオーバーライドではない。
Controllerのpaginateメソッドが最終的にfindする際に
Modelのpaginateメソッドが存在すれば代わりにそっちを呼ぶようにに作ってある。
0136nobodyさん
2008/07/18(金) 19:07:42ID:???DBテーブルに登録する際にバリデート内容が異なる画面が3つあった場合
DBテーブル1に対してモデルが3つ必要になるよね
Aテーブルがあったとしたら
A1モデル 使用テーブルA
A2モデル 使用テーブルA
A3モデル 使用テーブルA
それぞれのバリデート処理を実装することになるよね
0137nobodyさん
2008/07/18(金) 19:08:40ID:???CakePHPで「ログインされたかどうか」はどのように持つのが一般的なのでしょうか?
PCサイトではセッションを使うことが多かったんですが、キャリアによってセッションが使えない場合があると聞いたもので。
0138nobodyさん
2008/07/18(金) 19:11:29ID:???ひとつのモデルで完結できるのかな?
A1モデル 使用テーブルA
画面1のバリデート処理
画面2のバリデート処理
画面3のバリデート処理
0139nobodyさん
2008/07/18(金) 23:07:31ID:???0140nobodyさん
2008/07/19(土) 11:23:27ID:???自分は
セッションとクッキーの連携プレーを使ってるよ。
キャリアって携帯でしょ?
携帯の場合はセッションキーをクッキーに埋め込むのよ。
0141nobodyさん
2008/07/19(土) 13:45:27ID:???0143nobodyさん
2008/07/19(土) 16:24:22ID:jBy/EgFSモデルを使いたいコントローラメソッド内で
App::Import('Model', $model_name);
$model = new $model_name();
$model->findAll();
した方がいいね
どのコントローラメソッドでも共通利用することの多いモデルだけ
$usesに入れた方がよくね
じゃないと極端な話、一つのコントローラで利用するモデルが30個あった場合
$uses=arrray('A1','A2','A3','A4','A5','A6','A7','A8','A9','A10','A11','A12','A13','A14'・・・・・・・・・)
てなると$usesだけで管理するのしんどいよ。
0144nobodyさん
2008/07/19(土) 16:28:28ID:???どんなシステム?レスポンスどうなの?
0145nobodyさん
2008/07/19(土) 16:39:57ID:jBy/EgFSA8のようなアフィリエイトサイトだよ。
レスポンスはアソシエーションを
その都度 bindModelする方法なら悪くはないよ
重くなるとしたらSQL関連だと思うから後はcacheに頼る
0146nobodyさん
2008/07/19(土) 16:45:53ID:???0147nobodyさん
2008/07/19(土) 16:58:22ID:jBy/EgFS30個あるモデルは使用するDBテーブルは同じでバリデートの内容が若干違うので
モデルを複数分けした。
なのでモデルの数だけコントローラを増やすというのもなあ・・・
ページ構成もおかしくなるし
0148nobodyさん
2008/07/19(土) 17:03:55ID:jBy/EgFSモデルの数はバリデートのケース分、増えて行ってる
0149nobodyさん
2008/07/19(土) 17:08:42ID:jBy/EgFSコントローラが1に対してもモデルが30になる
0150nobodyさん
2008/07/19(土) 17:23:07ID:jBy/EgFS管理的にも$usesで管理するよりも
コントローラメソッドの先頭でApp::Importを宣言する方が管理しやすい気がする
デメリットはコーディング量が少し増えるくらいかな
でも、どのコントローラメソッドでも使うモデルだけは$usesに入れるから
そんなにコーディング量は増えないかな
0151nobodyさん
2008/07/19(土) 17:41:39ID:???そもそも、バリデートの数の分だけ
モデルを増やすのがおかしくね?
モデルのsave()で、バリデートするかしないかのフラグがあるだろ?
これって考え方を変えれば、バリデート1(データチェックする)、
バリデート2(データチェックを一切しない)という二つのバリデートと考えられる。
だからバリデート3(一部だけチェックする)ってのも、一つのモデルに入れてしまうのもありと思うが。
あとは、Model->save()の前に、Model->バリデートタイプ = '一部チェック';
なんてやっておいて、Modelのvalidateメソッドあたりで、バリデートタイプをみて
チェック項目を変更すれば良いんじゃね?
Modelのvar $validate、やったことないけど、
コードの中からでも変更できるんじゃね?
0152nobodyさん
2008/07/19(土) 17:45:08ID:???なんか変な感じ。
0153nobodyさん
2008/07/19(土) 17:51:24ID:???いや、使ったこと無いし情報も見つからなかったからよく知らんが。
ちなみに非推奨になったloadModel関数ではなく、
コントローラのメソッドのloadModel()だから。
0154nobodyさん
2008/07/19(土) 17:55:57ID:jBy/EgFS$validate1
$validate2
$validate3
という風に複数使えれば
バリデート分モデルを増やす必要は無いけど
バリデートタイプをみてチェック項目を変更ていうのは
変更項目が多いとコードが複雑に肥大化するのがなあ・・・
0155nobodyさん
2008/07/19(土) 18:04:40ID:???やろうと思えば、できるとおもうけど?
コントローラで、$model->save()呼び出し前に
$model->validate_type = 'type1';
モデルのどこかで、$this->validate = $this->{'validate_' . $this->validate_type};
そうすりゃ、$validate_type の条件でチェックしてくれるよ。
具体的にどこのメソッドでやるのがふさわしいかは
ちょっとやってみないとわからないけど。
0156nobodyさん
2008/07/19(土) 18:05:53ID:???そうすりゃ、$validate_type1 の条件でチェックしてくれるよ。
0157nobodyさん
2008/07/19(土) 18:19:45ID:jBy/EgFSその方法で出来るのなら、ちょっと試してみます
0158nobodyさん
2008/07/19(土) 18:24:34ID:jBy/EgFSApp::Importよりも、Controller::loadModel()の方がよくね
理由は何でしょうか?
どう違うのですか?
0159nobodyさん
2008/07/19(土) 18:36:14ID:???$usesの代わりと考えるのならば、
$usesで指定したのと同じ状態になるのが良い。
App::Importは単にクラスを読み込むだけ。
$this->Model にインスタンスを生成したりしない。
コードをざっと見ただけの意見だが、
コントローラの初期化処理で、$usersを見て値が入っていれば、
Controller::loadModelを呼び出してモデルを生成している。
loadModelはクラス生成以外にもなんかやってる。
だからloadModelを使ったほうがトラブルが少なくなりそうだと思った。
でも使ったことは無い。loadModelは外部から使うべきものじゃないかのうせいもある。
(普通は使うべきじゃないのなら _loadModelになっているはずだとは思うが)
0161nobodyさん
2008/07/19(土) 19:07:40ID:jBy/EgFSなるほど、よくわりました。
_loadModelてのは何ですか?
0162nobodyさん
2008/07/19(土) 20:12:00ID:???loadModel()に、_が付いていない以上、普通に呼び出して良い(ことが窺い知れる)
http://api.cakephp.org/class_controller.html
0163162
2008/07/19(土) 20:14:27ID:???特定のactionでしか使わないModelなんかは、これで動的に呼んだ方が良さそうだね。
修正しよっと
0164nobodyさん
2008/07/19(土) 23:06:40ID:jBy/EgFSコントローラ内でattach関数を使って読む込むyamlファイルを動的に選択させることで
モデルを増やさずにバリデーションyamlファイルだけ増加させることで解決できた
0165nobodyさん
2008/07/19(土) 23:10:53ID:jBy/EgFS0166nobodyさん
2008/07/20(日) 07:59:18ID:???フレームワークを使っている人が作っている感がでてる。
0167nobodyさん
2008/07/23(水) 16:23:08ID:???0168nobodyさん
2008/07/23(水) 20:47:49ID:???しかもsymfonyの遅い原因だったPropelも今度のバージョンで速くなったし
なんだかなー。
0170nobodyさん
2008/07/23(水) 22:31:35ID:bVhJ1Ly70171nobodyさん
2008/07/23(水) 22:32:47ID:pE/1LCdwチューンナップが進むのを期待するだな。
0172nobodyさん
2008/07/23(水) 22:39:51ID:???モッサリという感じ。
1.1はサクサクだったのに残念。
0173nobodyさん
2008/07/24(木) 01:13:17ID:v8PYU5tTデバッグモード解除してもモッサリするようなら
SQLがらみ、bindmodelで上手にやれば問題なし
0174nobodyさん
2008/07/24(木) 02:22:41ID:???0175nobodyさん
2008/07/24(木) 13:44:45ID:???0176nobodyさん
2008/07/24(木) 13:56:02ID:YLl3rq+tttp://pc11.2ch.net/test/read.cgi/php/1187333485/86
0177nobodyさん
2008/07/24(木) 18:43:29ID:???1.2のbetaの時にくらべ、デバッグ情報の量が
かなり増えているから。
0178nobodyさん
2008/07/24(木) 19:04:07ID:???Cakeが初めてのフレームワークでも、すんなり移れるフレームワークってないですか??
symfonyとかサッパリ;;
0179nobodyさん
2008/07/24(木) 19:13:11ID:???0180nobodyさん
2008/07/24(木) 19:43:19ID:???URLにセッションIDを埋める場合って
session.php内のuse_trans_sidを1にしないと使えないの?
PCサイトとプロジェクトが共通だから、なるべく共通的なところは
いじらずにやりたいと思うのだけど。
0181178
2008/07/24(木) 20:16:32ID:???さすがにライトすぎるというか;
使ってもみないで言うのもなんですが・・・
CIとかも流行ってきてますね。ちょっと気になる。。
0182nobodyさん
2008/07/24(木) 21:26:03ID:???そんなスレ違いなあなたにはここをオススメっ
【PHP】フレームワークについて語るスレ10【総合】
http://pc11.2ch.net/test/read.cgi/php/1202521438/
0183nobodyさん
2008/07/24(木) 23:50:55ID:???0184nobodyさん
2008/07/25(金) 18:19:46ID:???読み直し(=WAIT)が発生しているだけだろ?
謎でもなんでもない。
0185nobodyさん
2008/07/26(土) 16:44:09ID:???オイオイ、いつまでRCだすんだよ;
0186nobodyさん
2008/07/27(日) 10:13:15ID:???0187nobodyさん
2008/07/27(日) 21:27:08ID:???$ ./cake bake all
で、全部のテーブルの基本的な画面を一気に作ってくれんの?
順番に数字を指定するのが面倒・・・
MCVを対話式で一つ一つ作るよりはマシになってるけど。
テーブルの数が多いと、大変。しかも、いちいちtestのを
作るか?とか聞かないで欲しい。
0188nobodyさん
2008/07/29(火) 02:42:26ID:ab6DF8xC長くお付き合いできる方募集します。
https://hp.submit.ne.jp/i/13283/
0190nobodyさん
2008/07/29(火) 19:27:35ID:???www.cakephp.orgもbook.cakephp.orgもダメだ…orz
0191nobodyさん
2008/07/29(火) 20:10:31ID:2mZftY9A0192nobodyさん
2008/07/29(火) 20:24:56ID:???0193nobodyさん
2008/07/30(水) 19:42:29ID:g+nhVb89Database design and CakePHP
http://bakery.cakephp.org/articles/view/database-design-and-cakephp
0194nobodyさん
2008/07/30(水) 21:17:11ID:???0195nobodyさん
2008/07/30(水) 23:23:13ID:???「あるタグが含まれる投稿の一覧」を得るにはどうすればいいですか?
投稿だけじゃなくて付帯するタグのデータも引っ張ってきて欲しいんですが
・投稿のMemoタグをクリック
→Memoタグが付けられたPostの全情報を一覧表示
Title: メモその1 / Body: けーき始めました / Date:2008-07-28
Tag: CakePHP Memo PHP
Title: メモその2 / Body: けーきのためにPHP勉強中 / Date:2008-07-29
Tag: Memo Ruby
Title: らしくないメモ / Body: 内容は何でもイイんだけど / Date:2008-07-30
Tag: C++ Dlang Memo
↑こんな風に表示できるようにデータが欲しい
今はqueryを二回に分けて直発行でやってるんですが、もうちょいマシな方法はないものかと
0196nobodyさん
2008/07/31(木) 13:23:35ID:???commons.php内の関数から同じcommons.php内の関数を呼ぶにはどのように記述すればいいのでしょうか?
$this->関数名だと
Using $this when not in object context とエラーが出てしまうので・・・。
0198196
2008/07/31(木) 15:54:35ID:???自己解決しました。
Commons::関数名で呼び出すことができました。
(なにもつけなかった場合はundefined functionが出ました)
0199nobodyさん
2008/08/01(金) 00:59:56ID:CpiiU14kって認識でOK?
0201nobodyさん
2008/08/01(金) 16:36:12ID:???0202nobodyさん
2008/08/01(金) 17:12:36ID:???0203nobodyさん
2008/08/02(土) 11:01:20ID:???foreach ($部署['社員'] as $社員) {
echo $社員['氏名'];
echo $社員['性別']['性別'];
...
}
こんな感じになるの??
0204nobodyさん
2008/08/02(土) 11:52:56ID:???社員.php
http://example.com/社員/view/1
とか?
0205nobodyさん
2008/08/02(土) 12:07:43ID:aQY+T7Eo0206nobodyさん
2008/08/02(土) 14:11:43ID:???0207nobodyさん
2008/08/02(土) 22:07:43ID:???そういうのはuseTable使ってアルファベットだけにしてる。
作ってたら途中まで問題なかったんだけど、
SQLを""でクォートするところでちゃんとできずにSQLエラー。
正規表現がうまくいってないとこまで分かった。
0208nobodyさん
2008/08/03(日) 03:51:55ID:???0209nobodyさん
2008/08/03(日) 10:57:48ID:???■ このスレッドは過去ログ倉庫に格納されています