【PHP】フレームワーク CakePHP 3ホール目【本命】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2008/03/14(金) 15:16:00ID:HF9x5ODX10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/
【PHP】フレームワーク CakePHP 2ホール目
http://pc11.2ch.net/test/read.cgi/php/1194976228/
【PHP】フレームワーク CakePHP
http://pc11.2ch.net/test/read.cgi/php/1163850802/
0116nobodyさん
2008/03/16(日) 01:30:53ID:???0118nobodyさん
2008/03/16(日) 01:33:07ID:???0119nobodyさん
2008/03/16(日) 01:33:16ID:???class TestController extends AppController {
var $name = 'Test';
function index() {
echo 'Hello World';
}
}
0120nobodyさん
2008/03/16(日) 01:33:58ID:EXDzIJ8Mマジ落ちたwwww
0121nobodyさん
2008/03/16(日) 01:34:19ID:???0122nobodyさん
2008/03/16(日) 01:34:23ID:???0123nobodyさん
2008/03/16(日) 01:35:06ID:???103 名前:nobodyさん[] 投稿日:2008/03/16(日) 01:24:23 ID:EXDzIJ8M
あー。なんか面白いことになっているな。
メモリ不足で落ちるとはじめに言ったのは俺なんだが、
あれ勘違い。俺のバグだった。
で、それに便乗して落ちる落ちる言っている奴がいるのか?
120 名前:nobodyさん[] 投稿日:2008/03/16(日) 01:33:58 ID:EXDzIJ8M
>>119
マジ落ちたwwww
0125nobodyさん
2008/03/16(日) 01:36:34ID:???0126nobodyさん
2008/03/16(日) 01:36:55ID:???0127nobodyさん
2008/03/16(日) 01:38:20ID:???結論がでたね
0128nobodyさん
2008/03/16(日) 01:38:32ID:???CodeIgnitor なんてどうかな?
0129nobodyさん
2008/03/16(日) 01:39:10ID:???0130nobodyさん
2008/03/16(日) 01:41:35ID:???0131nobodyさん
2008/03/16(日) 01:43:44ID:???0132nobodyさん
2008/03/16(日) 08:13:02ID:???0133nobodyさん
2008/03/16(日) 12:34:32ID:???アソシエーションしたモデルをfindAllなどで持ってくると、
いろんな構造のデータになるけど、どんなパターンがあるのかな?
ちょっと見にくいだろうけど、ありそうなのを組み合わせてみた。
この結果から、配列.Model.・・・、Model.Model.・・・、Model.field、Model.配列.field の
パターンに大別できると思っている。 Model.配列.配列.field なんてのは無い。
そしてキーの先頭が大文字ならモデル名、数値なら配列、
先頭が小文字ならフィールド名と判別できると思っている。
Model::aliasとかあまり使ってないんだけど、これであってる?
何の為にこれを調べているかというと、アソシエーションでごっそり取ってきた
全データの中で、特定モデルの特定の型(たとえば日付)のフィールドだけ変換したいっていう場合に
array_walk_recursiveみたいなのがあればやりやすくない?という話
その下調べ
0134nobodyさん
2008/03/16(日) 12:34:56ID:???'Model1' => array(
'model1_field1' => '値1', 'model1_field2' => '値2',
),
'Model2' => array(
'0' => array(
'model2_field1' => '値1', 'model2_field2' => '値2',
),
'1' => array(
'model2_field1' => '値1', 'model2_field2' => '値2',
),
),
'Model3' => array(
'0' => array(
'model3_field1' => '値1', 'model3_field2' => '値2',
'Model4' => array(
'model4_field1' => '値1', 'model4_field2' => '値2',
)
),
'1' => array(
'model3_field1' => '値1', 'model3_field2' => '値2',
'Model4' => array(
'model4_field1' => '値1', 'model4_field2' => '値2',
)
),
),
)
これに加えて一番上が配列で始まる事もある。
0135nobodyさん
2008/03/16(日) 14:39:55ID:???>>119-121
それで落ちるってphp.iniにどんな設定しとるんや?
まずは脳内メモリを増設したほうがいいんじゃね?(プ
0137nobodyさん
2008/03/16(日) 17:21:50ID:???すでについとる容量の低いやつを全部外して
デュアルチャネル対応の容量大きいやつを増設したらええんや
そしたらCakeもサクサク、オマエの小汚い脳内もサックサク〜(* ^ー゚)
0140nobodyさん
2008/03/16(日) 22:11:05ID:???ecripse って最近よく聞くんですが、 dreamweaver よりも開発効率いいんでしょうか。
よろしくお願いします。
0141nobodyさん
2008/03/16(日) 22:46:20ID:???http://pc11.2ch.net/test/read.cgi/php/1171452901/
0142nobodyさん
2008/03/16(日) 22:54:10ID:???0143nobodyさん
2008/03/16(日) 23:03:52ID:???http://news24.2ch.net/test/read.cgi/news2/1193936653/
とりあえず「脳内メモリがや〜」とか言ってる人は読んどいたら?
0145nobodyさん
2008/03/17(月) 01:02:50ID:???0146nobodyさん
2008/03/17(月) 01:03:05ID:BkHzbTOg0147nobodyさん
2008/03/17(月) 01:06:46ID:BkHzbTOg落ちなくて困っているんだけど、どうすればいい?
0148nobodyさん
2008/03/17(月) 01:23:22ID:???0150nobodyさん
2008/03/17(月) 01:25:35ID:???0151nobodyさん
2008/03/17(月) 01:27:02ID:???0152nobodyさん
2008/03/17(月) 01:34:16ID:???みんなで中小企業にアピールしようぜ。
そしてもう二度と同じ被害者を生まないためにも
0153nobodyさん
2008/03/17(月) 01:44:22ID:???0154nobodyさん
2008/03/17(月) 01:59:39ID:???使うのは駄目な俺だけでいい。
0155nobodyさん
2008/03/17(月) 02:09:58ID:???誰も信用してないよ。
0156nobodyさん
2008/03/17(月) 06:47:17ID:???超みにくいよw
0157nobodyさん
2008/03/17(月) 07:00:18ID:???それを読み込むようにしている。
0158nobodyさん
2008/03/17(月) 15:09:42ID:???デフォルト値にhttp://をつけると
バリデーションで他の項目がひかかったときに
http://yahoo.co.jpと入力していても
またhttp://のデフォルト値がはいる
デフォルト値は最初の画面だけ挿入したい場合はどうすればいいのですか
$form->input('TestUser.url', array('value'=>'http://')
0160nobodyさん
2008/03/17(月) 16:22:23ID:???0161nobodyさん
2008/03/17(月) 16:39:49ID:???その辺て自動でやってくれないんだっけ?
再編集のときの話だったら、データ構造を見て本来はDBから持ってくるデータを用意しておいてあげればいい
またはデータが無いと判断したときだけ、value入れればいいんじゃね
0162nobodyさん
2008/03/17(月) 18:22:09ID:???タイムリーだなw
俺も今同じようなことをやっていた。
最初はそのように、$form->inputに書いていたが、
同じようにダメだと気づいて、
コントローラで、(↓こんな感じ。適当に書く)
if(!empty($this->data)) {
if($this->Model->save($data)) {
・・・
} else {
・・・
}
} else {
$this->data['Model']['url'] = 'http://';
}
本当についさっき書いたコードなので、これで問題ないか深く考えていない。
0163nobodyさん
2008/03/17(月) 20:25:58ID:???0165nobodyさん
2008/03/17(月) 22:07:27ID:6Wsl0FQ6エラーの内容は
Warning: Invalid argument supplied for foreach() in /home/~~/htdocs/cake/cake/libs/controller/controller.php on line 666
Warning: Invalid argument supplied for foreach() in /home/~~/htdocs/cake/cake/libs/controller/controller.php on line 801
コントローラとモデルはscaffoldのみのシンプルなものです。
0167nobodyさん
2008/03/17(月) 22:21:02ID:???Viewにこう書くのはどう?
if(empty($this->data['TestUser']['url'])) $this->data['TestUser']['url']='http://';
echo $form->input('TestUser.url', array('label'=>'*URL','size'=>50,'value'=>$this->data['TestUser']['url']));
0168nobodyさん
2008/03/17(月) 22:28:21ID:6Wsl0FQ6801:foreach ($objRegistryModel->hasAndBelongsToMany as $relation => $relData) {
でした。何なんでしょうか。アソシエーションでしょうか。
0169nobodyさん
2008/03/17(月) 22:52:12ID:???この辺りの辺、サンプルある?
もしあったら見せて欲しい。
昨日あたりからcakePHPを使い初めたのだけど、たしかにWebにあった
チュートリアルに沿って作ると、モデルがヴァリデーションだらけに
なりそうなので。
0173nobodyさん
2008/03/18(火) 04:22:49ID:???controler
$url = ''http://;
$data = $this->Model->ほげほげ();
if (unko) {
$url = $data["url"]
}
$this->set('url',$url);
view
$form->input('TestUser.url', array('value'=>$url)
0174nobodyさん
2008/03/18(火) 09:45:05ID:LdGu1qpabakeでいろんなテーブルを焼いてみると、まともにscaffoldが働くものもありました。
焼かれたVIEWのIndex.thtmlを見てみると、テーブルの値を表示する所で、配列の添え字が記入されていませんでした。
おそらくテーブルの定義の仕方に問題があるように思います。
テーブルの定義は、まず成功した方が
Table "public.users"
Column | Type | Modifiers
------------+------------------------+-----------
id | integer | not null
username | character varying(255) | not null
password | character varying(32) | not null
first_name | character varying(255) | not null
last_name | character varying(255) | not null
次に失敗した方が
Table "public.flash_tests"
Column | Type | Modifiers
--------+---------+----------------------------------------------------------
id | integer | not null default nextval('flash_tests_id_seq'::regclass)
count | integer | not null
です。fefaultの所は削除しても変わりませんでした。
心当たりのある方、助言お願いします。
0177nobodyさん
2008/03/18(火) 13:01:47ID:???自分のコードをかけよ。
0178nobodyさん
2008/03/18(火) 13:03:45ID:???コントローラで設定すべきだよな。
ビューはただ表示するだけ。
0183nobodyさん
2008/03/18(火) 15:20:33ID:???0184nobodyさん
2008/03/18(火) 15:59:35ID:???0185nobodyさん
2008/03/18(火) 16:06:00ID:???フォームの初期値はどこで設定すべきでしょう。
1.コントローラ
2.ビュー
3.モデル
4.モデルに初期値情報が有り、それをコントローラが取得してビューに渡す
俺は4。面倒だとか、フォームによって初期値が違う場合は1
0187nobodyさん
2008/03/18(火) 16:51:14ID:???俺もビュー
管理するのが楽
コントローラーに書くとみにくくなる
ビューだと全くみにくくない、それどころか見通しがよくなる
0188nobodyさん
2008/03/18(火) 16:53:16ID:???モデルをこれ以上見にくくするのはよくないよ
バリデータ
アソシエーション
バリデータ関数
これだけでもずいぶん見にくいのに
0189nobodyさん
2008/03/18(火) 16:54:16ID:???変更が楽な場所がベスト
0191nobodyさん
2008/03/18(火) 17:06:20ID:???ここは初心者が多いからね
0192nobodyさん
2008/03/18(火) 18:10:04ID:???お前、まさか、それだけしかないんじゃないだろうな・・・
モデルは設定ファイルじゃないぞ。
ビジネスロジックを書く所がモデルだぞ。
0193nobodyさん
2008/03/18(火) 18:11:06ID:???初期値をビューで設定するのは変。
0194173
2008/03/18(火) 19:04:45ID:???何でダメなの?因みにcakeは1週間ぐらいしかやってない
あとコントローラに初期値は
ロジックとviewの分離等から考えると微妙だが
めんどくさかったんだそこはごめんw
0195nobodyさん
2008/03/18(火) 19:29:58ID:5PAxNly00196nobodyさん
2008/03/18(火) 19:38:40ID:???0198nobodyさん
2008/03/18(火) 21:23:10ID:???携帯用サイト作るとわかると思うけどあんまりガンガン表示する内容まで
コントローラーで固めない方がいいよ。
携帯用サイト用の コントローラーまで作る羽目になるから。
0199nobodyさん
2008/03/18(火) 22:59:49ID:???$_SESSION[''][''] を直接使った方が早い感じがすんだけど、みんなどうしてます?
やっぱり $this->Session->read を使った方がいいんですかね。
0200nobodyさん
2008/03/18(火) 23:48:37ID:???> smartyだってテンプレート側で初期値いれらるようになってる
入れられるようになっているからって、入れるべきということにはならないだろ?
モデルやコントローラ側で初期値入れられるようになっているんだしさ。
> 携帯用サイト用の コントローラーまで作る羽目になるから。
その理屈がよくわからん。初期値の話をしているのに
なんでもコントローラでやると拡大解釈してしてないか?
それにビューに書く場合、携帯用サイトとPC用サイトで分けるもんだから、
ビューに初期値を書いたら、コードが重複するじゃん。
だからビューだけはありえない。そう思わないか?
ちなみに、おれは初期値はモデルに書くもんだと思っているが。
0202nobodyさん
2008/03/19(水) 01:36:20ID:???オブジェクトで呼ぶことに意味がある
それは、オブジェクトにはいってるデータを
外から制御できるからだ
0203nobodyさん
2008/03/19(水) 07:53:45ID:???>>202
cakephp やってて
「意味あるのかな・・・」と思ってましたけど、やっぱり意味があったんですね。
勉強になります。ありがとうございます。
0204nobodyさん
2008/03/19(水) 12:54:14ID:???ユーザ(usersテーブル)、投稿(commentsテーブル)が一対多の
関係にある時、あるviewで、
ユーザ1
コメント1-1
コメント1-2
コメント1-3
ユーザ2
コメント2-1
コメント2-2
コメント2-3
・
・
という表示をさせたいのですが、view、controllerをどう書いてよいか悩んでいます。
modelで、hasManyリレーションを貼るところ迄は合っていますか?
どこか、参考になるページがあれば教えて下さい。
0205nobodyさん
2008/03/19(水) 19:47:56ID:???CommentモデルにはbelongsToプロパティを作って、usersに依存していることを示す。
コントローラのアクションでUserモデルからデータを引っ張ってくる
アソシエーションによりCommentもくっついてくる。
コントローラのアクションで、引っ張ってきたデータを
ビューに詰め替える。
ビューは渡されたデータをぐるぐるして表示する。
0206nobodyさん
2008/03/19(水) 21:42:10ID:???この辺言及する人が少ないのはcakeユーザのレベルが低いからだろうか。
0207nobodyさん
2008/03/19(水) 22:11:32ID:???何を言っているんだ?
自分のレベルが低いと告白しているのか?
0209nobodyさん
2008/03/19(水) 23:03:06ID:XOo5uLlV返信ありがとうございます。
> コントローラのアクションでUserモデルからデータを引っ張ってくる
> アソシエーションによりCommentもくっついてくる。
なるほど。
きちんとリレーションを設定すれば、コントローラ側ではUserモデル
からデータを引っ張るだけで、芋づる式にcommentsを取れるんですね。
> ビューは渡されたデータをぐるぐるして表示する。
今、$usersをforeachで回してる状態なんですが、これを$usersと
$commentsの二重ループにすればオッケーですかね。
ちょっとやってみます。
>>206
論点がずれてませんか?
そもそも、具体的なアクセス数、H/Wの規模を示さないと意味のない
指摘じゃないでしょうか。
この方法だと中規模以上に向かないから、この方法を使うといいよ、
と言うのならまだ分かるのですが。
0210nobodyさん
2008/03/19(水) 23:13:10ID:???>>208
お前らのcakeはこの時どういったクエリが発行されんの?
select ... from users ... (id 1,3,5のユーザがヒットする)
select ... from comments where user_id in (1) ...
select ... from comments where user_id in (3) ...
select ... from comments where user_id in (5) ...
0211nobodyさん
2008/03/19(水) 23:28:29ID:???そして、この findAll() で実行された SQL は以下の通り。
SELECT `Job`.`id`, `Job`.`com_id`, `Job`.`name`
FROM `jobs` AS `Job` LEFT JOIN `coms` AS `Com` ON `Job`.`com_id` = `Com`.`id`
WHERE 1 = 1 ORDER BY `Job`.`id` ASC LIMIT 10;
0212nobodyさん
2008/03/19(水) 23:42:19ID:???参照の方向が違う。
0213nobodyさん
2008/03/20(木) 00:12:41ID:???hasmanyとかconditionsにどういうSQLで
JOINするかをSQLの断片で書いているしなぁ。
JOINしているとわかりそうなものだがなぁ。
0214nobodyさん
2008/03/20(木) 00:28:36ID:???結局「表示するユーザ数+1のクエリが発行される」が間違ってることは示せないんでしょ。
実際やってみてクエリログ見ればすぐ分かるはずなんだが。
■ このスレッドは過去ログ倉庫に格納されています