[表示 : 全て 最新50 1-99 101- 2chのread.cgiへ]
Update time : 09/24 18:53 / Filesize : 35 KB / Number-of Response : 144
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 2ホール目



1 名前:nobodyさん mailto:sage [2007/11/14(水) 02:50:28 ID:???]
本家
www.cakephp.org/

10分で作るCakePHPアプリ for Windows
p4life.jp/cake/

マニュアル日本語化
www.cakephp.jp/doc/

日本語フォーラム
cakephp.jp/modules/newbb/

あとこのへんとか(初心者向けTIPS)
www.avatarfinancial.com/pages/cake/


101 名前:nobodyさん mailto:sage [2007/12/05(水) 13:38:48 ID:???]
せめてtinyurlとか使うだろ常考…
心優しい奴だな

102 名前:nobodyさん mailto:sage [2007/12/05(水) 15:45:18 ID:???]
deletelわらた

103 名前:nobodyさん mailto:sage [2007/12/05(水) 19:21:03 ID:???]
いま気づいたw

104 名前:nobodyさん mailto:sage [2007/12/06(木) 08:26:19 ID:???]
なんかログイン画面がでてきたよw

105 名前:nobodyさん mailto:sage [2007/12/08(土) 10:30:04 ID:???]
api.cakephp.org/classes.html
IE6で見たらなぜかクラス一覧が表示されないんだが
これって漏れのPCだけ?

IE7とかFirefoxであれば普通に表示されるからそっちで見てるんだけど・・・


セキュリティ設定の問題かなと思って低めにしたけどやっぱ表示されねぇw
なんでや〜〜〜?

106 名前:nobodyさん mailto:sage [2007/12/08(土) 11:38:27 ID:???]
IEイラネって事でしょ

107 名前:nobodyさん mailto:sage [2007/12/11(火) 11:02:44 ID:???]
ttp://www.cakephp.jp/doc/apas12.html
のeditのsaveの引数はなぜ
$this->dataではなく$this->data['Post']なのでしょうか?


108 名前:nobodyさん [2007/12/11(火) 12:31:59 ID:fmpEROAG]
>>107

タイトル:
<?php echo $html->input('Post/title', array('size' => '40'))?>

っていうのは $this->data['Post']['title'] に格納されるから。

ようは $this->data['Post'] ってのは Postモデルのデータってこと。

よくわからなければ まず pr($this->data); をやってみるとセクシーになるよ。

109 名前:nobodyさん mailto:sage [2007/12/11(火) 15:27:06 ID:???]
いや〜ん



110 名前:nobodyさん mailto:sage [2007/12/11(火) 15:43:20 ID:???]
あは〜ん

111 名前:nobodyさん mailto:sage [2007/12/11(火) 15:53:50 ID:???]
あのー
意図的に404エラー出したいときはどうすればいいですか?

AppController内で404エラーページを表示する共通のメソッドがあるんだけど
どうもうまくいかないっす

$this->cakeError('error404', array(array('url' => ???)));

こんな感じかなあという感じなんですけど
???の部分がわからない

$this->cakeError('error404', null);

とかにすると $param['url'] か $param['action'] がないっておこられてしまいます

デフォの404エラーページが表示できればいいんですけど
なんかいい方法ないですかあ?

112 名前:111 mailto:sage [2007/12/11(火) 15:55:13 ID:???]
あ、ちなみにビューを切り替えるとかいうのはなしでお願いします

HTTPステータスコードが404にならないと思うので…
よい方法があればおたすけください…

113 名前:107 mailto:sage [2007/12/11(火) 15:58:30 ID:???]
>>107
ありがとうございます。それは理解しているつもりなのですがaddの時は
$this->Post->save($this->data)
でeditの時は
$this->Post->save($this->data['Post'])
なのはどうしてでしょうか?実際$this->Post->save($this->data)でも
更新されるようですし。


114 名前:nobodyさん [2007/12/11(火) 17:40:19 ID:MudQMHo6]
フレームワークでファイルのアップロード処理を書くと、どうも不細工になってしまう。
うまくフレームワークとなじませられないというか・・・。

115 名前:nobodyさん mailto:sage [2007/12/11(火) 18:05:21 ID:???]
>>111
ソース見たらURLは単にメッセージ表示のために使われているだけみたいだから
こんなのでもいいんじゃないの? cake 1.2 pre-betaの場合。

$this->cakeError('error404',array(array('url'=>'アドレスバーに書いてあるURLミロ')));

116 名前:111 mailto:sage [2007/12/11(火) 18:17:07 ID:???]
>>115

レスありがとうです
やっぱりそんな感じになりますかあ

AppControllerに書く場合、URLは $this->here とかでいいんでしょうか?

なんかしっくりこない気がするんですけど
他にもよい方法ありましたらよろしくおねがいします

117 名前:nobodyさん mailto:sage [2007/12/11(火) 19:24:00 ID:???]
マルチしね
無能

118 名前:nobodyさん mailto:sage [2007/12/11(火) 21:21:49 ID:???]
>>113
書き方の違いでしょ。
この例の場合はどちらでもOKだと思う。
二つ以上のモデルに格納するデータをフォームから送るなら
$this->dataにすべきだね。

119 名前:111 mailto:sage [2007/12/11(火) 22:52:21 ID:???]
>>117

おれのこと?
マルチなんかしてないけど?

というか他にCakePHPのスレあったっけ?



120 名前:111 mailto:sage [2007/12/12(水) 00:43:10 ID:???]
フォーラムにも同じような話題でてたんだな
しかし決めつけはひどいな 別人だよ

>>117

おまえが無能だ


んで、フォーラムにでてるように array(array('url' => 〜)) をつかうとうまくいかない場合ある
array(array(action)) つかったほうがいい

しかし、この辺りがCakePHPはなんかいまいちスマートじゃないね

121 名前:nobodyさん [2007/12/12(水) 13:47:30 ID:fuv5QvzR]
モデルのヴァリデートにNgWord判定させるにはどうしたらいいのですか?
cake2日目ではまってまっすん

122 名前:nobodyさん mailto:sage [2007/12/13(木) 02:11:34 ID:???]
正規表現でそのワード弾けばいいんじゃない?

123 名前:121 mailto:sage [2007/12/13(木) 10:54:35 ID:???]
>>122
レスありがとうございます。

正規表現ではじくのは考えたのですが、NGワードをDBで管理してあとから追加や削除をできるようにしたいのです。
ヴァリデートに関数呼び出しなどを書く方法はあるのでしょうか?

言葉足らずですみませんです。

124 名前:121 mailto:sage [2007/12/14(金) 13:58:00 ID:???]
自己解決しました

validate() をオバーライドするか、別途関数を呼び出してチェックすればいいみたいです。

save()の第二引数に falseを指定すれば、save時にヴァリデートしなくなるようです。


125 名前:nobodyさん [2007/12/14(金) 23:47:10 ID:dPU6DaHz]
オバーライドwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww

126 名前:nobodyさん mailto:sage [2007/12/15(土) 02:49:30 ID:???]
一つのテーブルに10個のフィールドがあるとして半分ずつを別の機会にsaveしたい時は後に保存するほうは空の値を許可するにしなきゃいけないんだろうか。すべて必須項目にしたいんだが。
自分でModelに複雑なValidationを実装するのかな

127 名前:nobodyさん [2007/12/15(土) 05:19:24 ID:Ybu1PDKf]
CakeSWXPHPの使い方で良いサイト知らない?

ActionScriptの方の使い方が難しくて、何かわかりやすいサンプルを探してるんだけど。

具体的にはFlexのMXMLとの連携のコードを全て公開してくれてるところ。

128 名前:cWTrQzhwyu mailto:tfcbks@wxejbj.com [2007/12/15(土) 05:32:32 ID:???]
w8dffW <a href="tjfirgbtchzm.com/">tjfirgbtchzm</a>, [url=skatqimodaiu.com/]skatqimodaiu[/url], [link=bjtumegdtulp.com/]bjtumegdtulp[/link], uteijdlqllxz.com/

129 名前:nobodyさん mailto:sage [2007/12/18(火) 02:17:35 ID:???]
1.2系だとHABTMも標準でsaveできるようになったんな。すごい便利



130 名前:nobodyさん mailto:sage [2007/12/18(火) 02:25:56 ID:???]
>>129

諸刃の剣の悪寒
いじりたいときは返って面倒

まあそのまま使うときはよさそうだね

131 名前:nobodyさん mailto:sage [2007/12/18(火) 11:36:32 ID:???]
モデル書くときって簡単なSQLでもfindとか使わずに
queryでSQL文が見えてた方が開発効率がよくね?

132 名前:nobodyさん mailto:sage [2007/12/18(火) 19:39:14 ID:???]
返ってくるデータが予測つかない人はそうだな

133 名前:nobodyさん mailto:sage [2007/12/19(水) 02:24:25 ID:???]
>>131
俺はすでにそれじゃだめだな。

CakePHPつかう以前からの話だが、
何かのデータを保存・・・時にほかのテーブルにも保存
なんて処理をやりたいことがある。

SQLでいえばトリガーでやるところなのだが、
トリガーはDBMSに依存してしまう。

そういうときにフレームワークで処理を割り込ませられると便利。
CakePHPでいうBehaviorの仕事だ。

134 名前:nobodyさん mailto:sage [2007/12/19(水) 02:34:00 ID:???]
それから、俺は、Behaviorを使うことで
SQL文の拡張のようなことをやっている。

たとえば・・・これは俺が実際に使っている例ではないんだが、
全文検索をするための構文はDBMSによって違う。

しかし、それがなんであれ,
$conditions = array('field' => 'FULLTEXTSEARCH ' . $keyword);
という風にFULLTEXTSEARCH キーワードを条件文に使用できる。

あとはBehaviorのbeforeFindで条件を調べて
DBMSにあわせた適切な構文に置き換えるだけ。

135 名前:nobodyさん mailto:sage [2007/12/19(水) 11:09:58 ID:???]
>>126
saveに渡す配列にフィールドのキーが存在しなければvalidationもされないし
データ更新もされないから気にしないでOK

136 名前:nobodyさん mailto:sage [2007/12/19(水) 13:28:34 ID:???]
Paginationまわりがわかりにくいと思うのは俺だけ? 特に1.2

フレームワークそのままの形だけの使い方をしている分にはいいんだけど
データ取得の命令がfindAllがpaginate関数になったりと、
理由はわからなくは無いんだけど、どうも設計に違和感を感じる。

とりあえず、1.2用のコントローラー以外(たとえばComponent)でも
使えるような汎用的なコードを書いておくよ。といっても怪しいけどな。
変なことをしているかもしれん。まあ俺が見つけた方法ということで。

しかし、コントローラ以外からコントローラのpaginate変数を設定したり
paginate関数を読んだりするのが気持ち悪い。
もっとスマートな方法ないのかな。



※$controllerはどこからか取得

$model_name = 'Post';
loadModel($model_name);
$model = new $model_name;
$conditions = array('id' => '> 3');
$controller->paginate[$model_name] = array(
  'limit'=>2,
  'page'=>1,
  'conditions'=>$conditions);
$data = $controller->paginate($model);

pr($data); //検索情報
pr($controller->params['paging'][$model_name]); //ページ情報

137 名前:nobodyさん [2007/12/19(水) 19:37:24 ID:nmvrwuDT]
recursiveが2以上のアソシエーションを動的に変更する方法がよくわからない。

例えば
blog
ってテーブルがhasManyで
post
ってテーブル持ってて、そのまたさらにhasManyで
comment
ってテーブルを持ってたとする。

普段はそれぞれは一覧で表示したいのでlimitを10くらいに設定してるんだけど、
ブログの一覧からpostとそれに紐付くcommentを全て取得する際に
$this->Blog->findAll();
でコメントだけはlimitを3にしたい。

$this->Post->hasMany['Comment']['limit'] = 3;
$this->Post->bindModel(array('hasMany' => array('Comment' => array('limit' => 3))));
とか試したけど、もう無理。

何か間違ってる?

138 名前:nobodyさん mailto:sage [2007/12/20(木) 02:56:46 ID:???]
出来ないこともないが、
テーブル名を複数形にしない時点で
自分で調べてなさすぎ感が伝わってきて
アドバイスしたい気持ちになれない。

139 名前:1/3 [2007/12/20(木) 04:06:27 ID:XdoaO407]
調べてないつもりではないんだけど、確かに情報を小出しにしてるこちらが悪かった。
ごめんなさい。
誤解を生まないようにもう一度説明すると、
blogs テーブルはBlogモデルの中で
var $hasMany = array('Post' => array('classname' => 'Post', 'limit' => 10));

postsテーブルではPostモデルで
var $hasMany = array('Comment' => array('classname' => 'Comment', 'limit' => 10));

そいで最後に
commentテーブルがCommentモデルでそれぞれ定義されてたとして。


普通はコントローラーで最初に
var $uses = array('Blog', 'Post', 'Comment');
ってやっておいて、
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
でそれぞれ
count($blogs['Posts']);// が10件
count($blogs['Posts']['Comments']);// が10件
入るよね。



140 名前:2/3 [2007/12/20(木) 04:06:58 ID:XdoaO407]
でもblogの一覧から全てのPostとCommentを取り出すのがリs−スが勿体無いときがあったとして、
 1.Postを3件だけ取り出したい
 2.Commentを3件だけ取り出したい
とすれば、

1のPostのほうは
$this->Blog->hasMany['Post']['limit'] = 3;
なり
$this->Blog->bindModel(array('hasMany' => array('Post' => array('limit' => 3))));
なりしてやればあとは
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
で3件だけPostを取り出せるんだけど、

2に関しては
$this->Post->hasMany['Comment']['limit'] = 3;
をやっても
$this->Post->bindModel(array('hasMany' => array('Comment' => array('limit' => 3))));
をやっても、
その後
$blogs = $this->Blog->findAll(null,null,null,null,null, $recursive = 2);
これをすると
count($blogs['Posts']['Comments']);
は10件取り出されてしまうんですよ。

141 名前:3/3 [2007/12/20(木) 04:07:32 ID:XdoaO407]
自分では
$this->Blog->findAll()
でblogsテーブルの直下のhasManyは動的にアソシエーションできるんだけど、
そのさらに下のアソシエーションに関しては動的に変更できなくて悩んでるんだけど、
何か決定的に間違ってる?
普通は出来るもんなんだったら、
別のところで自分が途方も無いケアレスミスを犯しててたまたま出来てないだけだってわかるだけでも
対策考えれるからありがたいんですけど。

142 名前:nobodyさん mailto:sage [2007/12/20(木) 04:10:41 ID:???]
あああ、推敲したはずなのに…。
>>139
> そいで最後に
> commentテーブルがCommentモデルでそれぞれ定義されてたとして。



> そいで最後に
> commentsテーブルがCommentモデルでそれぞれ定義されてたとして。
       ~~

の間違いです。
重ね重ねごめんなさい。

143 名前:nobodyさん [2007/12/20(木) 13:00:08 ID:rEyzQF0b]
$this->Blog->Post->hasMany['Comment']['limit'] = 3;






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<35KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef