トップページphp
985コメント290KB

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

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001nobodyさん2008/12/19(金) 15:52:19ID:ylogT+7c
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
cookbook(マニュアル)
http://book.cakephp.org/ja
the Bakery
http://bakery.cakephp.org/

■日本語フォーラム
http://cakephp.jp/


■過去スレ
【PHP】フレームワーク CakePHP 4ホール目【v1.2】
http://pc11.2ch.net/test/read.cgi/php/1213892680/
【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/
0002nobodyさん2008/12/19(金) 15:53:15ID:???
■その他いろいろ
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/

日本のcakePHP ユーザのためのハブサイト
http://cakephp-users.jp/

CakePHP 規約ワードメーカー WordMaker for CakePHP Conventions
ttp://www.cpa-lab.com/tech2/inflects/

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

CakePHP Note
http://www.garacter.com/notes/CakePHP+Note/ni:5

CakePHP入門リンク集
ttp://pub.studio15.jp/2007/11/13/cakephp-links/

CakePHPを使ったMVC設計のベストプラクティス - Sooey
ttp://www.sooey.com/journal/2008/03/26/717/

Qdmail(日本語メールコンポーネントとして利用可能なライブラリ)
ttp://hal456.net/qdmail/

CakePHPカンファレンス東京
http://conference.cakephp.jp/
0003nobodyさん2008/12/19(金) 15:53:49ID:???
■ver1.1用
チートシート
http://www.cakephp.org/files/cakesheet.pdf

CakePHP プログラマーズ リファレンスガイド
http://cakephp.jp/doc/

連載:CakePHPで高速Webアプリ開発|gihyo.jp … 技術評論社
http://gihyo.jp/dev/serial/01/cakephp

CakePHPフレームワークによる快速WEB開発 |codezine
http://codezine.jp/a/article/aid/670.aspx


■関連書籍
CakePHP ポケットリファレンス
http://www.amazon.co.jp/dp/4774135038
CakePHP徹底入門
http://www.amazon.co.jp/dp/479811717X
CakePHPガイドブック
http://www.amazon.co.jp/dp/4839924317
Fast CakePHP
http://www.amazon.co.jp/dp/4774133418
0004nobodyさん2008/12/19(金) 15:56:22ID:???
テンプレらしきものは以上
最近のサイトでお勧めのものがあればどうぞ
0005nobodyさん2008/12/19(金) 17:52:20ID:???
0006nobodyさん2008/12/19(金) 21:56:40ID:???
ろっくまん!
0007nobodyさん2008/12/20(土) 01:42:56ID:???
Ruby on railsは、まともなスピードで動かす場合、
月5,000円のレンタルサーバーが必要です。

一方、cakephpなら、月500円のレンタルサーバーで
十分なスピードで動きます。
0008nobodyさん2008/12/20(土) 01:57:02ID:???
php (笑)
0009nobodyさん2008/12/20(土) 02:03:11ID:???
>>8はきっとあまり仕事ができないタイプ
0010nobodyさん2008/12/20(土) 02:05:02ID:???
>>9 は頼まれてない余計なことばかりやって貧乏なタイプ
0011nobodyさん2008/12/20(土) 10:48:19ID:???
>>6
まあ徴兵制だろうね。
戦前(に成人した)世代と戦後世代の日本人を見比べれば一目瞭然。
0012nobodyさん2008/12/20(土) 17:36:31ID:???
cakephp に限ったことじゃないかもしれなけど、
できるプログラマーって何を聞いても親切に教えてくれるよな。

できないプログラマーってひたすら人をバカにしたがるよな。
なんなんだろうなこの違い。やっぱり謙虚さが大事なのかな。
0013nobodyさん2008/12/20(土) 17:49:45ID:???
深く理解してないと教えられないからな
0014nobodyさん2008/12/20(土) 17:53:38ID:???
>>12
> できるプログラマーって何を聞いても親切に教えてくれるよな。

「できるプログラマー」って何なのか詳しく教えてほしい。
0015nobodyさん2008/12/20(土) 18:25:16ID:???
すぐヤラせてくれるプログラマーのこと? って書こうとしたけどヤメた。
できるとか、できないとかじゃなくて性格の問題だとおもいます。
0016nobodyさん2008/12/20(土) 18:28:42ID:???
>>12 さんのいう「できるプログラマー」についての定義が待ち遠しいね。
0017nobodyさん2008/12/20(土) 18:29:08ID:???
できる=仕事の効率がいい
って事でしょ要するに
自分だけできればいいって人は仕事できるってあんまり言われないからね
0018nobodyさん2008/12/20(土) 18:31:46ID:???
>>17
> 自分だけできればいいって人は仕事できるってあんまり言われないからね

その対象人物が周りから「できる」と言われればいいということ?
それは、「仕事の効率がいい」ということにはならないね。
0019nobodyさん2008/12/20(土) 18:49:16ID:???
ひねくれた奴ばっかりだな
0020nobodyさん2008/12/20(土) 18:56:26ID:???
>>14,16,18が使えない人間なのはわかった
0021nobodyさん2008/12/20(土) 18:57:26ID:???
>>20
言葉の定義をしないままに議論なんか出来ないので、
「使えない人間」って何なのか詳しく教えてくれるとうれしい。
0022nobodyさん2008/12/20(土) 19:29:30ID:???
定義も何も仕事できるかできないかだろ単に
0023nobodyさん2008/12/20(土) 19:43:42ID:???
>>22
「仕事できるかできないか」ってどう評価するの?
0024nobodyさん2008/12/20(土) 19:47:08ID:???
それが解らないって事はお前は仕事仲間を評価したりできてないってことだよな
一生リーダーになれないぞ
0025nobodyさん2008/12/20(土) 19:49:29ID:???
>>24
> それが解らないって事はお前は仕事仲間を評価したりできてないってことだよな

なんでそういう飛躍をしちゃうの?
0026nobodyさん2008/12/20(土) 19:54:06ID:???
ってことは評価できるって言うことだよね?
君は同僚を評価するときはどうやってしてるの?
0027nobodyさん2008/12/20(土) 20:00:09ID:???
>>26
> ってことは評価できるって言うことだよね?

どこをどういう風に解釈すると、そういう問いを出すことが出来るの?
0028nobodyさん2008/12/20(土) 20:01:17ID:???
今までの流れとは全く関係なくこの質問に答えて欲しい

>>27
君は同僚を評価するときはどうやってしてるの?
0029nobodyさん2008/12/20(土) 20:03:12ID:???
>>28
今までの流れとは全く関係ないということなので、前提をつくらないと。

> 君は同僚を評価するときはどうやってしてるの?

同僚の何を評価すればいいの?
0030nobodyさん2008/12/20(土) 20:52:18ID:???
同僚が仕事できるかどうかだろ
0031nobodyさん2008/12/20(土) 21:39:25ID:???
標準のEmailコンポーネントは、
まだ日本語使うにはきつい??
0032nobodyさん2008/12/20(土) 22:12:10ID:???
俺は野良の使ったな結局
qdmail
0033nobodyさん2008/12/20(土) 22:21:13ID:???
使ったことないのだが、symfonyと比較すると何がどのように違うの?
ざっくりでいいので教えてもらえるとうれしい。
0034nobodyさん2008/12/20(土) 22:24:46ID:???
>>32
qdmailで送信すると
ヘッダにqdmailって入るんだけど、どうにかならんかなー?
0035nobodyさん2008/12/20(土) 22:44:20ID:???
ってかプログラマだよなお前?
X-PHP-Qdmailで捜してって消せばいいんじゃないの?
MITライセンスなんだし
0036nobodyさん2008/12/20(土) 22:45:23ID:???
>>35
そういう答えは求められていないと思われ。
0037nobodyさん2008/12/20(土) 22:48:55ID:???
どういう答え?
ソース開いて$this->header['X-'.$this->xmailer]の部分消せみたいな具体的な指示?
0038nobodyさん2008/12/20(土) 22:52:22ID:???
インターネッツの向こうにも人間が居ることを忘れないほうがいいと思うよ。
0039nobodyさん2008/12/20(土) 22:54:57ID:???
こいつさっきから粘着してる荒らしだろ。
スルーしろよ。
>>34は消し方聞いてるんだからその回答で間違っちゃいない。
0040nobodyさん2008/12/20(土) 22:56:03ID:???
> こいつさっきから粘着してる荒らしだろ。
> スルーしろよ。

それスルーしたことになってるのか?
0041nobodyさん2008/12/20(土) 22:57:35ID:???
釣り針がぶっと過ぎて飽きた
0042nobodyさん2008/12/20(土) 23:07:09ID:???
またRubyヲタが荒らしに来たのか
スルーしないけど
0043nobodyさん2008/12/20(土) 23:08:42ID:???
論理が飛躍するかわいそうな子が荒らしとか何とか言っても説得力ないよなぁ
0044nobodyさん2008/12/20(土) 23:16:12ID:???
なんでもRubyのせいにするとはPHPの方はRubyをいしきしてるんでしょうか。
0045nobodyさん2008/12/20(土) 23:22:45ID:???
PHPしか使えないんだから仕方ないよ。
PHPしか使えない人たちの中で仕事ができる人なんでしょ。
0046nobodyさん2008/12/20(土) 23:26:07ID:???
なにをもって仕事をできるとするかの問題が残ってはいるけどな。
0047nobodyさん2008/12/20(土) 23:35:11ID:???
あんまり無能をいじめるのはかわいそうじゃないか?
Rubyもできない仕事もできない、そして仕事ができるという定義も解らない。
0048nobodyさん2008/12/21(日) 00:17:25ID:???
>20
同意。
0049nobodyさん2008/12/21(日) 11:26:07ID:???
まらRuby厨が荒らしに着てんのかw
いい加減にしろよ(笑)

Rubyが思ったほどシェアが増えなくて
あせっているのはわかるけど、
こんなところでPHPをたたいても
Rubyのシェアは増えないぞ。

これ、2年前にも言った。
0050nobodyさん2008/12/21(日) 12:45:08ID:???
そういや楽天ってまつもと氏招いてRuby研究やってるのに
自社サービスはPHPとJavaだよな
0051nobodyさん2008/12/21(日) 15:19:52ID:???
Ruby のせいにすると何かいいことあるの?
0052nobodyさん2008/12/21(日) 15:44:20ID:???
>>51
Cakeへの文句の半分くらいをRoRが引き受けてくれる
0053nobodyさん2008/12/21(日) 17:04:19ID:???
RoRで作ってもレンタル鯖で動かんしなぁ
だったらJavaでいいじゃんみたいな
0054nobodyさん2008/12/21(日) 17:10:46ID:???
>>53
工数どんだけ違うんだよw
0055nobodyさん2008/12/21(日) 17:27:24ID:???
SAStrutsだったら工数変わらんのじゃない?
開発中はデプロイしなくていいからスクリプト言語と変わらんし
scaffoldみたいなのもあるよ
殆どCakePHPと同じ
0056nobodyさん2008/12/22(月) 17:14:23ID:???
Auth使うと認証必要ページにいったときに自動的にログインページに飛ぶけど
最初のページに対してPOSTデータを送っていた場合、失われるんだよね

ログインページへのリダイレクトはAuthコンポーネントが勝手にやってるから
セッションに入れたりって事も出来ない

どうすればいいと思う?
0057562008/12/22(月) 17:27:43ID:???
ログイン後に元のページへAuth->redirect()で戻るけどPOSTデータがなくなってるから意味無い場合がある
って事ね
0058nobodyさん2008/12/22(月) 18:20:32ID:???
運用はさて置いて、
「認証が出来てない状態でPOSTが出来てることがそもそもおかしい」
というのが直感。

この場合は
「POST元のページに認証をかけて、そもそもの条件が発生しないようにする」
が解。
(当然、認証外のPOSTは受け捨て)

……これじゃダメなんだろうってことは察するけどw
0059nobodyさん2008/12/22(月) 18:24:37ID:???
何かPOSTした時点で認証って別におかしくないでしょ
セッション短いとかあるタイミングで改めてログイン再確認とか
0060562008/12/22(月) 18:35:31ID:???
>>58
とりあえずその方向で一応の解決はした。
未認証の場合、フォームじゃなく「○○をする」みたいなリンクを出して
クリックするとログインフォーム、ログインすると元のページに来てフォームが表示されてる、
と言う形にした。

ただこの場合気になるのは、ビューでいちいちログイン状態を見て
リンクとフォームを切り替える必要がある事。
AuthコンポーネントがPOSTデータの再現もしてくれるのなら、
単にフォームを表示するだけで済む。

POSTする前に認証させておけ、と言うのとどちらが本来正しいのかは判断しかねるけど。
0061nobodyさん2008/12/22(月) 20:05:14ID:???
モデルにアソシエーション書く時って
自モデルのフィールド名は指定出来るけど相手モデルのフィールド名は指定出来ないよね。
デフォルトでidフィールドが参照される

これって変更できる?
0062nobodyさん2008/12/22(月) 20:09:45ID:???
auth compornent使ってみたけど、
これってログイン画面1つしか管理できないんですかね?

2種類のログイン画面を設置したいとき、なにかやり方ありますか?
投稿用と、観覧用など…
0063nobodyさん2008/12/22(月) 20:20:39ID:???
userテーブルにprofile_idがあり、profileテーブルがあるとする
postテーブルにuser_idがあるとする
profile-user-post と言う関係

profileのフィールドでpostテーブルを絞り込み、paginatorで表示したい。
と言う場合直接SQL書く以外にどういう手段がある?

端的に言えばpaginatorでの二つ先のテーブルのバインドってこと。
コンテイナブルで出来るのかと思いきや、直接アソシエーションが張られてないとダメらしい。
つまりuserとprofileが繋がってても、postからprofileが直接繋がってないとエラーになる。

モデルにpaginate用のメソッドを書けるけど
それ使っても直接SQL書く事は避けられそうにない。
割と良くあるアソシエーションパターンだと思うんだけど。
0064nobodyさん2008/12/22(月) 20:21:13ID:???
>>62
loginアクションで2つのビューを切り替えればいいんじゃない?
0065632008/12/22(月) 21:56:02ID:???
joins使って一応解決
にしてもスマートだとは思えない
0066nobodyさん2008/12/22(月) 22:57:09ID:???
>>61
???
foreignKeyではだめなの?

> 自モデルのフィールド名は指定出来るけど相手モデルのフィールド名は指定出来ないよね。
> デフォルトでidフィールドが参照される
これの意味するところがよくわからない。
0067622008/12/22(月) 23:08:40ID:???
>>64
あ、画面だけっていうか、ユーザのアクセス管理も2パターンにわけたいって意味でした。
ちょっと書き方足りなくてすみません。
0068622008/12/22(月) 23:20:27ID:???
うーん。cakeの中にもうひとつcakeを置いて、そこで2つ目のユーザ管理するしかないかな。
トホホな気もするけど…
0069nobodyさん2008/12/22(月) 23:41:22ID:???
>>67
<a href="http://book.cakephp.org/ja/view/248/AuthComponent-%E3%81%AE%E5%A4%89%E6%95%B0">AuthComponent の変数 :: 認証 :: 組み込みのコンポーネント :: マニュアル :: 1.2 Collection :: The Cookbook</a>
ここを読むと、userModelで別テーブルを指定してやればいいように思える。
0070622008/12/22(月) 23:56:41ID:???
>>69
書き方まぎらわしくてすみません。
投稿用のユーザ管理と、観覧用のユーザ管理があって、それぞれ
別のページにアクセスできることを想定してました。

複数のモデルをauthで管理できればいいのですが、情報ないですね。
特殊なケースではないと思うのですが、みなさん各自でカスタマイズして
るんでしょうか?
0071692008/12/23(火) 00:11:20ID:???
> 複数のモデルをauthで管理できればいいのですが、情報ないですね。
うん、そういう意味で上のリンクを張ったんだけど。

モデルを切り替えるんではなくて、複数のモデルを一緒くたにして扱いたいってことですか?
0072622008/12/23(火) 00:26:01ID:???
>>71
はい。複数のモデルを一緒くたにして扱いたいのです。
それぞれのモデルに登録されたユーザ毎にでアクセス制限かけたくて。

思いついた方法は、cakeの中にもうひとつcakeを入れることくらいでした。
0073nobodyさん2008/12/23(火) 01:20:40ID:???
そういう権限レベルを分けるためのコンポーネントがある
0074nobodyさん2008/12/23(火) 01:21:10ID:???
つーかもう一つcake入れるとかふざけたことやらずに
せめて自分でコンポーネント実装しろよw
0075622008/12/23(火) 01:57:15ID:???
や、やっぱふざけてますかこれw
肝はコンポーネントなんですね。実装といわれると
とても難しそうですが、調べてみます。

みなさん、ヒントをありがとうございます。
0076nobodyさん2008/12/23(火) 02:23:37ID:???
ACLでいいんじゃないの?
最初理解するのは難儀かもしれんけど。
0077nobodyさん2008/12/23(火) 03:31:28ID:???
>>73の言うように権限レベルを分けるコンポーネントはすでにあるよ
1.2で動くかどうかは知らんけど
0078732008/12/23(火) 06:42:00ID:???
つーかACLの事ね

ところで質問なんだけどモデル名とテーブル名の変換関数とかって
0079nobodyさん2008/12/23(火) 08:28:34ID:???
>>56
http://book.cakephp.org/ja/view/395/autoRedirect
やりたいことができるよ
0080nobodyさん2008/12/23(火) 08:30:26ID:???
>>78
http://book.cakephp.org/ja/view/491/Inflector
これ?  とエスパー
0081692008/12/23(火) 08:50:50ID:???
>>72
認証と権限管理がごっちゃになってない?

Authコンポーネントは認証をするためのものだから、
そういう使い方をしようとすると無理が出るんだとおもう。

他の人も言っているように権限管理はACLコンポーネントを使うのがいいよ。
0082nobodyさん2008/12/23(火) 15:24:32ID:???
routeがすげえ強力だというのを把握した
0083nobodyさん2008/12/23(火) 16:03:34ID:???
CakePHPって、どこもかしこもarrayだらけだ。
arrayの入れ子ばかりたくさん書いていると、なんだかLISPを書いているような
気になる。
つうか、LISPの偉大さを思い知った気がする。
リストの入れ子の表現力はすげえな。
0084nobodyさん2008/12/23(火) 16:08:36ID:BZm1ywfg
管理用機能と一般ユーザ用機能が完全に分けられるなら
システムごと分けちゃった方がベターだと思うんだ
0085nobodyさん2008/12/23(火) 17:32:11ID:???
phpは配列の方が扱いやすい

echo"僕の名前 $a['name']";

こういう書き方が出来るけど

オブジェクトだと

echo"僕の名前 $a->name";

こうするとエラーが出るから

echo '僕の名前'.$a->name;
とか解体作業が必要になる
0086nobodyさん2008/12/23(火) 17:34:50ID:???
phpは配列を扱う関数が豊富だから
オブジェクトを扱う場合も結局は配列の変換しないと
phpには豊富にある配列関数を利用できないんじゃない
0087nobodyさん2008/12/23(火) 17:49:25ID:???
>>85

ネタですか?w
0088nobodyさん2008/12/23(火) 17:50:33ID:???
レベル低過ぎ

>>85
後者でもエラーでないよ? つうか、前者であれ後者であれ、
どこまで変数かを示すように、ブレースで囲む習慣をつけたほうがいいよ。

>>86
オブジェクトを配列として扱いたいんならArrayObjectとかあるやん。
foreachでプロパティ以外を扱いたいならIterator系をimplementすればいいし。
0089nobodyさん2008/12/23(火) 23:11:18ID:???
PHPユーザの中でもレベルの低い層がCakePHPへ流れてきている悪寒
0090nobodyさん2008/12/24(水) 03:20:53ID:???
PHP界隈って、どうしても「レベル低い」言いたい人がいるよねw
0091nobodyさん2008/12/24(水) 04:16:31ID:???
アソシエーションの解決をスマートに解決する方法ないかなー
2つ3つ先のテーブルとなるとjoins使うしかないよね?

アソシエーションで読み込んだモデルのrecursive設定を見てそこからさらに見てくれればいいのに
アソシエーション探索を行うモデルを指定出来るようにして
0092nobodyさん2008/12/24(水) 05:46:45ID:???
>>88
ArrayObjectはPHP5.2からだよ。
phpはオブジェクトは扱いにくいって言ってるだろうが素人が
なんでわかんねーかな
0093nobodyさん2008/12/24(水) 05:53:40ID:???
>>88
phpはオブジェクトの方が扱いやすいと思ってんの?
0094nobodyさん2008/12/24(水) 05:59:57ID:???
PHP4のサポート終わってみんな5.2になりつつあるんだから5.2からでもいいんじゃね?
0095nobodyさん2008/12/24(水) 06:04:17ID:???
>>88
オブジェクトだと
ArrayObject関数とか必要になるんでしょ?
それって手間じゃない?


0096nobodyさん2008/12/24(水) 06:09:24ID:???
>>88
>>foreachでプロパティ以外を扱いたいならIterator系をimplement
どうやって?コード書いてくれよ
javaじゃないんだからさ。。。
0097nobodyさん2008/12/24(水) 06:11:27ID:???
>>94
なりつつあるもののを
当たり前に使えるのような言い方をするのは
いかがなものかと・・・
0098nobodyさん2008/12/24(水) 06:19:47ID:???
>>88
ArrayObjectみたいな不安定な関数よく使ってるよなwww
http://uruseiyatsura.way-nifty.com/blog/2007/04/php5arrayobject_51d1.html
0099nobodyさん2008/12/24(水) 06:22:53ID:???
>>88
>>オブジェクトを配列として扱いたいんならArrayObjectとかあるやん。

ArrayObjectてオブジェクトを配列として扱う関数なん?
配列をオブジェクトとして扱うんじゃなくて?
http://php.mirror.camelnetwork.com/manual/ja/class.arrayobject.php
0100nobodyさん2008/12/24(水) 06:27:46ID:???
>>88
ArrayObjectて配列をオブジェクトとして扱ってるよね?
記事をきちんと読もうよ!素人さん
0101nobodyさん2008/12/24(水) 11:25:53ID:???
いまさら知ったんだけど、OpenPNEがフレームワークにsymfonyを採用したみたいね。
ちょい嫉妬w
0102nobodyさん2008/12/24(水) 13:12:13ID:???
>>97
特定の環境で動かすアプリが殆どなんだから
一般配布するCGIでもなけりゃ使えるなら使えばいいともう
0103nobodyさん2008/12/24(水) 14:29:58ID:???
>>102
つかえばいいやん
CakePHPで使う必要がどれだけあるのかと・・・
0104nobodyさん2008/12/24(水) 14:34:03ID:???
使える、使いたい、って言ってる人に対して、
使う必要ないってかたくなに言うのもなんだかなぁって思う。
0105nobodyさん2008/12/24(水) 17:44:15ID:???
あくまでアドバイスや意見で自分で判断すればいいじゃん
0106nobodyさん2008/12/24(水) 20:54:05ID:???
>>105
おまえのはアドバイスじゃねーよw
自分の発言繰り返して読んでみろ
0107nobodyさん2008/12/24(水) 23:37:14ID:???
>>106
あらあら、次は勝手に特定ですかw
0108nobodyさん2008/12/25(木) 12:13:56ID:???
2カラムのインデックスをmodelにプライマリキーとして設定することが可能であれば、
設定を教えて頂けませんでしょうか?

既存のmysql DB管理にcakeを使うつもりでいたら、上記設定のため
idのテーブルを追加してプライマリに設定することが行えませんでした。
0109nobodyさん2008/12/25(木) 12:26:16ID:???
cake使うなら、OOPの勉強は必須?

なんかやたら「なんちゃらextends〜〜」とかって
出てくるんですけど??
0110nobodyさん2008/12/25(木) 12:31:02ID:???
>>109
不要。
extendsが何をしているかとか、疑問に思ったら都度調べるくらいの姿勢があれば良いと思う
0111nobodyさん2008/12/25(木) 13:14:10ID:???
>>108
http://book.cakephp.org/ja/view/24/
「できなかった」というと?
0112nobodyさん2008/12/25(木) 13:30:27ID:???
>>111
既存のプログラムが使用しているDBを、横からcakeで管理したかったので、
DBを新しく作ったり、すでに作られている2カラムのインデックスを解除したりは
できません。

idカラムを作成し、auto incrementalを設定しようとすると、
すでにprimaryが存在するために処理が失敗してしまいました。

primaryに設定されている2カラムのインデックスを解除すると、
既存のプログラムが動作しなくなってしまうのです…
0113nobodyさん2008/12/25(木) 13:47:22ID:???
>>112
CakePHPでは複合プライマリキーは使えない
0114nobodyさん2008/12/25(木) 13:57:27ID:???
>>112さん
ここを読むといいよ!

"複合キー" フォーラム - CakePHP Users in Japan
ttp://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=1304&forum=6&move=prev&topic_time=1216343829
0115nobodyさん2008/12/25(木) 23:43:53ID:???
>>113-114
cakeと複合キー処理について、理解が深まりました。
なんとかなりそうです。ありがとうございます。
0116nobodyさん2008/12/26(金) 10:52:31ID:???
1.2 stableあげ
0117nobodyさん2008/12/26(金) 11:25:09ID:???
RC4からほとんど変わってないやんけw
もっと完全にバグ取ってからにしてほしかった・・・

でもおめでと〜!
0118nobodyさん2008/12/26(金) 12:06:29ID:???
1.2すたぶるキター

く・・クリスマスプレゼント?
0119nobodyさん2008/12/26(金) 12:24:27ID:???
しかもケーキってとこが洒落てるw
0120nobodyさん2008/12/26(金) 12:32:56ID:???
いや、クリスマスケーキか
0121nobodyさん2008/12/26(金) 12:33:32ID:???
あ、リロード忘れてレス付いてるのきづかんかったわ
0122nobodyさん2008/12/26(金) 15:09:01ID:???
いつもDonationの所 No Thanksでごめんね。
0123nobodyさん2008/12/26(金) 15:14:48ID:???
三項条件式どんだけ便利やねん。多様は可読性悪くする
ビューで使うとかなり見通しがよくなる
0124nobodyさん2008/12/26(金) 15:26:28ID:???
CakePHP におけるシンボルの命名規約

private 先頭にアンダーバーを2つ置く __test
protected 先頭にアンダーバーを1つ置く _test
public 先頭にアンダーバーを置かない test

ナンジャコリャー
0125nobodyさん2008/12/26(金) 15:44:12ID:???
>>124
Pythonでも似た仕組みが使われている。
慣れれば悪いものじゃない。
0126nobodyさん2008/12/26(金) 16:23:26ID:???
cakephp,ちょっとむずかしくない?
0127nobodyさん2008/12/26(金) 16:33:19ID:???
EthnaやMapleよりかなり簡単だと思ったが
0128nobodyさん2008/12/26(金) 17:06:20ID:???
>>126
難しいというか独自ルールが多いとは感じた。
しかし、それを超えた先の開発効率はすばらしいと思う。
0129nobodyさん2008/12/26(金) 17:06:36ID:???
ん?
cakeのprotectedってどういうタイミングで使うん??
0130nobodyさん2008/12/26(金) 17:13:03ID:???
ほんとに開発効率高いのかなあ
symfonyも使ったけどバリデーションルールの自動生成が無いのは確実にマイナス
0131nobodyさん2008/12/26(金) 18:17:48ID:???
1.1から1.2に変えたら表示に常に10秒余計にかかるようになったけどなんで?
0132nobodyさん2008/12/26(金) 19:14:18ID:???
debugモードじゃね
0133nobodyさん2008/12/26(金) 19:19:08ID:???
開発効率の向上以上に、メンテナンス効率の向上を実感することが多い
過去製作したコードを見たとき、「何でこんなことしてるんだっけ?」っていうのが激減した
0134nobodyさん2008/12/26(金) 19:50:29ID:???
1.2stableのbakeって複数プロジェクト前提みたいになったけど、どこにプロジェクト作るのがいいんだろ?
cakeの一番上のディレクトリに、/appと並ぶ形で作ると管理しやすいかな。
PDTとかで管理する上でも。
01351342008/12/26(金) 22:09:57ID:???
結局楽するために今までどおりappの中に作る事にした
0136nobodyさん2008/12/26(金) 22:30:57ID:???
複数プロジェクトってどうやるんですかね?
0137nobodyさん2008/12/26(金) 22:36:04ID:???
複数プロジェクトとうか、コア(cakeディレクトリ)の共有だろ?
マニュアルに書いてある。
http://book.cakephp.org/ja/view/35/
0138nobodyさん2008/12/26(金) 22:41:30ID:???
コミュニティのレベルも低いし
だめっぽくねcake
0139nobodyさん2008/12/26(金) 22:55:42ID:???
とくにダメっぽいところ感じないんだが
0140nobodyさん2008/12/27(土) 01:25:44ID:???
>>136
bakeで好きなところにプロジェクトを吐けるよ
0141nobodyさん2008/12/27(土) 03:36:46ID:???
http://book.cakephp.org/ja/view/35/
とかIE7でもおかしいし、firefoxだともっとやばい
なんとならんの?
0142nobodyさん2008/12/27(土) 08:43:14ID:???
CakePHPの新しい本(英語だけど)
Practical CakePHP Projects 400ページ 3,963円 08/12/8発行
http://www.amazon.co.jp/Practical-CakePHP-Projects/dp/143021578X/ref=tag_dpp_lp_edpp_img_in
どうよ?

(参考)半年前に発売されている姉妹書
Beginning CakePHP: From Novice to Professional 344ページ 3,963円 08/7/21発行
http://www.amazon.co.jp/Beginning-CakePHP-Novice-Professional/dp/1430209771/ref=tag_dpp_lp_edpp_img_in
0143nobodyさん2008/12/27(土) 12:39:56ID:???
>>142
4000円とかあほくさー

ページあたり10円かよ
0144nobodyさん2008/12/27(土) 13:29:46ID:???
「Terrible Examples, Poorly Written Book...」って言われてる。
0145nobodyさん2008/12/27(土) 13:52:50ID:???
このシリーズって日本で言うと「できる」シリーズみたいなもんだろ?
0146nobodyさん2008/12/27(土) 15:59:16ID:???
できるシリーズは明らかに超初心者向けな写真メインの構成なだけで
値段も倍くらい違うし一緒にするのはかわいそう
0147nobodyさん2008/12/27(土) 18:29:26ID:???
早速CakePHP 1.2.0.7962-Stableをダウンロードし、CakePHP1.2を始めようとしたら
http://cakeforge.org/frs/?group_id=23&release_id=433
app/config/の中に、database.php.defaultファイルが見当たらない。
探し方が悪いのか?本家が忘れ物したのかな?
みなさんのところdatabase.php.defaultファイルあります?
0148nobodyさん2008/12/27(土) 18:33:33ID:???
>>147です。
database.php.defaultありました。スマソ
0149nobodyさん2008/12/28(日) 18:51:53ID:???
聞きたいことがある。

Model::save() で、バリデーションエラーではなく、DBシステムエラーが起こっ
た場合には、同様に戻り値は false になるんだろうか?

もしそうなら、バリデーションの場合とシステムエラーの場合とで、戻り値が
falseの時の処理を分けなければいけないと思うんだけど、どうしたらいいんだろ?

1. save()の前にvalidate()を実行して分岐する。
2. save()のあとにinvalidFields()を実行して分岐する。
みんなはどうしてる?
0150nobodyさん2008/12/28(日) 20:13:58ID:???
>>149
Model::onError()
0151nobodyさん2008/12/28(日) 20:41:33ID:???
>>150
うわー、これ知らなかった!
なんだ、DBアクセスの箇所ごとにエラー処理する必要はなかったんだ。
ありがとう。
0152nobodyさん2008/12/28(日) 22:11:07ID:???
DBエラーって、onError()イベントハンドラのコール以外で知ることはできない?
うちの場合ちょっと事情があって、onError()関数でを上書きできないので。
0153nobodyさん2008/12/28(日) 22:33:37ID:???
クラスDboSourceのソースを見たら、Model::onError()が呼ばれるときは、
Model::save()の戻り値はやっぱり false だった。
save のあとで invalidFieldsがあるかどうかで分岐すればよさそう。
0154nobodyさん2008/12/29(月) 03:21:56ID:???
>>152
適当にDboを継承してonErrorが呼ばれてる部分を実装すればいいのでは?
やりたくないけど。

>>153
DB側がエラーになってる時点で、saveも糞もないと思う。
0155nobodyさん2008/12/29(月) 10:08:14ID:???
>>154
>>153は、controllerでどう書くかを言ってるんだろ
0156nobodyさん2008/12/29(月) 10:43:26ID:???
>>152
まずはどんな事情かを説明しろ
0157nobodyさん2008/12/29(月) 13:36:03ID:???
「CakePHP徹底入門」の正誤情報掲載してくれ〜
http://seshop.com/book/errata/
08年9月発売で、発売から4ヵ月も経っているのに、まだ正誤情報掲載してないぞ〜
俺は、Ajaxの項のp.178のリスト5.5が全然違うのがわからず、メチャ手間取ったぞ〜
CDのLIST5-5も全然違うじゃねーか。ダブルパンチだ。
早く正誤情報掲載してくれ〜
0158nobodyさん2008/12/29(月) 18:21:03ID:???
そんな本のことはさっさと忘れるべき。
0159nobodyさん2008/12/29(月) 20:00:17ID:???
>>158
本を悪く言ってんじゃなくて、反対
「CakePHP徹底入門」良い本だから期待している。
CakePHP1.2で解説されているから非常に便利。内容も入門者にはベスト。良い例題でわかり易い説明。

まだ半分までしか読んでないけど、気付いた間違いを紹介
p.179誤
37: <?php echo $jptime->jpdatetime($product['Product']['created']); ?>
40: <?php echo $jptime->jpdatetime($product['Product']['modified']); ?>
正(CDもNG)
37: <?php echo $product['Product']['created']; ?>
40: <?php echo $product['Product']['modified']; ?>
0160nobodyさん2008/12/29(月) 20:00:53ID:???
p.180誤
リスト5.7
1: function index() {
リスト5.8
1: function index() {
正(CDはOK)
リスト5.7
1: function index($id = NULL) {
リスト5.8
1: function index($id = NULL) {

p.89中あたり 誤
INSERT INTO products VALUE (1, 1, '商品1', now(), now())
INSERT INTO products VALUE (2, 2, '商品2', now(), now())
INSERT INTO products VALUE (2, 2, '商品3', now(), now())
正(CDはOK)
INSERT INTO products VALUE (1, 1, '商品1', now(), now());
INSERT INTO products VALUE (2, 2, '商品2', now(), now());
INSERT INTO products VALUE (3, 3, '商品3', now(), now());

上記3つはプログラムが動かないけど、以下2つはどうでもいい事

p.133下の方 誤
shopping/controllers/category_controller.php

shopping/controllers/categories_controller.php

p.116下の方 誤
と質問がきますので、「y」を入力して終了します。

と質問がきますので、「n」を入力して終了します。
0161nobodyさん2008/12/30(火) 19:33:21ID:uva7pRTj
Railsを猿真似してくれたら楽なのに
所々にいらぬお節介がついて回るよね、cakeは
核になるMVCを無意味に密に結合するような作りにしたりして
素晴らしいお手本があるにもかかわらず何故センスのない変な拡張をいれるんだorz
0162nobodyさん2008/12/30(火) 23:28:49ID:???
好きなFW探して使ったらどうでしょうか
0163nobodyさん2009/01/01(木) 15:27:00ID:???
おっ、マニュアルのレイアウト崩れが直った?
0164nobodyさん2009/01/01(木) 16:48:24ID:???
>>163
目次の「3 CakePHPによる開発」をクリックするとレイアウト崩れるけど?
ttp://book.cakephp.org/ja/
0165nobodyさん2009/01/01(木) 17:23:53ID:???
あらま、これってどこかに報告したほうがいいの?
0166nobodyさん2009/01/01(木) 21:00:37ID:???
他のページも崩れまくってる

以前のマニュアルページがそのままインポートされてる感じだね
0167nobodyさん2009/01/02(金) 07:50:16ID:???
setFlash()をflash()すると
末尾に 1 っていうゴミが付いてくるんだけど、なんだろう?
0168nobodyさん2009/01/02(金) 07:57:24ID:???
事故解決
echo $session->flash();

って書いて返値のtrueを出力してた
0169nobodyさん2009/01/02(金) 22:49:27ID:???
>>163  >>165
1.2マニュアルのレイアウト崩れ直ったみたい。
ttp://book.cakephp.org/ja/
0170nobodyさん2009/01/02(金) 22:55:13ID:???
>>169
おっ、ほんとだ中の人gj
0171nobodyさん2009/01/03(土) 02:12:26ID:???
なおってねーよ
再現率は100%じゃないのかねぇ
0172nobodyさん2009/01/03(土) 02:28:49ID:???
ページによって出たりでなかったりってのはあったが
今見た限りでは直ってた

どこのページで問題出てる?
0173nobodyさん2009/01/03(土) 03:49:50ID:???
1項目づつ 次のページ のリンクたどってくとおかしいね
0174nobodyさん2009/01/03(土) 18:30:22ID:???
Formヘルパーのinputメソッドを使って文字の入力画面を表示すると
文字サイズが大きいのですが、文字サイズを小さくするにはどうすれば
よいでしょうか?よろしくお願いします。
echo $form->input('content', array('type'=>"text", 'label'=>""));
0175nobodyさん2009/01/04(日) 10:58:57ID:???
>>174
それはCSSとかの話じゃなくて?
0176nobodyさん2009/01/04(日) 12:47:21ID:???
>>175
ヒントありがとうございます。
正解みたいですね。CSSは耳にした事はありますが、難しいので避けてました。
CSS レイアウト スタイルシートがキーワードのようですね。
http://www.bnote.net/php/cakephp/cakephp08.shtml
http://www.ideaxidea.com/archives/2007/06/cakephp_014.html
勉強してチャレンジしてみます。
0177nobodyさん2009/01/04(日) 14:23:59ID:???
('A`)
0178nobodyさん2009/01/04(日) 17:01:24ID:???
テーブルレイアウトが主流だけど、数年後にはcssは必須になってる。
今から先取りして覚えておいて損はない。
0179nobodyさん2009/01/04(日) 17:31:20ID:???
現時点でテーブルレイアウトにしようなんて奴は逆に勇者に見えるわ
0180nobodyさん2009/01/04(日) 18:16:16ID:???
グーグルはテーブルレイアウトだよ
0181nobodyさん2009/01/04(日) 18:47:13ID:u5+bOtGZ
費用対効果
テーブル使った方がはるかに効率的な場合に狙ってやるのは○
テーブルレイアウトしかできないのは論外

0182nobodyさん2009/01/04(日) 18:48:37ID:???
デザイン直ってないな
崩れまくり
0183nobodyさん2009/01/04(日) 19:10:12ID:???
>>180
グーグル自体がクロールされる必要はなかろう。。
0184nobodyさん2009/01/05(月) 02:25:07ID:???
なぜCakePHPみたいな将来性なさそうな技術に時間使ってるの?
0185nobodyさん2009/01/05(月) 02:48:35ID:???
>>184
お前さんもここで使ってるよねw
0186nobodyさん2009/01/05(月) 02:48:56ID:???
じゃあCake以外でいいの教えてくれよ。PHPで。
0187nobodyさん2009/01/05(月) 03:19:39ID:???
オープンソースあぷりの多くがPHP製
0188nobodyさん2009/01/05(月) 16:02:01ID:???
>>187
それはちょっと前にPerl開発者が言ってた台詞だよ・・・
0189nobodyさん2009/01/05(月) 20:31:10ID:qd8O6pD6
仕事で仕方なくcake使ってるが次使うことはないだろう・・・
0190nobodyさん2009/01/05(月) 21:29:11ID:???
>>189
ちなみに次は何を検討してる?
0191nobodyさん2009/01/05(月) 23:41:50ID:???
もち、ちぃたん
0192nobodyさん2009/01/06(火) 09:15:09ID:???
http://pc11.2ch.net/test/read.cgi/php/1229960175/
0193nobodyさん2009/01/06(火) 09:26:24ID:???
http://book.cakephp.org/ja/view/29/%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%AE%E6%BA%96%E5%82%99

まだ壊れてるぞー
0194nobodyさん2009/01/06(火) 09:36:40ID:UaXiuRrZ
http://book.cakephp.org/ja/complete/39/%E7%92%B0%E5%A2%83%E8%A8%AD%E5%AE%9A

この辺りも
1ページ表示で崩れる
0195nobodyさん2009/01/06(火) 15:31:13ID:???
>>193-194
この問題ってcakephpの問題じゃなくて
デザイン(css)の問題でおk?
0196nobodyさん2009/01/06(火) 15:48:45ID:???
フレームワークの恩恵を受けるのは
マスターしてから1年後だと思う。1年経つとCakePHPに特化した使いまわし出来るロジックがかなり増える
なので新しいフレームワークが出て、すぐ移行するのは
今まで蓄積したロジックを捨てるに等しいので
CakePHPを8割、新しいフレームワーク2割という感じでフレームワークを使っていこうと思っている
0197nobodyさん2009/01/06(火) 15:52:53ID:???
成長性を考えると、全体案件の2,3割は新しいフレームワークへ力を入れた方がいい
このバランスが大切だと思う、完全シフトはただのバカと思うし
CakePHP100%たより過ぎも、将来がない
0198nobodyさん2009/01/06(火) 15:55:30ID:???
新しいフレームワークを覚えるにしても
CakePHPを超えるものは見当たらないから
実質、CakePHP100%でやってる
0199nobodyさん2009/01/06(火) 16:08:25ID:???
コンセプトさえ理解してれば新しいフレームワークの導入なんて
せいぜい三日程度のコストしかかからないと思うんだが
独自コンポーネントを移すにしても
0200nobodyさん2009/01/06(火) 16:30:45ID:???
1.2.0.7962 Finalきた
0201nobodyさん2009/01/06(火) 17:03:32ID:???
細かいところでハマりまくる日々…
出来る人との違いを痛感します
0202nobodyさん2009/01/06(火) 17:51:38ID:???
>>200
あけおめ
0203nobodyさん2009/01/06(火) 17:54:47ID:???
>>196
言うよねぇ〜

俺も2年くらい使ってるけど、ほんっと使い回しが効く。
素晴らしいです。
0204nobodyさん2009/01/07(水) 00:15:09ID:???
>>200
メリクリ
0205nobodyさん2009/01/07(水) 02:09:30ID:???
CakePHP 1.2 SP1はまだですか?
0206nobodyさん2009/01/07(水) 10:48:13ID:???
ModelBakerが話題にあがってこないけど、誰も使ってないのかな?
ttp://www.widgetpress.com

Macユーザー自体少ないのかな。

自分はこれからさわってみます。
0207nobodyさん2009/01/07(水) 16:24:24ID:???
>>206
なんか凄そう。と思って落としてみたけど10.5専用なのね・・・残念。
0208nobodyさん2009/01/07(水) 16:47:56ID:???
http://book.cakephp.org/ja/view/84/%E9%96%A2%E9%80%A3%E3%83%A2%E3%83%87%E3%83%AB-hasOne-hasMany-belongsTo-%E3%81%AE%E3%83%87%E3%83%BC
これってトランザクション使わないとまずい?
0209nobodyさん2009/01/07(水) 16:55:48ID:???
>>208
詳しいことは他の人に譲るが
記憶が定かなら、確か件数取得(select)して、書き込む(update)だけだったと思うから、トランザクション関係ないはず。
02102092009/01/07(水) 17:00:24ID:???
>>208
あれ?複数Modelのsaveについて言っているのかな?
0211nobodyさん2009/01/07(水) 17:04:53ID:???
>>210
関連モデルのsaveについて言ってる
公式マニュアルのくせに何の注意書きも無いから内部でうまくやってるのかなと
0212nobodyさん2009/01/08(木) 09:16:02ID:???
実験してみてくれ
0213nobodyさん2009/01/08(木) 11:52:33ID:???
Cake1.2です
viewで
echo $form->error('Modelname.fieldname', '出力されるエラー表示');
だとうまくいくのに
echo $form->error('Modelname.fieldname');
でmodelの$validateで代入した'message'が表示されません。
これでうまくいくようなことがあちこちに書いてあるのに。
どうやったら'message'を出力できるんでしょうか。
0214nobodyさん2009/01/08(木) 14:16:03ID:???
解決しました。
modelの文字コードが原因でした。
0215nobodyさん2009/01/09(金) 08:36:44ID:I5IAXkbt
初歩的な質問かもしれないんですが
モデルクラスのプロパティは、コントローラーをまたがって保持されます?

なにがやりたいかというと、
モデル内でファイルを読み込んで、そのデータをプロパティに保持
(DBを使わないモデル)
他のコントローラーからそのモデルクラスのプロパティを参照したい

personモデル
 var $sex;
function loadfile() { ファイルを読み込んでプロパティをセット }
function getSex() { 性別を返す }

peopleコントローラー
getSex()でデータ取得

profileコントローラー
 getSex()でデータ取得

各コントローラーで、必ず毎回ファイルを読み込まないとだめでしょか?
0216nobodyさん2009/01/09(金) 08:42:51ID:???
静的メンバで以下みたいにやれば出来るんじゃね
if(isSet(ClassName::sex)){
//ファイル読み込み
}

一応いっとくとプロセスまたがっては無理だよ
0217nobodyさん2009/01/09(金) 08:43:21ID:???
あ、if(!isSet())ね
0218nobodyさん2009/01/09(金) 08:51:49ID:???
なるほど…ありがとうございます
できなくはないんですね

基本的には、CakePHPの流儀(というかPHPフレームワーク?)としては、
コントローラーごとに毎回データを読む(DB使う場合も)
という感じでしょうか

あとはキャッシュ機能を使うみたいな
0219nobodyさん2009/01/09(金) 08:54:52ID:???
コントローラー呼び出しごとにアクセスがあると、
ちょっと心配なんですが、キャッシュ機能使えってことでしょうか

セッションに保存するのはなんか違う気がしますし
0220nobodyさん2009/01/09(金) 09:02:28ID:???
セッションに保持すればよいということではないの?
というか、そもそも、people と profile が関連づけられていれば、profileコントローラーは不要だと思うが
(よく読み込まずに答えたから、見当違いだったらすまん)
0221nobodyさん2009/01/09(金) 09:02:36ID:???
DBアクセスオブジェクトは一つしか作られないよ
0222nobodyさん2009/01/09(金) 09:03:29ID:???
目的がパフォーマンスならセッションに入れる意味はあまり無いんじゃないの?
DBから読むかファイルシステムから読むかの違いでしょ
0223nobodyさん2009/01/09(金) 09:05:38ID:???
どういうDBアクセスが発生してるか気になるならデバッグモードにすればいい
0224nobodyさん2009/01/09(金) 10:12:30ID:???
>>215は、Model とController の対応が間違っているということはないの?
Userモデル(Personモデル)
Usersコントローラー
があって、

/users/index で、Usersリストを表示する
/users/view で、Userプロフィールを表示する
みたいな

質問を読むと、根本的な問題のような気がする
(Peopleモデルというのがイメージできないし、Personsコントローラーがあれば、Profilesコントローラーは要らなそうな気がする)
02252152009/01/09(金) 11:09:25ID:???
すんません
例は適当です…

具体的には、ファイルからデータを読み込ませ、
そのデータを元に、各コントローラーでフォームを自動構築しようとしています
(入力内容が毎回可変なため、このようにしています)

ファイルには各コントローラーにまたがる入力項目のデータが含まれていて、
各コントローラーでは、そのデータを読み込んでフォームを構築します

この場合、コントローラーごとにファイルに何回もアクセスする
ということでいいんでしょうか?
(今のところ、データベースは一切使いません。)
02262152009/01/09(金) 11:16:27ID:???
ファイル(product)
 商品名:text
 価格1:select
 価格2:select
 (価格の数は可変)

ファイル(price)
 1000
 2000
 3000
 (可変)

モデル
product
 price

コントローラー
 productController
priceController

ビュー
 product(商品の選択画面)
  ファイルを読み込んで商品名を選択する画面
 price(価格の入力画面)
  価格のデータ数分だけフォームを入力

コントローラーを分けているのは、もう少し複雑で、他のデータなども混じるためです
うまく説明できない・・・・
02272152009/01/09(金) 11:23:38ID:???
実際にはpriceにも、価格専用のフォーム生成のためのデータが入ってます(これも可変)

productにまとめると肥大化&実際に価格データ専用のアクションも必要になるため、
コントローラーをわけてます。

うまく説明できないのですが、
とりあえず、コントローラーまたぐならファイルに毎回アクセスしろってことですかね
0228nobodyさん2009/01/09(金) 11:37:58ID:???
コンポーネント使えよ
0229nobodyさん2009/01/09(金) 11:38:29ID:???
いやむしろエレメント使えよ
02302152009/01/09(金) 11:54:38ID:???
>>228

コントローラーは共通じゃないです
モデルは一部共通ですね
となるとビヘイビア?

どのみち、普通にやるとなれば毎回ファイルアクセスは発生ですね
後で外部クラス化を考えることにします…
0231nobodyさん2009/01/09(金) 12:05:39ID:???
なんでビヘイビアになるんだ?
コンポーネントかエレメントで出来るだろ
0232nobodyさん2009/01/09(金) 12:12:39ID:???
>>225 から想像するに、通常DBに保存するデータを、DBの代わりにファイルに保存しているということかな?

そうだとすると
「コントローラーごとにファイルにアクセスで良いか」というのは、Yesということになるね
(ただし、正確には、ControllerではなくModelだけど)

ProductとPriceがHasManyの関係にあるのなら、なるべくDBを使うべきでしょう。
(もしかしたらHABTMかもね)
0233nobodyさん2009/01/09(金) 12:15:46ID:???
いやいやそれ以前に
フォーム生成処理を共通化したいのならエレメントかコンポーネントだろ
0234nobodyさん2009/01/09(金) 12:19:41ID:???
で、パフォーマンスを気にするのであれば、ビューキャッシュか、CacheEngine使うということで良いと思うが。
0235nobodyさん2009/01/09(金) 12:20:22ID:???
あ、>>234は、>>232のつづきね
0236nobodyさん2009/01/09(金) 12:28:58ID:???
>>233
たぶん、>>215が気にしているのは、「毎回DBやファイルを読み込むのが気持ち悪い」ということかなと。
だとすると、viewの問題ということなんだけど、そもそもModelやControllerの設計がまずいとキャッシュも使えないからね。
0237nobodyさん2009/01/09(金) 12:34:01ID:???
PHPで常駐プロセスにデータを預けておくと言う事は出来ない。
DBに記録する以外は。

Cakeのキャッシュなんて所詮はファイルシステムから読み出してるに過ぎないから
それ以上の高速化は無理。

そもそもやろうとしてる事がエレメントを使って書くべきものに思えるが。
02382152009/01/09(金) 12:41:11ID:???
>>232

はい、だいたいそんな感じです

いずれ、ユーザー固有のデータはDBに入れるつもりですが、
今回の質問のデータはシステム全体で共通のデータです
ただ、それがユーザーの入力によって変わる(切り替える)ことがあると。


>>233

その共通化の元となるデータをファイルで読み込むんです…
ユーザーの入力に応じて変化します。
そういう可変データがたくさんあるんで…


ざっとマニュアルを見た感じでは、DataSource?を自分で作ればよいのかな、とも。
とりあえずは、モデルで処理して、後々外部クラスとかにまとめてみることにします

ありがとうございました
0239nobodyさん2009/01/09(金) 12:43:19ID:???
速い<遅い
ビューキャッシュ<<<<エレメントキャッシュ<何もしない

ビュー自体をキャッシュできるならするべきでしょう
0240nobodyさん2009/01/09(金) 12:44:03ID:???
>>238
ユーザの入力はGETなりPOSTなりで来るんでしょ?
エレメント内でそれを見て動作切り替えたらいけないの?
02412152009/01/09(金) 12:45:58ID:???
>>237

フォームの個数もパターンも無数にあるんですが、エレメントでできるんでしょうか?
いや、実際の出力はエレメントでやるんですが、
"どのエレメントをどの順番で何個出力するか"のデータが、今回のファイルに保存されているんで…

そのデータはモデルで読むか、外部クラス化するかですよね。
で、そのデータをコントローラー間で使い回したかったんです。

イメージとしては、XMLからのフォームの自動生成、
しかも、それがユーザーの入力に応じて変わると、いう感じで、
その元となるXMLを保持しておけるのかな、と。
(データファイルはいずれXML化するつもりです)

外部クラス化とかするしかないですよね。
モデルに書くと毎回読みにいくしかなさそうということで。
02422512009/01/09(金) 12:48:25ID:???
>>240

POSTで来るんですが、入力段階(画面)が数回あって、
ユーザーの入力値と順序によって、生成するフォームのパターンが変わるんです…
0243nobodyさん2009/01/09(金) 12:49:04ID:???
フォームパターンそのものをユーザにアップロードさせたりするのか?
そうでないならエレメントにコードを置かずファイルから読み込もうとしてる理由が分からん。
02442512009/01/09(金) 12:50:10ID:???
すいません、途中で送信してしまった…

しかも、画面は自由に行き来可能で、ある画面で入力値を変えると、
他の画面のフォームも再構築する必要があると…

とりあえず、一回全部組んでから効率化は考えることにします…
0245nobodyさん2009/01/09(金) 13:49:09ID:???
formヘルパーってDBなしだと使えない?(汗
0246nobodyさん2009/01/09(金) 14:01:28ID:I5IAXkbt
http://book.cakephp.org/ja/complete/182/%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0#%E3%83%95%E3%82%A9%E3%83%BC%E3%83%A0%E3%81%AE%E4%BD%9C%E6%88%90-183

create()のパラメータ modelって、モデル名じゃなくてコントローラー名だよね?
model名入れててエラーになった orz
0247nobodyさん2009/01/09(金) 15:22:27ID:I5IAXkbt
質問だけどセッションってモデルじゃないの?
コントローラでいじるのに違和感があるんだけど
モデルじゃセッション使えないよね?
0248nobodyさん2009/01/09(金) 15:23:23ID:???
ああSession自体がモデルなんか
すまそ
02492512009/01/09(金) 18:31:13ID:I5IAXkbt
ちょっと、追加で質問なのですが…

例えば、商品のデータを編集する処理を作る場合、
商品名を編集する画面と価格を編集する画面を分けたいと思ってます

この場合、コントローラーもわけたほうがいいんでしょうか?
(もちろんモデルは一つ(Product)になるかと思いますが)

というのも、コントローラーを一つにすると、

products/name/change
products/prices/delete
products/prices/change
products/prices/delete

のようになり、URLのアクション部分が実際の処理とは違う形になってしまい、
アクション側でもパラメータでいちいち処理を分岐させる必要があります

そこでコントローラーだけを二つにわけて、

products/change
products/delete
prices/change
prices/delete

のようにしようかと思うんですが、よくないですかね?

どうでもいい質問かと思うんですが、できればCakeの流儀に合わせたいので…
0250nobodyさん2009/01/09(金) 18:39:40ID:???
>>249
change_priceと言う形にするか
change/priceじゃないの

例えばその商品名と価格の編集フォームがほとんど同じなら
change/priceの形にした方が良いよね
0251nobodyさん2009/01/09(金) 19:07:30ID:???
>>249
action名は add / edit / delete にしましょう
で、>>250のように /products/edit/price とするか

自分だったら /products/edit にして、渡されたデータ($this->data)を見て、内部で分岐するかな
(分岐の必要があれば、だけど)
0252nobodyさん2009/01/09(金) 19:10:02ID:???
いずれにせよ、何かをbakeして、基本形を身につけたほうがよさそうだけどね
02532152009/01/09(金) 19:33:24ID:???
名前間違えてましたw

>>250
>>251

あー、やっぱりコントローラーは一つにまとめたほうがいいですか
対象は同じですもんね
changeにするなら、ルーティングで変えたほうがよかったですね

型どおりのはいくつか作ってみたんですが、
まだ応用までいきついてません

参考になりました
ありがとうございます
0254nobodyさん2009/01/09(金) 23:29:16ID:???
俺ならedit_name edit_priceとアクションメソッドを分ける
0255nobodyさん2009/01/10(土) 16:34:04ID:tnQWYP/T
Securityコンポーネントの使用時に、
routes.phpでルーティングを変えるとエラーになるんですが、バグですか?

/item



'action' => 'cahnnel', 'action' => 'index'

とかに割り振ると、コントローラー?を誤認するのか404エラーになっちゃいます
0256nobodyさん2009/01/10(土) 16:34:56ID:???
cahnnel は channel の間違い…

Securityコンポーネント使うと、うまくルーティングできないよ…
0257nobodyさん2009/01/10(土) 17:31:03ID:???
>>255
俺もそれ引っかかったなあ。ベタにアクションのURLを書いちゃったけど。
0258nobodyさん2009/01/10(土) 17:36:37ID:???
>>257

やっぱりですか…

できればルーティングしてるURLに合わせたいんだけど、
どうすればいいのかさっぱり orz
0259nobodyさん2009/01/10(土) 17:39:10ID:???
>>258
つチケット
0260nobodyさん2009/01/10(土) 17:48:22ID:???
これできないと、ちと困るんだけど、、、

自前で書くしかないのか
意味ねー
0261nobodyさん2009/01/10(土) 17:59:27ID:???
コントローラー見に行かないようにしたらいいんじゃね
0262nobodyさん2009/01/10(土) 18:00:17ID:???
まあいずれにせよSecurityコンポーネントはちょっと実用に耐えない
節々にバグがあって、
他の機能と競合してどっちか使えないとか多い
0263nobodyさん2009/01/10(土) 18:07:23ID:???
$form->input('name',array('type'=>'submit'));

これでなぜかTEXTAREAになるのは俺だけ?
0264nobodyさん2009/01/10(土) 18:46:39ID:???
>>263
$form->input('name',array('type'=>'submit'));
1.2finalでオレもTEXTAREAになった。そんなもんだろう。

聞いちゃいないだろうけど普通のsubmitの書き方
$form->end('了解');

$form->submit('了解');
0265nobodyさん2009/01/10(土) 19:00:31ID:???
end('了解');の「submit」ボタンの頭に半角20個くらいの空白を入れるおせっかいをして
くれるんだけど、この頭の空白をなしにするのは/webroot/css/cake.generic.cssをどう
変更すればいいの?

input[type=submit] {
  display: inline;
  font-size: 110%;
  padding: 2px 5px;
  width: auto;
  vertical-align: bottom;
}
0266nobodyさん2009/01/10(土) 19:02:23ID:???
>>265
それはCSSじゃなくてHelperのしわざだろ
0267nobodyさん2009/01/10(土) 19:11:23ID:???
>>266
thanks. ヘルパーのしわざですか。それなら仕方ない。ほっときます。
0268nobodyさん2009/01/10(土) 19:13:59ID:???
>>261

それじゃ意味ないでしょう…

この辺りがFW使うメリットなんで、早くなんとかしてほしいね
0269nobodyさん2009/01/10(土) 19:35:42ID:???
>>268
コンポーネントの機能としてコントローラを見るかどうかって選べなかったっけ?
0270nobodyさん2009/01/10(土) 19:36:40ID:???
>>269

allowedControllerプロパティ?
それなら既にやってる orz

なんかうまい方法ないかな
ちょっとソース見てみたけどさっぱりだ orz
0271nobodyさん2009/01/10(土) 19:38:00ID:???
$this->Model1->find('all',array('contain'=>array(
'Model2'=>array('conditions'=>array( ... )),
));

みたいにやると、Model2のコンディションに合致したModel1だけが返るんじゃなく
合致してないものも返ってくるよね?
合致した物だけにするにはどうすればいい?
0272nobodyさん2009/01/10(土) 20:26:03ID:tnQWYP/T
例えば

dvd
cd
mp3

っていうモデルがあったとしたら、コントローラーはそれぞれ作る?

それとも

audio

みたいに一つにまとめて、そっから各モデルを呼びだす?

処理的に似たようなのが多いんだけど、
それでも分けるのが普通?
0273nobodyさん2009/01/10(土) 20:27:45ID:???
コントローラはモデルと1:1にする必要性なんてないでしょ
当然audioでまとめる
0274nobodyさん2009/01/10(土) 20:30:14ID:???
Cakeって世界で一番使われてるFWとかいうけど微妙にライブラリが充実してないことない?
他のFWもこんなもんなのかな
0275nobodyさん2009/01/10(土) 20:37:41ID:???
>>273

だよね?
ちょっと不安になったんで聞いてみた

ありがと!
0276nobodyさん2009/01/10(土) 20:38:48ID:???
>>274

ライブラリはそこそこだと思うけど、バグが多い…
0277nobodyさん2009/01/10(土) 20:58:25ID:???
>>266  >>267
> それはCSSじゃなくてHelperのしわざだろ
お〜い。ウソだよ。cssだよ。
form div.submit {
  border: 0;
  clear: both;
  margin-top: 10px;
  /* margin-left: 140px; */
}
これでsubmittボタンの頭の空白はなくなるよ。
0278nobodyさん2009/01/10(土) 21:22:36ID:tnQWYP/T
ルーティングだかコントローラー名を規約から変えると
formヘルパーの吐く action属性もおかしくなるな
0279nobodyさん2009/01/10(土) 21:26:59ID:???
コントローラー名を変えたときっぽいな

Postコントローラーなのに

<?php echo $form->create('Post', array('action' => 'edit')); ?>

としても、 action="posts/edit" になりやがる

なんでこんなバグだらけなんだよ…
0280nobodyさん2009/01/10(土) 21:30:15ID:???
ちょっと本体のコード読むと分かるけど
汎用化すべきところも各所で独自実装してるからね
ライブラリごとの整合性や競合といった問題が出てくる
0281nobodyさん2009/01/10(土) 21:33:55ID:???
FWなのに、ソース見て、結局オーバーライド
意味ねーよ…

1.2finalでこれでしょ?

もうちょいなんとかしてほしいなぁ
0282nobodyさん2009/01/10(土) 21:38:22ID:???
割と平凡な機能しかないサイトでもそうなるよね
Securityコンポーネントもそうだけど
汎用的な機能すらバグ持ちかつ仕様がおかしかったり機能不足だったり

他のFWはどうなんだろうなあ
0283nobodyさん2009/01/10(土) 21:44:53ID:???
いや、ほんと平凡なサイトなんだけど、バグありすぎだよ…
ぱっと見はたしかに早いんだけど、使えるレベルに引き上げるのに相当苦労する気が

とりあえずformヘルパー使うのやめて直書きする
formヘルパー拡張してトークン出力メソッドだけ使うわ orz
0284nobodyさん2009/01/10(土) 21:47:38ID:???
そうそう
んで、ライブラリ類継承しようとしても、コアライブラリへのパス定数ないのね

なんかいまいち甘いよね
ぱっとみ手軽っぽくは見えるんだけど
0285nobodyさん2009/01/10(土) 22:00:30ID:???
ありゃ formHelper継承して $helpers = array('MyForm') しても
ビューで $myform 使えないぞw

Helperクラス継承せんといけんのか?
拡張性低すぎだろ…
0286nobodyさん2009/01/10(土) 22:13:06ID:???
Myform extends FormHelperにしたら
$myformで参照できたわ

MyFormだと$my_formでも$myformでも参照できない
ヘルパーには大文字一つしか使えないんか?

なんでこんなとこで苦労しなきゃいけないんだよw
0287nobodyさん2009/01/10(土) 22:14:07ID:???
ビューにデフォルトでセットしてるのは
コントローラのほうじゃないの
0288nobodyさん2009/01/10(土) 22:14:53ID:???
Cake使ってるとコアのコードにハックする事が多すぎるんだよな
0289nobodyさん2009/01/10(土) 22:15:14ID:???
あ、 $myForm で参照できたわ

どういう命名規則だよ…

キャメルケースは _ だろ…ファイル名もそうだし

なんか一気にいやになってきたなー

かといって他にあんまりいいのないんだよな
0290nobodyさん2009/01/10(土) 22:16:55ID:???
>>287

ちゃんとやってるよ

my_helper.php:
MyFormHelper extends FormHelper

コントローラー:
 $helpers = array('MyForm');

んで、ビューでは$myFormで参照したらいけた

ヘルパーのクラス名だけ命名規則がおかしいだろ…
0291nobodyさん2009/01/10(土) 22:25:05ID:???
自前でトークン出力してみたが、
ルーティングしてるとSecurityコンポーネント使えないな

ほんとにFWなのか疑問に思ってきたぞ…
0292nobodyさん2009/01/10(土) 22:58:06ID:???
>>279の件は

<?php echo $form->create('Post', array('url' => '/post/edit')); ?>

でurl使えばいけそうな感じなんだが、
Securityコンポーネントをあきらめてはずしたら、セッションが使えなくなった
Sessionコンポーネントもヘルパーも使ってるのに

だんだん頭にきてきた
0293nobodyさん2009/01/10(土) 23:05:43ID:???
あ、自分がミスってたわw

formヘルパーの吐くaction属性の件は

<?php echo $form->create('Post', array('url' => '/post/edit')); ?>

でうまくいった

もっともSecurityコンポーネント使えない問題は残るが…
もうちょいバグ少ないFWないのかね…
0294nobodyさん2009/01/10(土) 23:14:50ID:???
バグがあるなら、開発者に連絡しとけよ
0295nobodyさん2009/01/10(土) 23:34:57ID:???
そこまで使い込んでないし
使い続けるかわからんので、常連さん、お願いしますねーw
0296nobodyさん2009/01/10(土) 23:42:11ID:???
まぁチケットあげるにしても原因がわからんとなぁ

Securityコンポーネントとルーティングつかってるときに
404エラーになる原因の目星ある?

コントローラー名かHTTP_REQUEST関係あたりかな
とは思ってるんだけど、目星つかないとなぁ
0297nobodyさん2009/01/11(日) 00:25:09ID:???
コントローラで共通して使うような関数はコンポーネント
ビューで共通して使うような関数はヘルパ
に実装すると思いますが、
コントローラでもビューでも使うような関数はどこに実装するのが
cakephp のやり方ですか?
0298nobodyさん2009/01/11(日) 01:06:51ID:???
【質問】$form->input()のtextareaの幅(cols)の変更が出来なくて困ってます。
$form->input('honbun', array('type'=>'textarea', 'cols'=>'10', 'rows'=>'5');
行数(rows)は指定どおり変化してくれます。
cake.generic.cssのどこかを修正すれば良さそうな所まで調べましたが、具体的に
どこをどう修正すれば良いかわかりません。よろしくお願いします。
0299nobodyさん2009/01/11(日) 01:38:19ID:???
>>297
普通のライブラリならvendersにでも入れて
App::importでいいんじゃね
0300nobodyさん2009/01/11(日) 03:35:55ID:???
規約からちょっとはずれると
途端におかしな動作しだすな、このフレームワーク…
0301nobodyさん2009/01/11(日) 03:59:04ID:???
Formヘルパー使うとHTMLソースが一行続きになる orz
0302nobodyさん2009/01/11(日) 08:53:45ID:???
stable出ても、まだバグがあるの?
というか、今までのバグは本家に報告してないの?
0303nobodyさん2009/01/11(日) 09:24:13ID:???
日本語公式サイトに報告フォーム作るくらいはすべき
0304nobodyさん2009/01/11(日) 12:04:42ID:???
チケット出しておけばたいていのバグはなおしてくれるのに
ここで文句ばっかり言ってるやつってなんなの?
0305nobodyさん2009/01/11(日) 12:23:51ID:???
使い続けるかもわからない上に
原因特定できないのにチケット出す意味ない

その辺は日本公式(?)がうまく立ち回ってもらいたいところ
0306nobodyさん2009/01/11(日) 12:36:15ID:???
再現手順さえあればチケット出せば良いだろうけど
英語書くの遅いから嫌だ

大体、そんな苦労しなくても最初から使えるFWを使いたい
0307nobodyさん2009/01/11(日) 12:38:18ID:???
使い始めたばかりでバグかどうかも特定できていないのに騒ぐやつは無視で良い
0308nobodyさん2009/01/11(日) 13:11:03ID:???
手順書いてるんだからバグかわかるだろw

それとも新参者ばかりなの?w
0309nobodyさん2009/01/11(日) 15:49:46ID:???
この流れひでえなw
0310nobodyさん2009/01/11(日) 15:58:13ID:???
コアに手入れたりすると
別のエンジニアが保守し辛くなるし
FWの良さがなくなる
0311nobodyさん2009/01/11(日) 18:00:58ID:???
バグだらけなのがCakePHPの特徴だろw
1.0正式版が出たときもそうだったぜ。
そこを自分で何とかするのがBaker。

文句いう人は他のFWを使えばいいと思う
0312nobodyさん2009/01/11(日) 19:36:58ID:e07paZUF
2年後くらいにcakeがまともになってたらまたきます><
0313nobodyさん2009/01/11(日) 20:09:38ID:???
全然オブジェクト指向じゃないしなあ
0314nobodyさん2009/01/11(日) 21:14:41ID:???
PHP4対応なのになんでオブジェクト指向だと思ったの
0315nobodyさん2009/01/11(日) 21:53:49ID:???
コード分ければ出来るじゃん
0316nobodyさん2009/01/11(日) 22:57:27ID:???
クラス使われているんだからオブジェクト指向であってるよ。
0317nobodyさん2009/01/12(月) 00:44:27ID:???
クラス使ってるからオブジェクト指向(笑)
0318nobodyさん2009/01/12(月) 08:02:17ID:JmkPO6xq
PHP自体が関数指向で配列をぶん回すタイプの言語だからな
オブジェクト指向言語の基本的な要素は持ってるけど
実際にオブジェクト指向プログラミングをやろうとすると苦労が多い
cakeのapi設計もrailsからパクった部分はオブジェクト指向的だが、cake拡張部分は関数っぽくなてる
0319nobodyさん2009/01/12(月) 08:48:04ID:???
Railsをパクるだけにしていてほしい
0320nobodyさん2009/01/12(月) 09:04:16ID:3zI01Xa5
またまたバグ発見

formヘルパーで、フィールド名 (field)に数字を渡すと、
0のときだけ中身が消える

$form->text('0');

とか

empty()とかでしかチェックしてないっぽいな
string型にキャストしても駄目だし
0321nobodyさん2009/01/12(月) 09:05:10ID:???
$form->text('data[0]');

で動けばいいが、動かないし
0322nobodyさん2009/01/12(月) 09:17:19ID:???
appごとにコアのファイルをオーバーライドしないと使えないな
appディレクトリの意味ねー
0323nobodyさん2009/01/12(月) 09:38:56ID:???
なんじゃこりゃ
appディレクトリ側で /view/helper.php の置き換えできないのか?
0324nobodyさん2009/01/12(月) 09:42:41ID:???
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=377&forum=9&post_id=669
0325nobodyさん2009/01/12(月) 09:44:45ID:???
とん

ってまじかよ

helper.phpにバグあるんだが、直接編集しかないのかよ
FWのはずがコアのバグつぶしにすり替わって、全然進まない
0326nobodyさん2009/01/12(月) 09:55:09ID:???
とりあえず、バグっぽいとこ教えとくから、常連さんはチケットでもあげといてくれ
俺はたぶん、次回はもうCakeは使わない

 $form->text('0');

とかやると、0のときだけ

 <inpute name="data[]" 〜 />

みたくなる

helper.phpのsetEntity()で、view->fieldにセットしてるとこが問題ぽい
0327nobodyさん2009/01/12(月) 11:06:01ID:???
>>326
どうしてコアに手を入れてまでフィールド名を"0"にしたいのかがわからない。
0328nobodyさん2009/01/12(月) 11:48:59ID:???
>>327
相手すんなって
0329nobodyさん2009/01/12(月) 11:51:38ID:???
>>327

手を入れたいというより、HTMLを自由に組みたかっただけなんだけどね
んだけど、規則からはずれると不具合がでまくる


ちなみに、

>helper.phpのsetEntity()で、view->fieldにセットしてるとこが問題ぽい

は $view->model の間違いかも

かなり深いところに原因があるっぽくて、結局、あきらめて

 $form->text(null, array('name' => 'data[0]'));
 $form->text(null, array('name' => 'data[item][0]'));

とかするようにした

コンポーネントとか使う場合に、また問題がでるかもしれないけど
0330nobodyさん2009/01/12(月) 11:54:41ID:???
DB使わないモデルや、
他のシステムと連携する場合に、数値の配列形式の方が扱いやすいから

まぁ、html手打ちでもいいんだけどさ
ヘルパーとかが規約と強く結びつきだなと思った
0331nobodyさん2009/01/12(月) 12:03:43ID:???
質問です

データ追加フォーム -> データ追加 -> トップ画面にリダイレクト

としようと思うのですが、アクション名に悩んでます

add() -> ??? -> index()

???の部分をどうしようかと…

add()で分岐してもいいんですが、分けたいのですが、
なにかいい名前ありませんかね?

確認画面とかなら add_confirm() にするんですが。
03323312009/01/12(月) 12:05:43ID:???
>>331

実際は add_item() という名前なのですが、
追加するだけのアクション名をどうしようかなと、いうことです

add_???_item() か ???_item() で
なにかいいアクション名ありませんか?
03333312009/01/12(月) 12:07:32ID:???
連投ごめんなさい…

update_item() とかどうですかね?

add_item()とedit_item()から共通で使えそうですし
0334nobodyさん2009/01/12(月) 12:29:53ID:???
update_itemでいいんじゃね?
0335nobodyさん2009/01/12(月) 16:21:35ID:???
ここでバグバグ言われてるのって使い方解ってないだけなんじゃないのか
0336nobodyさん2009/01/12(月) 16:24:13ID:???
じゃあどう使えば良いのか説明しろよ
0337nobodyさん2009/01/12(月) 16:54:47ID:???
http://book.cakephp.org/
0338nobodyさん2009/01/12(月) 16:57:12ID:???
そんなところは熟読した上での話だと思うが
0339nobodyさん2009/01/12(月) 16:58:39ID:???
本家に報告したくないってのはバグじゃなくて
自分の使い方がおかしいという自覚があるからに他ならないだろ
0340nobodyさん2009/01/12(月) 17:08:56ID:???
再現方法書いてるのにバグかどうかもわからんの?

それとも、規約通りにしか作れない初心者しかいないのか?
0341nobodyさん2009/01/12(月) 17:09:25ID:JmkPO6xq
バグではない
単にcakeの開発者が意図した使い方からはみ出ると途端に挙動が変になるだけ
0342nobodyさん2009/01/12(月) 17:10:38ID:???
>>341

www

それならバグではないかもなwww

そうか、バグじゃないのか〜
使えないFWだな〜
0343nobodyさん2009/01/12(月) 17:11:01ID:???
フレームワーク使ってて規約はずれたら動かなくなったってそっちの方が初心者だろ
0344nobodyさん2009/01/12(月) 17:11:49ID:???
機能不足、仕様が変、というのが正しいな
バグと言っても良いレベルのものもたくさんあるが
組み込みで提供されてる機能が競合するのはバグと言っても良いだろ

>>339
偏屈こねる前に10回くらい読み直せ
0345nobodyさん2009/01/12(月) 17:16:56ID:???
いやだから本当にバグだと思うなら本家に報告しなよ
0346nobodyさん2009/01/12(月) 17:17:09ID:???
>>343

そうだね

公式ドキュメントの半分以上は無視したほうがいいね!
設定もなんにも変えないほうがいいね!

www
0347nobodyさん2009/01/12(月) 17:20:07ID:???
報告したところで今やってる案件には意味ないし
次は絶対に使わないから
Cakeの開発スピードからして見つけたバグ全部修正されるのに半年はかかりそうw
0348nobodyさん2009/01/12(月) 17:20:48ID:???
間違えてCakeなんかを使ってしまう人を増やさないようにしないとな
0349nobodyさん2009/01/12(月) 17:21:25ID:???
>>347

きみは別人だろw

きみもいやになったのか?
0350nobodyさん2009/01/12(月) 17:21:58ID:???
1.2が公式にリリースされて危機感を持っている奴がいるらしいな
どのフレームワークの信者だ
0351nobodyさん2009/01/12(月) 17:23:00ID:???
>>347

次なに使うの?
0352nobodyさん2009/01/12(月) 17:23:19ID:???
>>349
別人?なにを言ってるんだ
おまえは誰か特定の相手に話しかけてるのか?こんな場所で?

俺は今回の話題ではCakeはバグ大杉使えないFW派だよ
0353nobodyさん2009/01/12(月) 17:23:30ID:???
まぁこれからCake使うやつに助言

規約からはずれたことはするな
でも、それじゃあ大した物は作れない

組み込みのライブラリは使うな
全部自分で一から書け

FW使う意味ねーw
まぁぱっとみ使いやすいとは思うんだけどね
ここまでバグ多いとな…
0354nobodyさん2009/01/12(月) 17:23:49ID:???
>>351
SAStrutsかDjango
0355nobodyさん2009/01/12(月) 17:25:25ID:???
ちなみにCakeはオブジェクト指向じゃないって話あったけど
問題なのはAPIじゃなくてコアのコード内部なんだよね
ハックするのも一苦労

あのスパゲッティな有様じゃCakeの将来は危ういよ
0356nobodyさん2009/01/12(月) 17:26:23ID:???
というかPHPのFWはまともなのがないな

Yiiとかってどうよ
0357nobodyさん2009/01/12(月) 17:54:39ID:???
>>354
レンタルサーバで動かす気ない人か
0358nobodyさん2009/01/12(月) 17:55:17ID:???
PHPでオブジェクト指向ってもっさりフレームワークの登竜門だろw
0359nobodyさん2009/01/12(月) 17:58:23ID:???
Cakeは既にあらゆるフレームワークの中で最も重い部類
0360nobodyさん2009/01/12(月) 18:05:28ID:???
で、なんかいいのないのか?

兄弟とか言われてるCIは、命名規則に統一性が乏しいし
0361nobodyさん2009/01/12(月) 18:06:17ID:???
>>359
0362nobodyさん2009/01/12(月) 19:32:11ID:???
でも、世界でsymfony、zend+frameworkを抜き、最も注目されているPHP FWという事実は
どう理解すればいいの?
http://www.google.com/trends?q=cakephp%E3%80%81symfony%E3%80%81zend+framework%E3%80%81mojavi%E3%80%81ethna
0363nobodyさん2009/01/12(月) 19:35:28ID:???
PHPのユーザ層が重視するのは簡単に導入できる事と
HOWTO情報の多さだからでしょ
使ってる人たちはCakeしか使ったことないんじゃないの
0364nobodyさん2009/01/12(月) 19:40:29ID:???
PHPったって殆どの人は楽天やGREEを作る訳じゃないんだから
重さって気にする意味無いよね
重さで言えばRoRとか死ぬほど重いんだし
0365nobodyさん2009/01/12(月) 19:43:30ID:???
重いのは誰も問題にしてないけどね
0366nobodyさん2009/01/12(月) 20:59:16ID:???
すみません>>298なんですが
$form->input('honbun', array('type'=>'textarea', 'cols'=>'10', 'rows'=>'5'));
で横幅のせまいtextareaを表示したいのですが、何かヒントありませんか?
0367nobodyさん2009/01/12(月) 21:10:40ID:???
ところで、セッションってモデルだと思うんだが、
なんで、モデルで使えないのかね
0368nobodyさん2009/01/12(月) 21:13:12ID:???
セッションはモデルじゃねーよw
0369nobodyさん2009/01/12(月) 22:33:10ID:???
>>366
cake.generic.css
input, textarea {
width: 100%; ←これ?
}
0370nobodyさん2009/01/12(月) 22:57:16ID:???
>>369
app/webroot/css/cake.generic.css
input, textarea {
  /* width: 100%; */
}
width: 100%をコメントにすることで
$form->input('honbun', array('type'=>'textarea', 'cols'=>'80', 'rows'=>'5'));
textareaの横幅(cols)設定が有効になるようになりました。ありがとうございました。
合わせて、
$form->input('meado', array('type'=>'text', 'size'=>'50'));
のsize設定も有効になり二重の喜びです。ありがとうございました。
0371nobodyさん2009/01/12(月) 23:07:20ID:???
>>368

そうか?
データのやりとりするんだから、モデルだと思うけど?
まあ場合にもよるだろうけど
0372nobodyさん2009/01/12(月) 23:11:10ID:???
セッションはモデルじゃないよ
データを永続化するのがモデルであって
セッションってのはデータでhiddenで引き回してるのと同じようなことだから
0373nobodyさん2009/01/12(月) 23:33:55ID:???
なんでこんな使いにくくてバギーなcakephpが人気あるんかね?
たしかに、とっつきやすさはsymfonyやzendよりも上だと思うが
それだけなんだよね。
PHP使ってるやつはプログラム自体初心者が多いんだろね。
チュートリアル作って終わりなやつが多いんじゃね?
0374nobodyさん2009/01/12(月) 23:39:43ID:???
玄人の言語で作れば?
0375nobodyさん2009/01/12(月) 23:44:35ID:???
確かにPHPを使う意味なんてないんだよね
フレームワークを使うほどの開発になった時点で
0376nobodyさん2009/01/12(月) 23:50:55ID:???
殆どのものはレンタルサーバで動かすんだからPHPかPerlじゃないと動かんわね
専用サーバならJavaにした方が楽だし
0377nobodyさん2009/01/12(月) 23:52:44ID:???
>>375
いいこというね〜
PHPが最高に輝く使い方だね。
0378nobodyさん2009/01/12(月) 23:56:14ID:???
好きな言語すら入れられない環境の方がかなりマイナーだと思うよ
個人だろうと企業だろうと普通はその程度の自由度はある環境でやってるよ
0379nobodyさん2009/01/13(火) 00:36:35ID:???
企業で大規模にやるような開発でCakeやRoRみたいなのは使わないと思うよ
レンタルサーバで動かすCMSとかDBのCRUDがメインのシステムならぴったりだけどさ
0380nobodyさん2009/01/13(火) 11:22:28ID:???
セキュリティ面のバグの多さからWWWに出す時点でCakeは良くない
0381nobodyさん2009/01/13(火) 11:48:16ID:???
>>379
TwitterやCookPad、楽天でもRoRを使ってるのすら知らんのか。

そういえばここCakePHPスレだったなw
0382nobodyさん2009/01/13(火) 13:31:48ID:???
>>379
> DBのCRUDがメインのシステム

ほとんどの会社で必要とされるシステムって、それだぞ?w
0383nobodyさん2009/01/13(火) 15:39:41ID:???
RoRを覚えるのが面倒というのもあるな
Ruby動かせないときもあるしなあ
0384nobodyさん2009/01/13(火) 21:53:50ID:???
>>382
実際作ってみると業務システムのパターンは極めて限られていることがわかるよね。
0385nobodyさん2009/01/13(火) 22:27:13ID:???
そうでもないけどな
データ登録以上にワークフローと帳票が多い
0386nobodyさん2009/01/13(火) 22:33:33ID:???
ワークフローと帳票といっても
結局はCRUDだしなぁ。
0387nobodyさん2009/01/13(火) 22:58:25ID:???
可哀想な人が来たな
0388nobodyさん2009/01/13(火) 23:03:28ID:???
>>387
その人、いらっしゃ〜いw
0389nobodyさん2009/01/13(火) 23:58:47ID:???
パターンは極めて限られていると見積もったCRUDシステムを
作るたびに炎上させる優秀な技術者様達
0390nobodyさん2009/01/14(水) 13:24:41ID:???
1つのテーブルにいろいろな画面(コントローラ)からアクセスする場合、
モデルは、テーブルと対になるようにして1つのモデルにするのがよいか、
それともコントローラと対にするか、どちらが一般的でしょうか?

例えば受注テーブルがあり、
あるコントローラでは受注数を表示するのがメインの処理で、
また別のコントローラでは受注金額を表示するのがメインの処理、
のような場合、受注テーブルのモデルを1つ作成するのか、それとも
コントローラ毎に作るのか…。
0391nobodyさん2009/01/14(水) 13:42:37ID:???
おまえはMVCの基本についてすべて一つ一つt質問するつもりか
0392nobodyさん2009/01/14(水) 13:44:19ID:???
>>390
無論、モデルはひとつ。
0393nobodyさん2009/01/14(水) 13:45:45ID:???
>>390
コントローラーってのは要するに人がプログラムにアクセスする時のURLなわけよ。
だから人から見てわかりやすけりゃ良いわけで、モデルと対になってる必要なんて無い。
ってのが俺の考え。
逆に同じテーブルにモデルがいくつもあったらプログラム作る時に混乱するんじゃない?
それぞれ特殊なfindメソッドでも作ってるんなら別だけど。
0394nobodyさん2009/01/14(水) 14:52:22ID:???
サブホストや接続IPによってDB接続先を変える方法知ってる?
0395nobodyさん2009/01/14(水) 14:53:24ID:???
やっぱりモデルは1つにまとめるべきなんですね。

今回質問したのは、>>393
「それぞれ特殊なfindメソッドでも作ってるんなら別だけど。 」
がまさしくそれで、取得対象のテーブルは1つなんですけど、
そのデータの取得方法や見せ方が全然違って、ただ当然コントローラは
個別に存在するので、
1つのテーブルを元にその見せ方毎にモデルを作りモデルの中で、
var $name = 'table'; としておきつつ、
それぞれの取得するためのメソッドを作成していこうかな、と思い作りはじ
めた矢先、取得テーブルは1つなので、そのモデルに全部メソッドをまとめた
ほうがいいのか?と迷いはじめてしまい…。

テーブル単位にメソッドをまとめるのか、機能毎にモデルを分割するのか…。

まだまだ精進がたりませんね、大変すみませんでした。
0396nobodyさん2009/01/14(水) 15:08:08ID:???
>>394
ttp://d.hatena.ne.jp/charly24/20070512/1178956046
0397nobodyさん2009/01/14(水) 15:11:54ID:???
>>395
findメソッドは、カンタンにオーバーライドできる

テンプレの↓参照
CakePHPを使ったMVC設計のベストプラクティス - Sooey
ttp://www.sooey.com/journal/2008/03/26/717/
0398nobodyさん2009/01/14(水) 15:49:49ID:???
>>395
>テーブル単位にメソッドをまとめるのか、機能毎にモデルを分割するのか

一律的な分け方をすると後で縛りがきつくなるから
機能目的によってバランスよく分別した方がよい

0399nobodyさん2009/01/14(水) 15:51:45ID:???
むしろ厳密に言えば両方違う
2モデルを1つのテーブルに格納することが可能だから
0400nobodyさん2009/01/14(水) 15:59:26ID:???
テーブルやモデルの対に関して議論することがアホらしいw
後退的議論で無意味
0401nobodyさん2009/01/14(水) 16:02:02ID:???
どんなケースも可能だから
何を作るか?どんな機能を作るかを前提してから
モデルとテーブルの対の議論をしないと
抜け穴からのもぐら叩き合戦になるよ
0402nobodyさん2009/01/14(水) 20:32:29ID:???
1.1と1.2って大分違いますか?
ガイドブック買ってやってみたけど早々に躓いて
しまいました。
0403nobodyさん2009/01/14(水) 21:28:26ID:???
1.1と1.2は大分違うと思う。
ガイドブックで1.2で始めるのは初心者にはつらいと思う。
「CakePHP徹底入門」は1.2で書いてあるから1.2入門者にお勧め。
ガイドブックも良著だから、1.2の入門が終わってから読み直す
ことを勧めるなあ。
0404nobodyさん2009/01/15(木) 04:27:43ID:???
「CakePHP徹底入門」のamazonのレビューがよくないというか一人しか書いていない
それも星一つ。自分は少し立ち読みしただけだから何とも言えないが・・
ガイドブックは評価が高いけど
0405nobodyさん2009/01/15(木) 12:14:25ID:???
ぶっちゃけ、公式Webの情報で十分なのがPHP界隈の良いところだとおもうんだが。
0406nobodyさん2009/01/15(木) 18:02:47ID:???
>>389
> パターンは極めて限られていると見積もったCRUDシステムを
> 作るたびに炎上させる優秀な技術者様達

なんで炎上させないといけないんだよw
お前の会社か?それ。
0407nobodyさん2009/01/15(木) 19:16:12ID:???
viewのキャッシュする直前にキャッシュする対象をいじりたいんだけど
なんかいい方法あるのかな
0408nobodyさん2009/01/15(木) 23:13:14ID:???
SQLiteとMySQLを同時に使うのって可能?
0409nobodyさん2009/01/15(木) 23:16:50ID:???
可能。
0410nobodyさん2009/01/16(金) 00:17:54ID:???
なにそれ、どうやんだ?
0411nobodyさん2009/01/16(金) 00:21:09ID:???
DATABASE_CONFIGに複数設定して切り替えるだけだろ
0412nobodyさん2009/01/16(金) 01:45:44ID:???
そりゃだるいな
0413nobodyさん2009/01/16(金) 16:24:26ID:???
>>412
モデルに使用する、データベースを指定する以外で、
だるく無い方法があるのか?
0414nobodyさん2009/01/16(金) 17:30:29ID:???
>>413
アホはほっとけ
0415nobodyさん2009/01/16(金) 18:16:16ID:???
Model::$validateで値そのものを利用して'message'を動的に設定ってできますか?
'この番号は使用できません'って出力してdata[]にそのまま残すのも間抜けなので、
data[]を使用した'message'を設定してdata[]消したいんですけどよく分かりません

通常ルールでのチェックも行っているので、View側でエラーメッセージチェックしてから
特定のエラーメッセージのときだけdata[]からメッセージ作成して
input value= にセットされないように処理するって何か変な気がしたので
0416nobodyさん2009/01/16(金) 18:30:22ID:???
メソッド内でうまいことエラーメッセージを書き換えられればいいんだろうけど

説明下手なきがするのでやりたいこと
入力フォーム→結果の表示フォームとエラー
[ab]→[ab]数字で入力しやがれ
[25]→[25]25は使えねえぜ
0417nobodyさん2009/01/16(金) 21:29:52ID:???
emailコンポーネントって文字化けするよね
しかも普通にPHP標準のメール送信機能使うと化けないケースで化けたりするから困る
また組み込みライブラリの糞ソースを修正する作業が始まるのか・・・
0418nobodyさん2009/01/16(金) 21:37:31ID:???
emailコンポーネントを継承して
問題ないようにしているけど?

オブジェクト指向になっているおかげで
いくつかのメソッドをオーバーライドするだけですんだ。
0419nobodyさん2009/01/16(金) 21:40:49ID:???
文字化けしないよ別に
ファイルの文字コードとか問題ないの?
0420nobodyさん2009/01/16(金) 22:28:03ID:???
toに全角使うと化ける
本文も特定のパターンで化ける
0421nobodyさん2009/01/16(金) 22:36:11ID:???
toはエンコしなきゃ化けるだろそりゃ
0422nobodyさん2009/01/16(金) 22:38:28ID:???
だからそれをコンポーネント内部でなんでやってないの?って話だよ
0423nobodyさん2009/01/16(金) 22:39:12ID:???
toってset()じゃなくてプロパティに直接設定するようになってるけど
どうやってエンコはさめばいいの?
本体のコード見て解析してエンコードはさむくらいしか思いつかないんだけど。
0424nobodyさん2009/01/16(金) 22:42:13ID:???
最後に送信するときにでもやればいい。
0425nobodyさん2009/01/16(金) 22:47:48ID:???
>>422
世の中には日本語以外もあるわけでな
必要なら日本人が修正してコミットすべき部分だろうに
0426nobodyさん2009/01/16(金) 22:49:09ID:???
そんなに不満だらけなら他のFW使えばいいじゃん
メールのエンコードも完璧なFWをさ
0427nobodyさん2009/01/17(土) 10:19:42ID:???
1.2.1
0428nobodyさん2009/01/17(土) 11:36:23ID:???
お、今度はstableを謳ってる
# If you are using AuthComponent without SecurityComponent you should update to CakePHP 1.2.1.8004 asap (gwoo)
だってさ
0429nobodyさん2009/01/17(土) 11:38:12ID:???
1.2 CheatSheet キタ━━━━(゚∀゚)━━━━!!!!
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
0430nobodyさん2009/01/17(土) 13:58:26ID:???
>>428
なにがかわったんだ?
0431nobodyさん2009/01/17(土) 14:40:37ID:???
>>429
これはいいね。早速プリントした。
あと、毎回html->linkの何番目をfalseだっけ?ってマニュアル見なきゃならん俺のために
付属のヘルパー分もお願いしたい。
0432nobodyさん2009/01/18(日) 11:31:02ID:???
>>430
http://groups.google.com/group/cake-php/browse_thread/thread/659682805f3d71d7

Essentially, an attacker may be able to obtain credentials as the first user of the system.
If you are interested in testing your site, you can use the SQL Inject Me plugin
for Firefox
0433nobodyさん2009/01/19(月) 16:13:21ID:???
会員登録時とかで、パスワードが勝手にハッシュ化されるけど
確認画面いって入力画面に戻るとハッシュ化されたものがパスワードのとこに入る
そしてまた確認画面に行くと再度ハッシュ化される
登録されるのは2度ハッシュ化されたデータ
当然認証は通らない

これはどうすれば?
0434nobodyさん2009/01/19(月) 16:21:13ID:???
パスワード消す
0435nobodyさん2009/01/19(月) 16:23:37ID:???
詳しく
0436nobodyさん2009/01/19(月) 17:12:40ID:???
入力画面に戻るときに消していいんなら
formへるぱーで'value'=>false指定すればよろし
0437nobodyさん2009/01/19(月) 17:15:56ID:???
再入力させるのはなぁ
既にハッシュ化してるんだからそのまま入れてもセキュリティ上問題無いのに
ハッシュ化されていれば再ハッシュ化は行わないようになってくれてたら良かった

フォームのパスワードの初期値と送信されたデータが同じだったらハッシュ化はしない
とするだけで出来たはずなのにな
0438nobodyさん2009/01/19(月) 17:38:24ID:???
ちょっとコード読んでみたけど
ハッシュ化のタイミングでセッションは既に今送信されたデータに書き換えられてて
元あったものとの比較が出来なくなってる

これ以上手間が要るならめんどくさいなー
0439nobodyさん2009/01/19(月) 17:45:57ID:???
確認用の入力分を使えばいいんじゃねえの?
0440nobodyさん2009/01/19(月) 18:11:18ID:???
確認入力のバリデーションと競合して分け分かんなくなってきた
どういう仕様になってるんだろ

passwordフィールドはハッシュ化されるが
password_confirmはハッシュ化されない
おかげで確認画面にいってから戻るとパスワードが違うと言うエラーが出る問題も絡んでくる
0441nobodyさん2009/01/19(月) 18:17:05ID:???
やはり確認用の入力を使うと言う手段が本筋じゃないな
passwordもpassword_confirmも同様にハッシュ化して
フォームの初期値から変更がなければハッシュ化は行わない、
と言う設計にすべきだと思う

でもこれをやるには今のAuthコンポーネントの仕様からじゃだいぶ手間がかかる
0442nobodyさん2009/01/19(月) 18:26:26ID:???
つーかもう
Authの自動ハッシュ化を無くして
手動でハッシュ化するのが一番楽だわ
0443nobodyさん2009/01/19(月) 19:02:35ID:???
cakeは謙虚な心がないと使いこなせない
0444nobodyさん2009/01/19(月) 19:20:43ID:???
ハッシュ化なんてユーザパスワードくらいでしかやってないし
自動ハッシュ化止めてセーブ時とログイン時にハッシュ化するようにしたらできたくせえ!
0445nobodyさん2009/01/19(月) 22:36:21ID:???
form部分は
name="raw_password"
name="raw_password_confirm"
にしといて、
validateでは、
raw_passwordとraw_password_confirmを比較
saveの前にpassword = raw_passwordしとくのは?
0446nobodyさん2009/01/19(月) 22:42:10ID:???
それもいいかもね
コンポーネントに手入れ無くて良いし
でもAuthで暗黙的にハッシュ化されるわりにそれを意識したコーディングになってるから
違和感はあるけどね
それなら明示的に書く方が、とおもう
0447nobodyさん2009/01/20(火) 00:34:26ID:???
Validationで戻ったときはパスワードは再入力させる方が一般的だと思うけどね。
0448nobodyさん2009/01/20(火) 00:36:53ID:???
あぁ、そういう話か。
普通再入力の際にはパスワードは消えてるでしょ
0449nobodyさん2009/01/20(火) 02:09:06ID:???
エレメントを呼び出すんじゃなくて
ビューからアクションを呼び出す事って出来ないのかな?
0450nobodyさん2009/01/20(火) 02:15:23ID:???
事故解決
0451nobodyさん2009/01/20(火) 02:47:07ID:W42hdWVL

iis,oracle,php5インストール後、
cakePHP入れて、ブログのチュートリアルやってんだけど、
ビュー作って確認するところのテーブル一覧表示で日本語データが表示されません。
半角英数ですと表示されます。数値、日時も問題なく表示されています。
db内には、正しい全角データが入っているのですが、
なぜでしょう?

0452nobodyさん2009/01/20(火) 02:49:30ID:???
>>451
ソースの文字コードとMySQLの文字コード確認
0453nobodyさん2009/01/20(火) 02:50:47ID:W42hdWVL

両方、utf8です。
0454nobodyさん2009/01/20(火) 03:21:49ID:???
そもそもoracleか・・
0455nobodyさん2009/01/20(火) 11:56:56ID:???
>>452
oracleだと書いてあるだろボケ
なにがMySQLの文字コードだよ
0456nobodyさん2009/01/20(火) 13:54:45ID:???
>>451
phpのinternal_encodingとかその辺の設定確認
あとcakeを介さず直接接続→出力が文字化けするか否か確認
0457nobodyさん2009/01/20(火) 15:52:01ID:???
>>455
www
0458nobodyさん2009/01/20(火) 16:57:25ID:???
あれ、一人だけID出てるな
0459nobodyさん2009/01/20(火) 17:03:38ID:b4+xy3zg
sage無きゃ出るでしょ
0460nobodyさん2009/01/20(火) 17:07:06ID:???
なるほどそういうことか
0461nobodyさん2009/01/20(火) 17:13:23ID:???
sage無くても出ないけどね
0462nobodyさん2009/01/20(火) 17:41:48ID:???
1.2なってからのfindやinputの修正は地味だけど良いね
非常に分かりやすくなった
0463nobodyさん2009/01/21(水) 01:59:22ID:???
scaffoldだとAuthコンポーネントってちゃんと働かない?
webルートにアクセスすると、一応/users/loginへ
リダイレクトされるんだけど、そこでurlを/users/indexって
書き替えると、ログインしてなくてもユーザーの一覧が
見えてしまう。(´・ω・`)
0464nobodyさん2009/01/21(水) 05:54:40ID:???
Controllerになんか書くんじゃなかったっけ。
0465nobodyさん2009/01/21(水) 10:09:05ID:???
>>464
Controllerには許可する方を書くわけだから不要だと思う
>>463
ほかのControllerでも同じ症状なら、scaffoldが原因だろうけど、、、
0466nobodyさん2009/01/21(水) 10:42:49ID:???
空のindexを書くと、indexにはAuthが効く。
やっぱ、scaffoldが原因かなぁ。
ちゃんと全部自分で書かないとダメか。
0467nobodyさん2009/01/21(水) 10:48:54ID:???
action内でscaffoldのフローに飛ばせないのが、辛いよね
この問題にぶちあたって、結局1から書くことになる
すべてのactionを
0468nobodyさん2009/01/21(水) 10:55:35ID:???
試してないけどさ
beforeFilter()でaction名を見て、適宜login()に飛ばしてみたら?
0469nobodyさん2009/01/21(水) 11:01:21ID:???
if (in_array($this->action ,a('index' ,'etc')) && !$this->Auth->user()) {
// リダイレクト
}
0470nobodyさん2009/01/21(水) 11:34:17ID:???
認証掛けるくらいなんだから、うかつに編集されないように
scaffoldを使わないのが正しいやり方だと思う。思うけどね。
04714512009/01/21(水) 16:59:21ID:???
事後報告です。
>>456
> >>451
> phpのinternal_encodingとかその辺の設定確認

この辺りの設定も甘い所がありましたが、utf8で調整するも変わりませんでした。
で切り分けるためにも下を行ったのですが・・・。

> あとcakeを介さず直接接続→出力が文字化けするか否か確認

直接データもらうと、sjisで出力されてきて意味がわからず悩みました。
知っている人はなんでもないんでしょうけど。

で、結構な時間を費やしDBからデータ出力の時点があやしいとなり、
いろいろググってたら判明!
CAKEインストの時のDB設定で文字コード設定があることがわかり、
(設定した時は、どこぞのブログの設定をコピペしてきたんで文字コードを
設定している意識がなかったorz)確認するとsjisになってた、でこれをutf8へ
指定して、cakeの問題無くDBデータが表示されることが確認出来た。

で、ここで疑問が直接もらうとなぜSJISでもらうのか、
恐らくcakeでsjisからutf8へ文字コード変換してることになるんだと思うけど、

結局、oracleが出力文字コードを変えるようで、OSの環境変数を設定して、
NLS_LANG=JAPANESE_JAPAN.AL32UTF8
問題無く直でもutf8で出力されることを確認。

ふー時間くったー。
途中oracleの調子が悪くなって、再インストに見舞われるし。
チュートリアルを進めよう〜。
0472nobodyさん2009/01/21(水) 17:57:23ID:???
>471
へぇ〜、いまはOracleでもまともに動くんだなぁ。

2年位前はDBO周りがバグだらけで使い物にならなかったけど。
0473nobodyさん2009/01/21(水) 20:17:56ID:???
投稿された記事の編集権限みたいなものもACLで管理する?
機能制限みたいなものはACLでやるんだけど
同じ機能でもオブジェクトのidによって変わる、みたいなのもACLでやるべきなのかな?
0474nobodyさん2009/01/22(木) 01:10:40ID:???
containでモデル指定すると親モデルと同じ階層に並ぶ形で出てくるけど
親モデルの奥に配置するにはどうすればいい?
Model1->find('all',array(
'contain'=>array(
'Model2'
)),

結果:
array(
[0]=>array(
[Model1]=>array(),
[Model2]=>array(),
)
)
0475nobodyさん2009/01/22(木) 10:29:14ID:???
decorte.phpのCakePHP1.2.1対応版はまだかな〜
0476nobodyさん2009/01/22(木) 12:48:42ID:???
cakeのDB接続まわりを参考にしたいのですけど
どのあたりのソースを見ればよいのでしょうか?
/app/config/database.php.default
に接続情報がありますが
これらの情報を使用して接続している部分あたりを見たいです
0477nobodyさん2009/01/22(木) 12:53:15ID:???
>>476
cake/libs/model/datasources
cake/libs/model/datasources/dbo
あたりかな
0478nobodyさん2009/01/22(木) 12:54:16ID:???
/cake/libs/model
接続に言ってる所と言うのならその下のdatasources/dboの下
0479nobodyさん2009/01/22(木) 15:44:55ID:???
CakePHP には、Railsでいうmigrationがないけど、
みんなはDBスキーマはどうやって管理してる?

前スレを見たら少し話題になってたけど、なんかgdgdに終わってた。
0480nobodyさん2009/01/23(金) 00:16:41ID:???
CakePHPの1.2.0.7962でセキュリティコンポーネントを使って
二重投稿防止しようとしてるんだけど全然防止できない
saveした後に明示的にセッションからトークン消してやればうまくいくんだけど、
皆様方そんなことをしている様子はないし

http://www.1x1.jp/blog/2006/12/cakephp_csrf.html

やってることはほぼこのまんま
1.2なんで$formでフォーム生成してるのが違うくらい

フレームワーク使ってるってのに全然サクサク感がねぇー
0481nobodyさん2009/01/23(金) 02:23:23ID:???
>>479
とりあえず、普通にSQLでやってる。
create_tables.sqlとか適当なファイルにcreate table文まとめてる。
で、Subversionで管理。

ほんとは、マイグレーションあると便利だけどね。
こんな感じの使い方ができるPHPスクリプトを作ればいいんだけど、
面倒だからやってない。でも、そのうちやるつもりw
php rake.php db:migrate
php rake.php db:migrate VERSION=3
php rake.php db:create
php rake.php db:drop
04824812009/01/23(金) 02:38:24ID:???
今調べてみたら、1.2だと非公式だけどマイグレーションあるんだね。
知らなかったわ。
今度試してみよう。
0483nobodyさん2009/01/23(金) 04:06:53ID:???
>>473
マニュアルのauthコンポーネントとACLのページを少ないから読んで見るといいかも
単純なログイン後とログインして無いとかならauthでいける
0484nobodyさん2009/01/23(金) 07:29:32ID:YSArohX3
cakeのfindで、一番大きなidのデータを取得したり、
一番新しいcreatedのデータを取得したりとかって、簡単にできますか?
やり方があれば、教えてください。
04854842009/01/23(金) 07:37:43ID:???
sortして1番めを取得すれば良かったのか…
>>484自己解決で。素人ですみません。
0486nobodyさん2009/01/23(金) 10:46:31ID:???
>>481-482
自分もこういうのを見つけていた。まあ「cakephp migration」でググっただけ
だけど。

"CakePHP migration" フォーラム - CakePHP Users in Japan
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1176&forum=3

CakePHP のおいしい食べ方: DBマイグレーションか、DBスキーマシステムか
http://cakephp.seesaa.net/article/97882341.html

誰か使っている人いないかな。
0487nobodyさん2009/01/23(金) 17:31:45ID:???
>>484
sql の max 関数 調べてみい
0488nobodyさん2009/01/24(土) 16:41:32ID:???
AuthComponent の認証をディレクトリ単位でわけるよい方法ってないでしょうか?

/document_root/siteA/ 配下と
/document_root/siteB/ 配下でわけたい。

siteA 配下は 教師モデルを対象に認証済みのユーザーはアクセス可能とし、
siteB 配下は 生徒モデルを対象認証済みのユーザーを対象にする。
当然、教師認証済みであってもは siteB にはアクセスできず、生徒は認証済みであっても
siteA にはアクセスできない

みたいな事がやりたいんですが。。。

0489nobodyさん2009/01/24(土) 16:51:08ID:???
acl
04904882009/01/24(土) 17:14:12ID:???
acl は、同一ユーザーテーブルの中での権限の割り当てではないでしょうか?
がんばって読んでみたんですが、そもそもユーザー認証を行なうモデルが異なる場合は
対応できないように思いました。

今回は、教師と生徒で登録されているテーブルが違うのでログインページも教師用と生徒用があります。

教師は siteA/login.php にて。生徒は siteB/login.php にて認証します。

で、教師でログインした場合は siteA 配下のみアクセス可能。生徒でログインした場合は siteB のみ
アクセス可能としたい。

かっこ悪いすが、サブドメインきって cake そのものを2通り用意したほうが簡単かもしれないと思ってしまいました。
何かよい方法があればいいな、と。
0491nobodyさん2009/01/24(土) 22:19:27ID:???
もっと嫁
0492nobodyさん2009/01/24(土) 22:20:11ID:???
cake2個用意するとか前にも言ってるやつが居たが
プログラマーのやり方じゃない
0493nobodyさん2009/01/24(土) 22:44:47ID:???
cakeはもっとサンプルが公開されてると、こうした初心者の人も助かりそうだね。
初心者がcakeのソースなんて追え無いんだから。
0494nobodyさん2009/01/24(土) 22:58:31ID:???
つーか公式マニュアルにAROとACOの説明があるのに
>>490の理解になるのはおかしい
ちゃんと読んでない
0495nobodyさん2009/01/25(日) 11:58:58ID:???
アクションが増えるとコントローラーの行数も増えるのたが、
お前らのコントローラーの行数は最大でどの位ですか。
0496nobodyさん2009/01/25(日) 12:03:41ID:???
アクションの数自体、1コントローラ最大で10くらいしか経験無いわ
0497nobodyさん2009/01/25(日) 19:50:45ID:???
「CakePHPポケットリファレンス」の資料に載ってる
CakePHPの命名規則って、かなりでたらめ?
0498nobodyさん2009/01/25(日) 21:22:02ID:???
一つの関数(アクション)の行数を短くしろとは聞くが
一つのクラス(コントローラー)の行数を短くしろとは
あまり聞かない。
0499nobodyさん2009/01/25(日) 23:34:20ID:???
>>497
「CakePHPポケットリファレンス」の命名規約(p.406-408)で
「これ、おかしんじゃない」のワースト3を教えて。
ttp://book.cakephp.org/ja/complete/22/CakePHPの規約
0500nobodyさん2009/01/25(日) 23:37:01ID:???
俺も手元の開いてみた
なんか楽しいw
0501nobodyさん2009/01/26(月) 00:04:38ID:???
えーっと、どれも酷いので順番は付けられないけど
コントローラーの命名規則
英単語の単数形+"Controller" って書いてるのに、例が PowerUsersController
モデル名+"_id"って書いてるのに、例がpower_users_id
あとある?
0502nobodyさん2009/01/26(月) 01:11:31ID:???
ホントだ。あるねえ。
コントローラの命名規約
○クラス名 英単語の複数形+"Controller"  PowerUsersController
テーブルとカラムの命名規約
○外部キー モデル名+"_id" power_user_id、article_id
(モデル名は単数形だよね。)
修正しました。
0503nobodyさん2009/01/26(月) 10:35:54ID:???
編集フォームの初期値をセットするには
$form->create('User');
で作っていたとしたらどういう変数名・配列構造でセットすればいいの?
0504nobodyさん2009/01/26(月) 10:52:09ID:???
>>503
$this->data['User']['name'] = '麻生太郎';
0505nobodyさん2009/01/26(月) 12:24:49ID:j8WtT0GU
1.2系のAuthComponentにおいて任意のidでユーザ認証されてしまう、という脆弱性が。
1.2.1.8004へアップデート推奨らしいぞ。

http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1696&forum=1&post_id=4032#forumpost4032
http://www.pseudocoder.com/archives/2009/01/22/cakephp-digest-6/
0506nobodyさん2009/01/26(月) 13:21:32ID:???
AuthComponentをStableから使い始めた俺は勝ち組w
0507nobodyさん2009/01/26(月) 13:41:36ID:???
>>505
ワロタw

どこがAuthなんだよ
0508nobodyさん2009/01/26(月) 16:40:15ID:j8WtT0GU
これってやばいんだよね?
0509nobodyさん2009/01/26(月) 20:39:14ID:???
testsuiteって使ってる?
マニュアル見ても、よく分からん。
0510nobodyさん2009/01/26(月) 22:55:14ID:???
>>508
機能として破綻してるw
0511nobodyさん2009/01/26(月) 23:57:03ID:???
ああー
よくわからんままやったら、
フィールド消えたわ
まじか、これ
0512nobodyさん2009/01/27(火) 10:11:27ID:???
バグが取れるまでstableにしませんとか誇らしげに語ってなかったっけ?w
0513nobodyさん2009/01/27(火) 11:51:11ID:???
>511はtestsuiteの話しな

testsuiteの解説がガイドブックとかに無いし、
web上にもあんまり情報が無いので、よくわからん。
でも。simpletestをインスコしたら、bakeの際に
いろいろ聞かれなくなったのは楽だな。
0514nobodyさん2009/01/27(火) 12:20:04ID:???
1.2.1.8004 Stable ですが

設置 URL が example.jp/t/ の時、tests というコントローラにアクセスしようと、

http://example.jp/t/tests/ ってやると、http://example.jp/t/ests/ に勝手になってしまって

Error: EstsController could not be found.

となります。 t に限らず webrootが1文字で とコントローラの最初の一文字が同じだと
上記のようになると思いますが、何か注意するところはありますか?
0515nobodyさん2009/01/27(火) 12:32:20ID:???
>>514
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1706&forum=6&post_id=4025#forumpost4025
これと同じかな
0516nobodyさん2009/01/28(水) 11:36:58ID:AHb2WVE2
既存テーブル名が日本語で、cakeが認識しません。
どうすればいいのでしょうか?
php直ですと日本語テーブル名でクエリは通ります。
0517nobodyさん2009/01/28(水) 12:33:02ID:???
cake周りの文字コードをutf-8にしたら
とりあえず、認識した。
0518nobodyさん2009/01/28(水) 18:06:35ID:???
テーブル名が日本語ってトラブルの元じゃない? って、以前言われた。

testって、データを入れて出して一致してるか確認してるんだって事が
ようやく少し分かった。
0519nobodyさん2009/01/28(水) 18:29:34ID:???
テーブルとかカラムが全角文字だと激怒する奴いるけど
別に日本で使うシステムなら問題ないんだけどな
Oracle/Access+VBのシステムなんかよくあるし
PHPだって変数名ですら全角文字でもOKなんだし
0520nobodyさん2009/01/28(水) 19:00:41ID:???
>>519
全角って、そんなに変じゃないの?
bakeする時に日本語で全部作ってくれると楽そうだなーって思ってた。
多言語化を考える必要なんて全くない物を作るのにi18nすら面倒で、
ソースに日本語のエラーメッセージを書いてやろうと思ってた。
0521nobodyさん2009/01/28(水) 19:02:34ID:???
あ。でも、そうすると複数形ってどうすんだ?
0522nobodyさん2009/01/28(水) 19:04:55ID:???
DB関連の開発系ツールも含めて全て対応出来てるんならいいんだろうけど
海外製のライブラリは対応出来てないものが多いし
結局、全角ゴリ押しは開発者側に負担を強いることが多いよ
プロジェクト内で使う環境を全部調査して、誰にも迷惑かけないと判明したら使えばいいと思うけど
0523nobodyさん2009/01/28(水) 19:05:44ID:???
>>521
個別テーブル名定義で対応するしかないと思う
やったことないし試そうとも思わないから詳しくは知らない
0524nobodyさん2009/01/28(水) 20:22:20ID:???
早速、日本語名utf8のテーブルやフィールドを作って、
cake bake allしてみた。
コンソールは微妙に文字化けしてたけど、難なく焼けた。
でも、アクセスしたらエラーが出た。ファイルを見たら、
ファイルがshift jisで認識されて、日本語部分は全部文字化け。

こんなことで苦労したくないので、これ以上は試すの止める。
0525nobodyさん2009/01/29(木) 05:37:51ID:???
CakePHPは使ったことがありませんが、非常に興味があり質問させて
いただきます。

今まで自作の簡易フレームワークで業務アプリを作ってきました。
画面数は数十あります。
表示はSmartyを使っています。

これを少しづつCakePHPに置き換えたいと考えていますが、
フレームワークを変更するとかなり大掛かりな作業になりそう
ですし、部分的に置き換えていくのが実際できるのかわかりません。

CakePHPは、上述のように既存のWebアプリを部分的に置き換えていける
ものなのでしょうか?
それとも、新規Webアプリから採用するべきものなのでしょうか?


0526nobodyさん2009/01/29(木) 11:43:51ID:???
>>525
新規案件だけにしたほうが苦労が少なくていいと思う
0527nobodyさん2009/01/29(木) 11:51:59ID:???
>>525 思いついたところから書くと

最低クリアされるべき条件
・DBの構造(idとか)
・URL(/controller/action/param.. の形式)
がクリアされないといけない

そのうえで、Modelごと(≒tableごと)移行していくというのであれば、不可能ではないと思うが。

現実的には、DBを共通化して、Cakeによるサイトを作っていき、同時に稼働させてテストし、一気にリプレイスってことになりそうな気がするけど、どうなんだろうね。

ただ、Cakeに慣れるまである程度時間がかかるから、いずれにせよ新規アプリから始めないと、苦労すると思うよ。
05285252009/01/30(金) 06:58:44ID:???
>>526, 527
レスありがとうございました。
やはり新規案件からCakePHPをはじめたほうが無難ですね。
スキルを醸成してから、既存システムの変更を検討します。
0529nobodyさん2009/01/30(金) 11:51:03ID:???
自作クラスのインスタンスを得るにはどうすればいいの?

データを引数に持たせてインスタンス同士をいろいろ比較してくれるクラスを
昔作ったんだけどどう持ち込めばいいのかわからない
0530nobodyさん2009/01/30(金) 17:53:58ID:???
ポケットリファレンスを見てるんだが。
1.2になってModel::findが大幅に機能強化されたのに、
記述が少なすぎる。もしくは、Model::generateList()
のページに代わりの方法が書いてあればいいが、
Model::find()だけでは意味不明だろう。
0531nobodyさん2009/01/30(金) 18:27:52ID:???
>>530
おとなしく改訂版を待ってろ
0532nobodyさん2009/01/30(金) 18:55:05ID:???
改訂版って出るの?
0533nobodyさん2009/01/30(金) 19:21:00ID:???
コントローラから2つのモデルとデータをやり取りする場合、
アソシエーションを使う方がいいのか、
Controller::usesで直接指定する方がいいのか。
0534nobodyさん2009/01/30(金) 19:29:43ID:???
アソシエーション使うと結果変わる事ない?
たぶん親モデルと関連してるレコードしか該当しないよ
0535nobodyさん2009/01/30(金) 23:31:39ID:???
コントローラからコントローラへデータを渡すのって、どうするの?
0536nobodyさん2009/01/31(土) 01:44:15ID:ZNZRtHpp
flash
0537nobodyさん2009/01/31(土) 04:27:13ID:???
>>536
なるほど。
urlでパラメータを渡すなら、redirectでも良さそう。
でも、urlだと大きなデータは渡せないよね。
データが丸見えになるし。

あと、同じウィンドウの中でのみ渡すってなると、
どんな方法が良さそう?
0538nobodyさん2009/01/31(土) 04:30:59ID:???
>>537
まあなんだ。
ウェブアプリはデスクトップアプリと
考え方が違うが・・・
まあ、がんばれや。
0539nobodyさん2009/01/31(土) 05:48:56ID:???
Session->renew()で新しいsession_idを割り振れば
いけるかな?と思ったが、甘かった。同じブラウザでは
renewする前のが消える。
別のブラウザなら大丈夫だった。(当たり前か)
0540nobodyさん2009/01/31(土) 08:38:22ID:???
解決。セッションの使い方を間違ってる。
ユニークキーの発行が正しい。
0541nobodyさん2009/01/31(土) 09:18:36ID:???
Cakeユーザーの低レベルさが泣けてくる
0542nobodyさん2009/01/31(土) 09:28:15ID:???
>>541
今CakePHPが注目を集めている為、素人が「PHPフレームワークなら俺にも何か簡単に
Webアプリが作れるかな。」という気になっているじゃない?
見方を変えるとCakePHPの功績は大きいかも?
0543nobodyさん2009/01/31(土) 09:38:59ID:???
にしてもプログラマーと呼べないレベルの質問が多すぎる
0544nobodyさん2009/01/31(土) 09:47:48ID:???
そろそろsymfonyの時代か・・・?
0545nobodyさん2009/01/31(土) 10:44:44ID:???
それでも作れちゃうなら凄いこと
0546nobodyさん2009/01/31(土) 10:46:19ID:???
そんなレベルの人が正しくフレームワークを使いこなせてるとは思えない
保守不可能なシステムを作ってそう
0547nobodyさん2009/01/31(土) 11:16:37ID:???
Web屋と呼べないレベルではあるが
exe屋だったら最初そんなもんだろ。
まあ、フレームワーク知識自慢しかできないようじゃ、
お前らすぐに抜かれるよ。
0548nobodyさん2009/01/31(土) 13:50:46ID:???
>>529
自作クラスなんてコンポーネントにしちゃえばいいよ。
で、コントローラーで
$this->Myclass->eat('hoge');

で。

>>535
作り方としてデータを渡したいような内容のものがあるならモデルに書いた方がいい。
で、コントローラーからそのモデルのアクションを読み出してデータを取得。
0549nobodyさん2009/01/31(土) 16:13:14ID:x6QrlarV
authcompornentでユーザ登録した後、自動的にログイン状態に遷移する処理について
なにか方法があれば教えていただけませんでしょうか?
0550nobodyさん2009/01/31(土) 16:23:21ID:???
マニュアルを読め
0551nobodyさん2009/01/31(土) 17:40:26ID:???
データが全然こなくて小一時間悩んでたけどconditionsて書く所がconditonsになってた〜 時間返せー
0552nobodyさん2009/01/31(土) 17:50:06ID:???
色々読んでみたが、結局趣味でやるぶんにはイイFWってことか
0553nobodyさん2009/01/31(土) 18:44:40ID:???
>>551
あるあるwwww
JavaScriptでもundefinedとunidentifiedをよく間違えるんだよな
0554nobodyさん2009/01/31(土) 18:55:23ID:???
配列仕様だからそういうミスしても分からないんだよね
なにかあるたびに配列にミスが無いかチェックしてるわ
0555nobodyさん2009/01/31(土) 19:10:10ID:???
よく使うやつはテキストエディタの強調表示設定に入れておくのが吉
0556nobodyさん2009/01/31(土) 19:38:57ID:???
symfonyを採用したオープンソースのSNS OpenPNE3.0が1/27にリリースされたそうな。
ttp://www.openpne.jp/archives/1117/
と言う事は、OpenPNE3.0はPHP4のサーバにはインストール出来ないと言うことか?
多くのアプリがPHP4で開発されたもので、PHP5での稼働が保証されていないので、
サーバのPHPを5に出来ないんだよな。
0557nobodyさん2009/01/31(土) 21:24:40ID:???
>>548
モデルAとモデルBで、一応形としては
A hasMany B
B blongTo A
なんだけど、普段必要になるのは、Bのうちnot deleteのフラグが立ってる
1つのデータだけなのよ。そして、まれに(not delete関係なく)全ての
データが必要になる。これをどう扱ったら良い?

A hasOne B
にしても、BにA_idというフィールドが必要なだけに、こちらが望む
通りに紐付けするには条件(not delete=true)が足りない気がするし、
SQLの実行に時間や負担がかからないか心配だし、汎用性がどうか?

Bのデータをidで直接呼び出した方が早いような気がしたので・・・
Aに、not deleteに当るBのデータのidを入れるフィールドを作っていて、
AのコントローラでBのモデルも扱ってread(Bのid)ってするつもりだった。
だけど、このやり方って変?
0558nobodyさん2009/01/31(土) 21:53:45ID:???
>>557
ゆとりなの?死ぬの?

こんな風に A のモデル書いて
class A extends AppModel
{
var $hasMany = array('B' => array(
'className' => 'B',
'conditions' => array('B.delete' = 'not delete'),
),);

function hogehoge()
{
unset($this->hasMany['B']['conditions']['B.delete']);
return $this->find('all');
}
}

で、普段はコントローラから $this->A->find() でデータ取得して、
B.delete を無視する時は $this->A->hogehoge() 使うようにするだろう。jk
0559nobodyさん2009/01/31(土) 23:42:40ID:???
コントローラーから別のコントローラーに値を渡す方法と言われて、セッションとかそういう話じゃなかったことしかないな
0560nobodyさん2009/02/01(日) 01:12:20ID:???
質問です。

$data = array(
array(
'User' => array('id' => 1, 'name' => 'suzuki'),
'Tag' => array(
array('id' => 1, 'title' => 'hoge'),
array('id' => 2, 'name' => 'fuga')
),
),
array(
'User' => array('id' => 2, 'name' => 'sato'),
'Tag' => array(
array('id' => 1, 'name' => 'piyo'),
array('id' => 3, 'name' => 'moge')
)
)
);
$result = Set::extract('/Tag[id=1]/..', $data);
debug($result);

このとき$resultには、結果的に$dataと同じデータが入ると思うんですが、
「Notice (8): Undefined offset: 1 [CORE/cake/libs/set.php, line 415]」
というエラーが出て、2つめのデータが表示されません。何が原因なのでしょうか?
05615602009/02/01(日) 01:26:07ID:???
すみません、追記です。
PHPのバージョンは5.2.8、CakePHPのバージョンは1.2.1.8004です。

あと「array('id' => 1, 'name' => 'piyo'),」は、
「array('id' => 1, 'title' => 'hoge'),」とした方が自然ですね。


よろしくお願いします。
0562nobodyさん2009/02/01(日) 22:33:35ID:???
>>560
よくわからんけど。
Tagの添字のID=1が二つあるからじゃね?
それ以外の条件での検索については、エラーは出ないし。
0563nobodyさん2009/02/01(日) 22:46:30ID:???
ちょっと複雑?なアソシエーションについて教えて。
基本は A hasMany B , B belongTo A なんだけど、
AとBは hasAndBelongToMany でもある。
(Aが担当教員で、Bが生徒と思えば。
Aの中に担任が一人居るような感じ。)
belongTo のAと、hasAndBelongToManyのAsを
どうやって取得し分けたらいい?
0564nobodyさん2009/02/02(月) 01:23:57ID:???
>>563
アソシエーションのbindとunbindを使い分ければいいんじゃない?
0565nobodyさん2009/02/02(月) 05:46:05ID:lBmCzdKa
1.2でpaginatorを1画面に複数使う方法が書いてあった
blog、どこにあったか知ってるひといたら教えてプリーズ

あとで見ようとしててどっかにいってしまいました
05665632009/02/02(月) 15:51:42ID:???
>>564
一方を取得したくない時には、それでいけそうです。ありがとう。

だけど逆に、両方取得したい時に困りました。
当たり前かもしれませんが、両方が同じ変数に混ざってしまいます。

[B] => Array
(
[id] => 1
[name] => hoge
[0] => Array
(
[id] => 1
[name] => hoge
[AsB] => Array
(
[id] => 4
[A_id] => 1
[B_id] => 1
)
)
)
これ、どうやって分離する?
もしくは、別々の変数でとり出す方法は?
それとも、そもそもデータベースの設計がおかしい?
0567nobodyさん2009/02/02(月) 16:28:39ID:???
>>566
良くのみこめてないけど、tableに問題がありそうなきがする
teachers , students があるのかな?
classes があればすべて解決するような気がするけど違うのかい?
05685632009/02/02(月) 19:05:21ID:???
Authも兼ねるつもりなので、 A hasMany B のAはusersなのです。
だからgroupsも作ってあるけど、classesやgroupsのいずれでも
B blongsTo〜の関係にならないのです。
0569nobodyさん2009/02/02(月) 19:06:34ID:???
http://www.google.co.jp/trends?q=cakephp%2Cruby+on+rails&ctab=0&geo=all&geor=all&date=all&sort=0

逆転しそう
0570nobodyさん2009/02/02(月) 19:55:59ID:???
>>568
いやいやそういうこっちゃないでしょ

もっと具体的に書いてみたらどうよ。
「A hasMany B , B belongTo A なんだけど、 AとBは hasAndBelongToMany でもある」って言われてもねえ
関係するModelと、そこで使われているアソシエーションの内容を、具体的にたのむ
0571nobodyさん2009/02/02(月) 20:48:11ID:???
>>569
これってGoogleでの検索件数のトレンドグラフだよねえ。
CakePHPは色々と問題が多くて、その解決法を探す為にみんなせってと「CakePHP」
キーワードで検索をしている。だから最近検索件数がウナギ登りなんだ。
と言う見方もあるのかなあ?世間の注目を集める為のCakePHPの戦略では?
0572nobodyさん2009/02/02(月) 21:19:08ID:???
>>566
必要なデータを得られるfindをして、自前で工夫すればいいんじゃないかな
05735632009/02/02(月) 21:22:19ID:???
usersテーブル
id
name

personsテーブル
id
name
user_id //これが主たるuser

persons_usersテーブル
id
person_id
user_id //その他のuser

Userモデル
var $hasMany = array('Person' => array('className' => 'Person',
'foreignKey' => 'user_id'));

Personモデル
var $belongsTo = array('User' => array('className' => 'User',
'foreignKey' => 'user_id'));
var $hasAndBelongsToMany = array('User' => array('className' => 'User',
'joinTable' => 'persons_users',
'foreignKey' => 'person_id',
'associationForeignKey' => 'user_id',
'unique' => true));
05745632009/02/02(月) 21:23:10ID:???
Personsコントローラ
class PersonsController extends AppController {
function view($id = null) {
$this->set('person', $this->Person->read(null, $id));
debug($this->Person->read(null, $id));
}
}

すると、$person['User']に、>566みたいに、belognsToとhasAndBelongsToManyの
両方のデータが入ってしまう。
['User'][id]
['User'][name]とかは、blongsToのデータ
['User'][0][id]
['User'][0][name]とかはhasAndBelongsToManyのデータだと思う。
0575nobodyさん2009/02/02(月) 22:34:43ID:???

var $hasMany = array('Profile1' =>
array('className' => 'Profile',
'foreignKey' => 'user_id',
),
'Profile2' =>
array('className' => 'Profile',
'foreignKey' => 'user_id',
)
);
05765632009/02/02(月) 22:56:48ID:???
>>575
それだ!!うまくいきました!多謝多謝
0577nobodyさん2009/02/03(火) 09:54:32ID:???
モデル間のデータのやり取りや、
一つのモデルで複数のフィールドの
データを操作するのって、どうやるの?
というか、そういうのは奨められない?

あるフィールドにデータが書き込まれたら、
同時に別のフィールドにもデータを書き込みたい。
(DBの設計がそもそも冗長との批判は分かる。)
0578nobodyさん2009/02/03(火) 10:15:42ID:???
>>577
afterSave , afterDelete
0579nobodyさん2009/02/04(水) 16:42:15ID:???
セレクトメニューを作るために、find('list')で配列を取得して、
この配列の先頭に、例えば、
$sel[0]='ここから選んで';
みたいなのを追加するのって、どうする?

array_unshiftだと、IDに当る数字が再割り付けされてしまう。
0580nobodyさん2009/02/04(水) 17:30:08ID:???
formヘルパーのオプション指定にそういう機能が無いかと
配列に直にデータを入れてバリデーションと合わせて簡単にやれないかを検討する
0581nobodyさん2009/02/04(水) 18:18:31ID:???
ポケットリファレンスだと、そもそも
$form->input('sel_id')
の説明が無いんだよなー。
$form->selectにもなさげ。

配列に直にデータ入れて、ksortでできたからいいか。
0582nobodyさん2009/02/04(水) 18:39:48ID:???
>>581 え?
$form->select()だと第5引数showEmptyに文字列指定
調べてないけどinputもいけるはず
0583nobodyさん2009/02/04(水) 19:26:25ID:???
ほんとだ。出来た。
そうだよなー。素人の私でも、出来ないと不便だって思うもんなー。
0584nobodyさん2009/02/04(水) 23:27:52ID:???
ポケットなんとかがどんなもんだか知らないけど、まずマニュアル見ましょうよ。
せっかくCakeは日本語ドキュメントが充実してるんだから。
0585nobodyさん2009/02/05(木) 00:17:23ID:???
うむ・・・おっしゃる通り。結局、Webの日本語マニュアルが一番参考になってる。
これだけでもCakePHPを選んで良かったと思う。
だけど、紙の本で探す方が早い事も多いし、狭い画面でやってるのでwebマニュアル
を開いてる場所が無いのです。
ポケリファの1.2.1対応した改訂版が早く出て欲しい。できれば、Authとか1.2の
新機能をきっちり説明して欲しい。
0586nobodyさん2009/02/05(木) 00:26:39ID:???
1.2stable出たし、各社対応版発売を狙ってるでしょ
逆引き的なのは欲しいなぁ〜
05875822009/02/05(木) 09:29:26ID:???
>>584
まずマニュアル見ようというのは同意だけど、マニュアルの記述がまだまだ不完全なのは事実

今回の件であれば
select(string $fieldName, array $options, mixed $selected, array $attributes, boolean $showEmpty)
空の選択オプションを表示したくない場合、$showEmpty を false にします。
と、ある
boolean の引数にテキストを指定するなんて、http://api.cakephp.org/ でソースを見るしかない
(今回はポケットリファレンス見たというから、つっこんだまで)
0588nobodyさん2009/02/05(木) 09:35:20ID:???
>>581
付け加えると、詰まったら http://api.cakephp.org/class/form-helper#method-FormHelperselect を見るのが、一番手っ取り早い
こっちは、マニュアルよりは更新早いし、最終的にはソースを追えるし
まあ、がんばってくれ
0589nobodyさん2009/02/05(木) 17:58:21ID:???
findAll で フィールド price か item のどちらかにマッチするというクエリを書く場合って
どうすればいいの?
0590nobodyさん2009/02/05(木) 18:28:27ID:???
>>589

1.2だったら
$this->MODELNAME->find('all',
 array(
  'conditions'=>array(
    'MODELNAME.price' => '2000',
    'MODELNAME.item' => 'ITEM')
 )
);

こんな感じ
0591nobodyさん2009/02/05(木) 18:29:43ID:???
>>590
ありがとう!
その前にMYSQLが日本語ひっかからないという。。。
なんでだろ。
参考になりました。ありがとうございます。
05925892009/02/05(木) 18:34:16ID:???
cakephp とは関係ないと思いますけど
$option = array('Faqlist.name LIKE BINARY' => $str);

ってBINARY ってのをつけると 日本語もうまくひっかかるようになります。
今まではちゃんとひっかかってたのに。MYSQLの仕様がかわったのかなー
0593nobodyさん2009/02/05(木) 18:52:42ID:???
>>590
"or"とか入れなくても良いんでしたっけ?
0594nobodyさん2009/02/05(木) 18:55:11ID:???
db側の文字コードがLatin1とかだとBinaryで処理するしかないってことだと思うけどね。
0595nobodyさん2009/02/06(金) 03:00:32ID:???
Model::save()の際に、複製を残したいと思って、
idが空になれば新規保存されるのかな?と思って、
モデルに
function beforeSave() {
unset ($this->data[$this->name]['id']);
return true;
}
と書いてみたが、UPDATEされてしまった。

かといって、
function beforeSave() {
$d = $this->data;
unset ($d[$this->name]['id']);
$this->create();
$this->set($d);
return true;
}
ってしたら、createdの日付が0になってしまった。

何か良い方法無い?
0596nobodyさん2009/02/06(金) 08:05:18ID:OIEK7Rhk
複製を残したいなら二回saveする必要があるんじゃねーか?
0597nobodyさん2009/02/06(金) 09:38:20ID:???
>>595
どのように複製したいのだろうか?
updateだろうがinsertだろうが、同じデータをinsertするということなら
afterSaveで、create後saveすれば良いと思われ
別のDBに保存したいというのならuseDbConfigを変更してsaveかな?

いずれにせよafterSaveじゃないと、validationErrorのときにもsaveされちゃうんじゃないかな
0598nobodyさん2009/02/06(金) 10:28:16ID:???
>>596,597
複製って表現が違ったかもしれん。すまん
「バックアップを残す」って感じ。
既存のデータの編集の際、既存のデータは
そのまま(削除のフラグを立てる)で、
新しいidで保存したい。

すると、afterSaveでは上書きされた後だから
ダメでしょ? そこで、beforeSaveでidを
空にすれば新しいidで保存されるかなと思ったが、
なぜか上書きされてしまった(前者)。
コピーしたデータで書き込んだら、createの
情報が抜けてしまった(後者)。という次第であります。
0599nobodyさん2009/02/06(金) 10:42:52ID:???
>>599
履歴を残すってことね。理解した。
でも、それでもafterSaveだろう
新規のデータをinsertして、afterSaveで既存のデータをupdateする感じじゃないかな
http://book.cakephp.org/ja/view/76/
beforeSaveはあくまで保存するデータをいじったりするときに使うものだと思うよ
>>597のvalidationErrorのときにもsaveされるは間違いのようだ
0600nobodyさん2009/02/06(金) 10:53:08ID:???
>>599
>新規のデータをinsertして、afterSaveで既存のデータをupdateする
 ↑
この処理はコントローラに書くことになるよね?
どこかで、「ビジネスロジックはモデルに」なんて書いてあったので、
モデルに書く方法を考えてた。(コントローラからは普通にsaveしてる
ように見えるけど、モデルの方でバックアップを残してる、って感じ)
もしくは、モデルに上記の処理をするメソッドを作る方法もある?
Model::save()を上書きしたら・・・さすがにややこしいことになるよな。
0601nobodyさん2009/02/06(金) 11:04:42ID:???
>>600
afterSaveと言ってるくらいだから、Modelでしょーが
おまいさんのいうように、自動的に履歴が残るぞ。
まずは、マニュアル読んでコールバックメソッドを理解するべし
0602nobodyさん2009/02/06(金) 11:08:14ID:???
あ。そうか。ちょっと勉強して、試してみる。
0603nobodyさん2009/02/06(金) 11:16:38ID:???
>>602 Have a nice cooking !
0604nobodyさん2009/02/06(金) 12:54:05ID:???
>>601
「新規のデータをinsertして」もModel??
その後、afterSaveの中でgetIDできるのは
新しい方のデータで、既存のデータのidは
取得できないのでは?
0605nobodyさん2009/02/06(金) 12:58:50ID:Fuxx6e9Y
バリデーションが効かない。助けて下さい。

モデルに追加するだけで動作するよね?

var $validate = array(
'xxx' => array(
'rule' => VALID_NOT_EMPTY,
'message' => '必須項目です。'
)
0606nobodyさん2009/02/06(金) 13:12:45ID:???
>>604
それは、Controller
既存のidについては、自分で工夫してみてくれ。getIDする必要があるとは思えんから
0607nobodyさん2009/02/06(金) 13:51:55ID:???
>>606
ありがとう。わかりました。

いくつかのモデルで同様の処理が有るので、
メソッド作って、AppModelに書いてみました。
0608nobodyさん2009/02/06(金) 14:27:27ID:???
CakePHPってXSSとかSQLINJECTIONに対応してますか?
自分で処理するしかないですあk?
0609nobodyさん2009/02/06(金) 14:49:58ID:???
基本的に処理はされるが、知らずに穴を作ることはできるので、
自分で意識する必要はある。当然だが。
0610nobodyさん2009/02/06(金) 16:08:24ID:???
>>608
XSSやSQLインジェクションの仕組みと対策方法を知っていれば、
おのずと分かる話だと思うが?
0611nobodyさん2009/02/06(金) 16:17:31ID:???
Cakeのセキュリティ関係はあまり信用出来ないけど
0612nobodyさん2009/02/06(金) 16:32:25ID:???
さすがにXSSについては、Helper使わない限りは、自分でh()に通すしかないわな
0613nobodyさん2009/02/06(金) 16:44:06ID:???
Ajaxしてると見落とすこともあるかも。
0614nobodyさん2009/02/06(金) 22:15:58ID:OIEK7Rhk
これってDBにロックかけることってできないの?
BEGINでトランザクション開始
SELECT FOR UPDATEで更新用データ取得と同時にロック
UPDATEでデータ更新
COMMITでトランザクション終了

みたいな感じにしたいんだけど、SELECT FOR UPDATEって
どうやって設定してやったらいいんだ?
0615nobodyさん2009/02/07(土) 09:27:29ID:u7AiZVmn
webrootの.phpファイルからcakeのコントローラを読んで
表示したいのですが、
includeでコントローラが読めませんでした。

viewにすれば解決するのはわかるのですが、
外部からcakeの結果を受けとることって無理なんですかね?
0616nobodyさん2009/02/07(土) 10:22:18ID:???
>>615
(今考えている解決方法がどうやったらできるかじゃなくて)
具体的に今抱えている問題を書き込んだほうが、解決につながりやすいと思うよ

webrootにphpファイルを置くというのは、方向性が間違っている可能性が高い
0617nobodyさん2009/02/07(土) 18:26:40ID:???
複数のモデルデータを保存したい時ってどうやってる?
条件としてはどちらもバリデーション通ったら保存。

バリデーションチェックとその表示との両立が上手くできない。
0618nobodyさん2009/02/07(土) 18:37:09ID:???
>>617
'validate' => 'first' でsaveAll()

http://book.cakephp.org/ja/view/75/%E3%83%87%E3%83%BC%E3%82%BF%E3%82%92%E4%BF%9D%E5%AD%98%E3%81%99%E3%82%8B
0619nobodyさん2009/02/07(土) 19:28:59ID:???
>>618
明確な答えをありがとう。
フォームのバリデーションエラー表示も少してこずりましたが試して見ます。
saveAllをネット上の情報で試したんですが、エラー表示がきちんと出なかったんですよね。
フォームヘルパーの指定方法の問題じゃないかと思っていましたが。

taskモデルと、アソシエーションしたTimelineモデル(hasMany)のフォームはこんな感じで書いてます。
echo $form->input('task');
echo $form->input('Timeline.progress');

ちょっと前見たときはsaveAllの説明なかった気がするのは気のせいかな・・。
履歴を見ると気のせいじゃない気もする、今月に入って誰か訳してくれたんだねありがとう訳者さん。
0620nobodyさん2009/02/07(土) 23:38:50ID:K4fXwaLQ
「マニュアル/開発例/ACLを制御するシンプルなアプリケーション」で
User自身が書いたPostのみ編集できて、他人のPostは編集できないようにしたいのですが、
どうしたらいいのかわかりません。><

isAuthorized()とかbeforeFilter()になんかちまちま書くしかないんでしょうか?

例えば、ACL使ってないけど、

function isAuthorized() {
if ($this->Auth->user('username') == 'admin') {
return true;
}

if (!empty($this->params['pass'][0])){ // ユーザー名
if ($this->Auth->user('username') != $this->params['pass'][0]) {
return false;
}
}

return true;
}

こんな感じとか?
0621nobodyさん2009/02/07(土) 23:48:49ID:???
http://book.cakephp.org/ja/view/171/%E3%82%A2%E3%82%AF%E3%82%BB%E3%82%B9%E5%88%B6%E5%BE%A1%E3%83%AA%E3%82%B9%E3%83%88
0622nobodyさん2009/02/08(日) 00:16:52ID:XBcxfvCP
TRPGオタしか喜ばなそうな上記説明を熟読すれば、
「マニュアル/開発例/ACL〜」のサンプルで
id:1のUserのみがuser_id:1のPostを編集できるようにできるんですか?
0623nobodyさん2009/02/08(日) 01:12:57ID:???
>>622
「TRPGオタしか喜ばなそうな上記説明を熟読すれば、」ってことは、
ちゃんと読んでないのか。
マニュアルくらい読めよw

それとも読めないくらい馬鹿なの?ww
もしそうだったらごめんねwww
0624nobodyさん2009/02/08(日) 02:18:10ID:???
>>622
マニュアルの更なる理解のために「指輪物語」を読破するんだw
0625nobodyさん2009/02/08(日) 02:30:48ID:???
formヘルパーで、複数のテキスト入力boxを
1行に並べるのって、どうするの?
0626nobodyさん2009/02/08(日) 04:45:10ID:???
>>625
自分でフォームを書く
0627nobodyさん2009/02/08(日) 04:56:26ID:???
>>626
えっ、マジ?
0628nobodyさん2009/02/08(日) 11:29:47ID:XBcxfvCP
いや、読んだ上で言ってるんだが。。。

これだとテーブル単位では大丈夫だけど、レコード単位での権限の設定が
できないんじゃないかと思うんだが、違うのか?

なんか、ここはレベル低いなぁ。
0629nobodyさん2009/02/08(日) 11:49:57ID:???
その処理は、自分で書くんだよ。
自分が投稿したやつだけ編集できるって。
当たり前だろ。

管理者は全員のものを編集できるかもしれないし、
別に編集者という人を作るかもしれない。

誰が何を編集できるかを決めるのはお前。
よってお前がそういうコードを書く。OK?

レベルが低いのはお前。
0630nobodyさん2009/02/08(日) 12:03:59ID:???
>>625
tableタグ使うと$form->text()を1行に並べること出来るよ。
後は、app/webroot/css/cake.generic.cssの内容を自分の好みに編集するだな。
(でも、なんでCakePHP1.2のdefaultのcssはこんなに変態なのだろ?)
0631nobodyさん2009/02/08(日) 12:10:49ID:???
'div' => 'false' とかで横に並べられた気もするが・・・

> (でも、なんでCakePHP1.2のdefaultのcssはこんなに変態なのだろ?)
同意。デフォルトのフォントの大きさとかマージンとか
各ブラウザの間での違いを吸収する程度にしておけばいいのに。
0632nobodyさん2009/02/08(日) 12:17:33ID:XBcxfvCP
>>629

> その処理は、自分で書くんだよ。

いや、書かなきゃならないのは、最初からわかってるよ。
でも、どこに書けばいいのかがわからない。

isAuthorized()やbeforeFilter()に書くのか?
0633nobodyさん2009/02/08(日) 12:21:23ID:???
チケットを投げるんだ。

Summary: "cake.generic.css" looks like hentai
Type: RFC
0634nobodyさん2009/02/08(日) 12:23:13ID:???
>>632
ご飯から食べるか味噌汁から食べるか。
好きにしろw
0635nobodyさん2009/02/08(日) 13:06:23ID:???
>>631
<?php
echo $form->text('hoge0', array('div' => 'false'));
echo $form->text('hoge1', array('div' => 'false'));
echo $form->text('hoge2', array('div' => 'false'));
?>
これでは縦に3つ並んでしまったが、こんな書き方ではないのかな??
0636nobodyさん2009/02/08(日) 13:29:45ID:???
>>628
レベルが低いのはお前の頭
06376222009/02/08(日) 13:32:48ID:ByGZ6/FB
>>632
教えてやるから土下座して「自分の頭の程度が悪うございました」とPCの前で言え

単にACOにmodel,foreign_keyを目的のレコードのものに設定して登録して、
AROとACOの関係を定義するだけ
ACO登録位置は種類考えて適宜選べ

関係の定義とチェック関数については>>622に書かれてる
06386212009/02/08(日) 13:33:26ID:ByGZ6/FB
622じゃなくて621だった
0639nobodyさん2009/02/08(日) 14:40:18ID:???
CakePHPで掲示板作れます?
0640nobodyさん2009/02/08(日) 14:43:20ID:???
>>639
お前は何を言っているんだ?
0641nobodyさん2009/02/08(日) 14:45:17ID:???
>>640
質問しているのです。
0642nobodyさん2009/02/08(日) 15:03:43ID:???
>>641
はいはい、ソーデスネ。
次のネタが思いつかないので、マジレスする。
作れます。
以上。

0643nobodyさん2009/02/08(日) 15:04:30ID:???
>>639
ベタのPHPで作るより、短時間で、高機能(Ajaxなど)な掲示板が作れますよ。
がんばってください。
0644nobodyさん2009/02/08(日) 16:07:39ID:???
>>642-643
がんばります!
0645nobodyさん2009/02/08(日) 16:20:11ID:???
自分の頭の程度が悪うございました
0646nobodyさん2009/02/08(日) 16:26:13ID:SHT1by4H
バリデーションで、一つのフィールドに対して、
複数のルールを設定していた場合に、
一つのエラーが検知した場合以降の
バリデーションはおこわないことは、出来ますか?

例えば、期間の入力があった場合、入力値が正しく
なかった場合、その後の妥当な期間であるかどうかの
チェックはいらないのですが。
0647nobodyさん2009/02/08(日) 16:41:27ID:???
>>644
これから始めるなら、この本お勧め。
「CakePHP徹底入門」 CakePHP1.2で説明してあるから、とても楽に入門できた。
ttp://www.amazon.co.jp/CakePHP徹底入門-イージーゲート/dp/479811717X
↓このページも入門者にお勧めかな。
ttp://kuri6005.sakura.ne.jp/cake/wiki/
0648nobodyさん2009/02/08(日) 16:53:37ID:???
>>646
http://book.cakephp.org/ja/view/133/
'last' => true
0649nobodyさん2009/02/08(日) 17:20:04ID:???
>>648
ありがとうございます。
すみません。
しっかりと説明されていますね。
もっとちゃんと読まないといけませんね。
0650nobodyさん2009/02/08(日) 17:46:55ID:srWubjja
携帯対応ページを作ろうと思って、/m/でリクエストされたら携帯ページを表示ってやろうとしていて
表示はうまくできたんですけど、PC用ページのフォームで、
$form->create('post', array('action' => 'view'));
ってやったときに、$this->dataにデータが入っているときは、
action="/post/view/1"とかになるんだけど、データが入ってないと
action="/m/post/view"って/m/が先頭につけられてしまいます。
プログラム中で/m/をつけてるのはroutes.phpで
Router::connect('/m/:controller/:action/*", array('prefix' => 'mobile'));
としているとこだけなんだけど、$form->createってここを見てURLを
自動生成してるんでしょうか?
だとしたらどうやったらうまく解決できるんでしょうか?
0651nobodyさん2009/02/08(日) 18:01:22ID:srWubjja
すんません、Router::Connectをコメントにしたらちゃんとうごきました。
ということは$form->createではこれをみてURLを生成してるんですね。
携帯、PCの両用サイト作ってる人はどうやって解決してるんでしょうか?
0652nobodyさん2009/02/08(日) 21:16:52ID:???
>>647
ご丁寧にありがとうございます。
明日の夜にでも本屋に行ってこようと思います!
0653nobodyさん2009/02/08(日) 21:59:25ID:???
http://cakephp.jp/
0654nobodyさん2009/02/08(日) 22:39:55ID:???
>>635
うちもそれ試した。3行になっちゃった。
やっぱ、>626の言う通り、自分で
フォームを書かないといけないのか・・・マンドクセ

生年月日を入力させるのに、セレクトメニューでは
不便なので、直接「年」「月」「日」の数字を
入力させたいのね。
何か、簡単な方法ある?

できれば、年号(MTSH)が付いてると西暦に直して
欲しいんだけど・・・(そこまで求めるのは無理か。)
0655nobodyさん2009/02/08(日) 22:49:40ID:???
素のhtmlのタグを、cake流に変換するようなフィルタとかあればいいなー
0656nobodyさん2009/02/08(日) 23:14:43ID:???
>>654
'div' => false にして、出てくるフォームが改行されるのは、FormHelperの問題と違う。
CSSでそう指定してあるから改行される。

input {
clear: both;
}

みたいな感じで。

いっぺん、読み込んでるCSSファイルを移動するなりして、読み込めないようにしてみろ。
0657nobodyさん2009/02/09(月) 00:07:57ID:???
>>656
CakePHP1.2の変態cssをとっぱらったら、'div' => 'false'を付けなくてもtextBoxが1行に
ちゃんと3つ並ぶ。質問者はCakePHP1.2の変態cssを突破してtextBoxを1行に並べる方法を
質問しているのだと思う。
<?php
echo $form->text('hoge0');
echo $form->text('hoge1');
echo $form->text('hoge2');
?>
<br>
<br>
<?php
echo $form->text('hoge0', array('div' => 'false'));
echo $form->text('hoge1', array('div' => 'false'));
echo $form->text('hoge2', array('div' => 'false'));
?>

>>654
自分でフォームを直接書いたとしても、CakePHP1.2の変態cssの壁に阻まれると思う。
敵はCakePHP1.2の変態cssだと思う。変態cssを攻略するのが近道。

tableタグを使うと変態cssの中でもtextBoxを1行で表示できる。が詳細なレイアウトを
調整しようとすると変態cssと戦わざるを得ない。
<table>
<tr>
<td><?php echo $form->text('hoge0'); ?></td>
<td><?php echo $form->text('hoge1'); ?></td>
<td><?php echo $form->text('hoge2'); ?></td>
</tr>
</table>
0658nobodyさん2009/02/09(月) 00:13:00ID:???
何で変態CSSのために
無駄な労力使ってるんだw
0659nobodyさん2009/02/09(月) 00:18:41ID:???
>>658
暇で他にやる事もないので、チョットやってみただけ。
0660nobodyさん2009/02/09(月) 01:19:15ID:???
てことはCSSを、YUIとかのリセットに変えればいいだけか
0661nobodyさん2009/02/09(月) 02:53:29ID:???
>>659
じゃあ僕のサイト作るの手伝ってくれません?
0662nobodyさん2009/02/09(月) 19:48:34ID:???
>>661
私でよければ喜んで。
(1人月どれくらをお考えで、何人月位の作業でしょうか?)
0663nobodyさん2009/02/09(月) 20:24:53ID:???
え、金?
0664nobodyさん2009/02/09(月) 20:38:10ID:???
>>663
今後、食べて行くのにも不安があります。よろしくお願いします。
0665nobodyさん2009/02/09(月) 20:53:38ID:???
いくらほしいの?
0666nobodyさん2009/02/09(月) 20:59:41ID:???
一般的なマッチング系サイトだけど
0667nobodyさん2009/02/09(月) 21:42:25ID:???
90万
0668nobodyさん2009/02/09(月) 21:47:42ID:???
無理。15万以内
0669nobodyさん2009/02/09(月) 21:50:22ID:???
必要経費別で50万円・人月(600万円/年)でやるよ。
0670nobodyさん2009/02/09(月) 21:52:08ID:???
90とか、50とか正気か?
0671nobodyさん2009/02/09(月) 21:54:10ID:???
まあ内容次第かな
完璧に一般的な機能のみしかも小機能だったら30万くらいでも作るが
0672nobodyさん2009/02/09(月) 22:00:02ID:???
だから15以内って言ってるだろ
ttp://www.with9.com/
このレベル
0673nobodyさん2009/02/09(月) 22:04:10ID:???
素材制作別でデザイン・システム込みで25万以下じゃやっても損にしかならないな
それ以下で請け負う奴もたぶん居ないし
0674nobodyさん2009/02/09(月) 22:04:53ID:???
システムだけなら15以下ってありじゃね?
0675nobodyさん2009/02/09(月) 22:07:07ID:???
システムだけでも居ないと思うよ
売り手市場のIT業界でそんなの15以下で受ける奴は学生で居るかどうかってところ

0676nobodyさん2009/02/09(月) 22:14:58ID:???
PHPでもそんなに相場って高いの?
0677nobodyさん2009/02/09(月) 22:18:20ID:???
人月50万としても、CakePHPで0.3人月で完成すれば15万だ。
0678nobodyさん2009/02/09(月) 22:24:51ID:???
>>675
お前は何を言ってんだ

ここ見てみろ
ttp://www.getafreelancer.com/projects/PHP/Flickr-clone.html
0679nobodyさん2009/02/09(月) 22:25:37ID:???
じゃあ10以下でやってるオイラは…
0680nobodyさん2009/02/09(月) 22:28:45ID:???
高額で請け負ってるやつに限って、ソースも汚かったりするんだよね
メンテに人件費がかかりすぎてるのかね
0681nobodyさん2009/02/09(月) 22:30:45ID:???
Flickr cloneが3万円だって?
cloneインストールするだけじゃないだろうなw
0682nobodyさん2009/02/09(月) 22:54:07ID:???
>>668
スキルを磨かせてもらえ、今後のチャンスを与えてくれる様な仕事なら
ゼロ円でやらせてもらいます。よろしくお願いします。
0683nobodyさん2009/02/09(月) 22:55:04ID:???
1万円あげるから作らさせて下さい
よろしくお願いします。
06846612009/02/09(月) 23:14:55ID:???
金が絡むとは・・

ボランティアで^^
0685nobodyさん2009/02/09(月) 23:30:16ID:???
mysql のテーブルが2つ用意してあって(稼動用、テスト用)
cakephp の設置は1つのままで、稼動用、テスト用のデータベースへの接続を
ファイルをかきかえる事なく自由にやる事ってなんかいい方法ないですかね?

ブラウザであるアドレスにアクセスすると、データベースをこっちみてくれる、とか
そんなんできないですかね?

ページが探せないんですけど、なんかすると debug の値を変更してアクセスできる
みたいな tips をどっかで見た記憶があるんですけど、そういう勢いで…。
0686nobodyさん2009/02/09(月) 23:34:21ID:???
稼働用とテスト用で二つファイルを置けばいいだけじゃねーか
0687nobodyさん2009/02/09(月) 23:40:42ID:???
>>686
どういう意味?

2つファイルを置いてリネームして使えってこと??

そうじゃなくて、通常にアクセスすると稼動用DB を見にいってるけど
なんか URL などにある細工をするとテスト用DB を見にいく、
みたいに設定ファイルをいじる事なくやりたいんすが。
0688nobodyさん2009/02/09(月) 23:54:57ID:???
>>687
$useDbConfig でググれば、ヒントがいろいろ出てくるはず。
0689nobodyさん2009/02/10(火) 01:05:58ID:???
/test/app

/unyo/app
って二カ所に同じものをコピーしてDBの設定だけ変えときゃいいんじゃねーの?
どうせテスト用のは一時的にソースいじったりするんだべ?
だったら運用とテストは別ディレクトリに分けといた方がいいんでないかい?
0690nobodyさん2009/02/10(火) 01:08:41ID:???
俺も>>689の方法に1票。
0691nobodyさん2009/02/10(火) 01:53:54ID:???
/test_unyo/app
で よくね?
0692nobodyさん2009/02/10(火) 02:21:12ID:???
動かねえなあと思ってたら単にモデルのファイル名を間違っていただけと
知った時は割とショック。
0693nobodyさん2009/02/10(火) 08:56:22ID:???
CakePHPの変態?CSSと心中するつもりは無いので、CSSを書き替えようと思うんだけど。
app/webroot/css/cake.generic.css
を直接書き替えればいいのかな?

何かお勧めの設定ありますか?
0694nobodyさん2009/02/10(火) 09:58:52ID:???
>>685
ttp://d.hatena.ne.jp/charly24/20070512/1178956046
debugの値じゃないけど、これも、設定変更が不要なパターンで使い勝手が良い
>>689のように別ディレクトリでも同じファイルでよいから、ミスが少ない
0695nobodyさん2009/02/10(火) 12:33:26ID:???
bakeで生成されるviewが編隊CSS前提になっているからなぁ。
うまく作らないとviewがぐちゃぐちゃになる。
0696nobodyさん2009/02/10(火) 18:10:04ID:???
>>689
俺そんなかんじで、appを分けてテスト用の方で機能追加したりしてたんだけど、
機能追加分がやっとできたー。と思って、本番用のappからテスト用のappにコピーしちゃった。
そして気づかずに速攻でリモート鯖にアップしちゃった。
機能追加した分が全部パーじゃねえか!・・・・

まあ俺用サイトの管理画面の手直しだからまだ救われるけど、
バージョン管理とか導入した方がいいのかもしれんなあ。とほほ。
0697nobodyさん2009/02/10(火) 18:21:35ID:???
SVNも使ってないのか
0698nobodyさん2009/02/10(火) 20:35:04ID:???
テスト用ディレクトリでコミットして
本番用はチェックアウトするだけってするのが
ミスもなくなってらくちんですよね
0699nobodyさん2009/02/10(火) 22:01:09ID:???
1.2対応decorat.phpマダァ-? (・∀・ )っ/凵⌒☆チンチン―
0700nobodyさん2009/02/10(火) 22:06:53ID:???
>>697
SVNって便利なの?どうやって使うの?
自動で差分を管理してくれたら、楽だろうなとは思う。

>>699
./cake bake all
が便利だったので、もういいか、って思う。
でも、bake allって焼き直す時に確認が多すぎてウンザリ。
0701nobodyさん2009/02/10(火) 22:09:54ID:???
>>684  >>661
今後、食っていけるかどうか不安で一杯なのに
「ボランティア」なんて心の余裕はない。勘弁してください。
0702nobodyさん2009/02/10(火) 22:46:53ID:???
>>700
そんなのほかのフレームワークからしたらしょぼすぎる自動生成だけどな
0703nobodyさん2009/02/10(火) 23:15:30ID:???
>>700
自動でバージョン間の差分出すとか、
当たり前というか出来なかったらバージョン管理ツールと呼べないw

個人で使うならSVNがお勧めだな
0704nobodyさん2009/02/10(火) 23:33:37ID:???
まだ全部読んでないけど。
良さげなんで、メモ
http://jeffhowden.com/code/css/forms/
0705nobodyさん2009/02/11(水) 13:25:54ID:???
http://cakephp.seesaa.net/article/96046006.html
0706nobodyさん2009/02/12(木) 03:37:49ID:???
てか、開発中のアドミン画面とか最初のScaffold段階ならまだしも
外に見せる部分にもcake.genericとか使っちゃうの?
0707nobodyさん2009/02/12(木) 07:26:53ID:???
>>706
外に見せるもののcssは独自設定になるね。cake.genericの設定は2割位しか
残らないかな。
0708nobodyさん2009/02/12(木) 12:04:09ID:???
http://cakephp.jp/
乙!
0709nobodyさん2009/02/12(木) 12:34:16ID:???
`Cakeは命の恩人` w...
0710nobodyさん2009/02/12(木) 16:27:26ID:???
まだ英語で読んだほうがわかりやすいわw
0711nobodyさん2009/02/12(木) 16:41:01ID:???
年月日を2つのフィールドで入力させてくれる
formヘルパーの拡張、誰か作ってくれ。いや、ください。
というか、formヘルパーの拡張って、どこですんの?
0712nobodyさん2009/02/12(木) 16:42:20ID:???
>711の訂正
2つのフィールドじゃない。3つのフィールドだ。
0713nobodyさん2009/02/12(木) 16:49:22ID:???
>>711-712
何をどう拡張して欲しいか、まったく分からんのだが
selectじゃなくてinputってこと?
独自のHelper作ればよろしいがな
0714nobodyさん2009/02/12(木) 19:58:05ID:???
AuthCompornentを使ったログインで、
ログイン画面を、管理者用と一般用に分けたくなりました。

そこで、管理者用にmodelが空のkanris_controllerを作って
$this->Auth->loginAction = '/kanris/login';
として管理者用ログインのviewを表示させたのですが、
うまくログインできません。

方法として間違ってるのでしょうか?
なにかヒントがあれば、教えて頂けませんでしょうか。
0715nobodyさん2009/02/12(木) 20:41:26ID:???
マニュアルを読め
0716nobodyさん2009/02/12(木) 20:41:53ID:???
>>714
viewだけ分ければいいでしょ。
0717nobodyさん2009/02/13(金) 02:26:21ID:???
BirthDay←→birth_day
この変換してくれる関数とか、ありませんか?
0718nobodyさん2009/02/13(金) 03:05:24ID:???
>>717
【PHP】下らねぇ質問はID出して書き込みやがれ 80
http://pc11.2ch.net/test/read.cgi/php/1233479457/
0719nobodyさん2009/02/13(金) 03:28:48ID:???
>>717
Inflector
マニュアルは暇な時にでも目を通しておこうよ。あとできればAPIも。
0720nobodyさん2009/02/13(金) 03:38:29ID:???
>>719
ありがとう。

マニュアル見ても、使い方と結びつかないと覚えられないのですよ。
0721nobodyさん2009/02/13(金) 03:52:15ID:???
とりあえず、ここまで来た。
<?php
class DateFormHelper extends AppHelper {
function input($title = null, $model = null, $field = null, $value = null) {
$class = "dateForm";
$name = "data[".$model."][".$field."]";
$txt = "\r";
$txt .= "<div class=\"input text\">";
$txt .= "<label for=\"".$model.Inflector::camelize($field)."\">".$title."</label>";
$txt .= "<input class=\"".$class."\" name=\"".$name."[year]\" type=\"text\" maxlength=\"10\" value=\"1970\" />";
$txt .= "年";
$txt .= "<input class=\"".$class."\" name=\"".$name."[month]\" type=\"text\" maxlength=\"10\" value=\"1\" />";
$txt .= "月";
$txt .= "<input class=\"".$class."\" name=\"".$name."[day]\" type=\"text\" maxlength=\"10\" value=\"1\" />";
$txt .= "日";
$txt .= "</div>\r";

return $this->output($txt);
}
}
?>
だが、引数が多すぎる・・・
Helperの中で、引数をどこからか取得できない?
0722nobodyさん2009/02/13(金) 08:01:17ID:???
>>721
その引数なら、HtmlHelperを使えば不要だろ。
0723nobodyさん2009/02/13(金) 08:30:00ID:???
ごめん。不要は語弊があるな。
0724nobodyさん2009/02/13(金) 11:24:30ID:???
DateFormHelperの中でHtmlHelperを使おうと思ったけど、
HtmlHelperってobsolate? 意外に面倒? って思って、
直接書いちゃった。
引数に当るものは、$this->params, $this->dataで
普通に取れた。
0725nobodyさん2009/02/13(金) 12:32:00ID:???
あ、違った。FormHelperだ
$this->Form->inputに渡しなさいってことよ
http://book.cakephp.org/ja/view/102/
0726馬鹿2009/02/13(金) 15:25:23ID:???
こんにちは、馬鹿ですw

>>637

ACOにmodelとforeign_keyを入れると、
たしかにcheck()で判定できました。

例えば、

$aro = array("model"=>"User", "foreign_key"=>1);
$aco = array("model"=>"Post", "foreign_key"=>3);
$this->Acl->check($aro, $aco, 'read')

みたいな感じでですよね。

ですが、Authと組み合わせても、
ACOのforeign_keyがまったく影響されません。

0727馬鹿2009/02/13(金) 15:26:41ID:???
上記のcheck()でdenyであるにも関わらず、posts/view/3を実行すると下記のようなSQLが実行されて
id:3のPostの内容が表示されてしまいます。

SELECT `Aco`.`id` , `Aco`.`parent_id` , `Aco`.`model` , `Aco`.`foreign_key` , `Aco`.`alias`
FROM `acos` AS `Aco`
LEFT JOIN `acos` AS `Aco0` ON ( `Aco0`.`alias` = 'Posts' )
WHERE `Aco`.`lft` <= `Aco0`.`lft`
AND `Aco`.`rght` >= `Aco0`.`rght`
ORDER BY `Aco`.`lft` DESC
LIMIT 0 , 30

# というか、なんでaliasで探しているんだ?
なんとかならないでしょうか?

ちなみに、beforeFilter()の中はこんな感じです。

function beforeFilter(){
$this->Auth->authorize = 'crud';
$this->Auth->authenticate = $this->NoHash;
$this->Auth->loginAction = array('controller' => 'users', 'action' => 'login');
$this->Auth->logoutRedirect = array('controller' => 'users', 'action' => 'login');
$this->Auth->mapActions(
array(
'create' => 'add',
'read' => 'view',
'update' => 'edit',
'delete' => 'delete'
)
);
$this->set('auth', $this->Auth->user());
}
0728馬鹿2009/02/13(金) 15:47:24ID:???
あと、マニュアルに

User の情報には、単独の Model::find() の実行結果が(もしアソシエーションが正しく定義されていれば、それも)含まれます。
逆に、ある特定のブログの投稿やレシピの表などを編集する作業を管理したい場合は、これらのモデルのレコードを ACO にリンクさせます。

とあるんですが、これって、

class User extends AppModel{
var $actsAs = array('Acl'=>array('requester', 'controlled'));
}

であれば、Userに所属するPostも同様に扱われる、と解釈していいのでしょうか。>Model::find()の実行結果が含まれます。
0729nobodyさん2009/02/13(金) 15:57:43ID:???
>>725
渡したいのは山々だが。うまいやり方が分からん。
特に、3つのinputを、一つの<div>に括るのが。

ちなみに、>721だと、cssに
form .dateForm {
width: 45px;
}
を追加すると、それぞれの数字の入力場所が小さくなって、
他のcssとの設定もあって、年/月/日の3つの入力場所が
1行に収まるのですよ。
0730馬鹿2009/02/13(金) 16:02:04ID:???
あと、私が、

> なんか、ここはレベル低いなぁ。

と言ったのは、例えば1つ上で、

> formヘルパーで、複数のテキスト入力boxを
> 1行に並べるのって、どうするの?

なんて質問している人がいるからだったんだが、
正直、すまんかった。

ちょっと苛ってた。
0731nobodyさん2009/02/13(金) 16:10:45ID:???
>>730
いいよ。
0732nobodyさん2009/02/13(金) 17:12:28ID:???
不特定多数が集まる場所でレベルとか・・
0733nobodyさん2009/02/13(金) 17:28:54ID:???
いいよいいよ、レベルが低いのは俺だけだから。
0734nobodyさん2009/02/13(金) 18:32:32ID:???
>>727
check()でfalseが返るならそれを判定して好きなようにエラー処理でもしろよ
まとめてやりたいならcontroller,actionを全部ACO扱いにしてapp_controllerのbeforeFilterあたりで好きにやれ
0735馬鹿2009/02/13(金) 20:38:17ID:???
>>734

> check()でfalseが返るならそれを判定して好きなようにエラー処理でもしろよ
> まとめてやりたいならcontroller,actionを全部ACO扱いにしてapp_controllerのbeforeFilterあたりで好きにやれ

うーん、そうするしかないのかな。
開発例だとACOがテーブル+アクション単位だからする必要がなくて、
ACOをレコード単位(モデル名と外部キー指定)で権限設定した途端になにか書かなければならない、
というのは変だと思うんだが…。
まぁ、aliasの使い方がまだ良く分かっていない。
というか、仕様が固まってなさ過ぎるんじゃないか、とさえ思った。

そもそも、GoogleしてもACOのmodelとforeign_keyに値を入れる人があまりいないんだよなぁ。
あと、こんな議論してたり…。
ttp://groups.google.ch/group/cake-php/msg/8d20dc14a91402c3


でも、実際にやってみて勉強になったし、感謝してる。
ありがとう。
0736nobodyさん2009/02/13(金) 22:19:37ID:???
やってて不便だと思う時は、自分が何か間違った手順をしてるんだと考えることにしてる。
0737nobodyさん2009/02/13(金) 22:26:38ID:???
1つのビューの中で、複数の paginator を使いたい時は
どうすればいいですか?
1つのモデルの中で、
過去の一覧、今日日付の一覧、未来日付の一覧のように
3つのテーブルを表示して、それぞれに paginator をつけたいんですが、
コントローラ変数 $paginateの定義をどうやって複数にすればいいか
わからなくて…。
0738nobodyさん2009/02/13(金) 23:20:28ID:???
>>725
$this->data['User']['birth_day'] = "1960-02-13" の様なデータを
どうやって$this->Form->inputに渡すか、ずっと考えてた。

$this->data['User']['birth_day']['year'] = "1960"
$this->data['User']['birth_day']['month'] = "02"
$this->data['User']['birth_day']['day'] = "13"
というデータを作って、
$form->text('User.birth_day.year', array('class' => 'dateForm'))
$form->text('User.birth_day.month', array('class' => 'dateForm'))
$form->text('User.birth_day.day', array('class' => 'dateForm'))
で、いいのか??
0739nobodyさん2009/02/14(土) 15:13:33ID:???
>>721
やっつけ

class FormHogeHelper extends FormHelper {
function dateText( $fieldName, $options = array( ), $separator = array( '年', '月', '日') ) {
// year
$opts = array(
'class' => 'input date year text',
'maxlength' => '4',
);
$options = am( $opts, $options );
$ret .= parent::text( $fieldName . 'year', $options );
$ret .= $separator[0];
// month
$options['class'] = 'input date month text';
$options['maxlength'] = 2;
$ret .= parent::text( $fieldName . 'month', $options );
$ret .= $separator[1];
// day
$options['class'] = 'input date day text';
$ret .= parent::text( $fieldName . 'day', $options );
$ret .= $separator[2];

return $ret;
}
}
0740nobodyさん2009/02/14(土) 19:24:44ID:m6dznHMB
>>737
俺ならPEARのPagerで実装しちゃうかも…それ。
いい方法が思いつかない。


ところで、皆様ビュー作るときのデザインってどうしてる?
デザイン周りはDreamweaver、ロジックはeclipseで書いてるんだけど、
ctpに落とし込むとめんどくさいのだよね。Htmlヘルパーで画像差込すると
デザインプレビューできないし。
0741nobodyさん2009/02/14(土) 21:44:54ID:???
>>740
全部eclipseでガリガリ書くのが結局はやい。
プレビュはブラウザのF5で十分
0742nobodyさん2009/02/14(土) 22:11:23ID:???
>>740
cakeの機能でやりたいんだよなー
なんとなく。

でもPEARのPagerなら可能なんだね。
いいこと聞いたわ
0743nobodyさん2009/02/14(土) 22:27:43ID:???
>>739
なるほどー。こうやって拡張するんですね。
まだ検証できてないけど、後で試します。
ありがとうございます。
0744nobodyさん2009/02/15(日) 00:08:56ID:???
>>737
model内で、paginateCount()とpaginate()の一番めの引数にsqlを渡せるようにしとく。
controller内にsql書くのはアレなので、sql取得用のメソッドも書いとく。

controller内で
$this->paginate = array(
 'conditions' => $this->Model->getSql( '過去'),
 'limit' => $limit,
);
$this->set( 過去の一覧, $this->paginate( 'Model' ) );

$this->paginate = array(
 'conditions' => $this->Model->getSql( '今日'),
 'limit' => $limit,
);
$this->set( 今日日付の一覧, $this->paginate( 'Model' ) );


$this->paginate = array(
 'conditions' => $this->Model->getSql( '未来'),
 'limit' => $limit,
);
$this->set( 未来日付の一覧, $this->paginate( 'Model' ) );

0745nobodyさん2009/02/15(日) 05:16:04ID:???
>>739
おかげで、タグが無くなり、可読性が上がりました。
'1960-02-13'を、年、月、日に分ける処理は必要でした。
0746nobodyさん2009/02/15(日) 11:18:12ID:???
レイアウトにデータ(ログイン中のユーザー名)を渡すには、
AppControllerでsetするしかないの?
個別のコントローラでsetしたら未定義エラーになった。
0747nobodyさん2009/02/15(日) 11:59:08ID:???
できた。>746は忘れてくれ。
飲み会明けで、思考力が落ちてるわ。
0748nobodyさん2009/02/15(日) 18:54:59ID:???
たすけてー。

Openidを使うためにOpenidコンポーネントを使おうとしています。

で、バックエンドをMySQLから変更したいんだけど(Postgres使いたい)、
/components/openid.php の
getMySQLStore周辺をゴニョゴニョ弄っても認証が通らないです。

具体的には
 $db = DB::connect($dsn);で接続は出来てるんだけど、
 その後の処理の中でnonceとかassociationがDBに入っていかない
 →認証の戻りでエラー(OpenID verification failed: Server denied check_authentication)

(バックエンドをファイルベースに変えると
 認証用のファイルが作成されて、認証も通ることは確認した)

OpenidコンポーネントでバックエンドをMySQLから変える方法って
どこかに資料とか無いでしょうか……。

0749nobodyさん2009/02/15(日) 19:55:19ID:???
>>748
ポスグレの対応にはバグがあるってどっかで読んだなぁ
07507482009/02/15(日) 21:36:19ID:???
>>749
><
0751nobodyさん2009/02/15(日) 22:18:27ID:???
>>750
いや、うろ覚えだから気にしないで
07527482009/02/15(日) 23:56:08ID:???
ソース延々辿ってったら
Auth/OpenIDのMySQLとPostgresqlで
データの持ち方が何か違うくさい箇所があって、
嫌な予感はしてたのよー。

……とりあえず放置w
(この先はもう気力が持たない)
0753nobodyさん2009/02/16(月) 12:30:03ID:???
>>740

> ところで、皆様ビュー作るときのデザインってどうしてる?
> デザイン周りはDreamweaver、ロジックはeclipseで書いてるんだけど、
> ctpに落とし込むとめんどくさいのだよね。Htmlヘルパーで画像差込すると
> デザインプレビューできないし。


つ ttp://www.studio-kingdom.com/cakephp/48

.thtmの説明ですが、.ctpも一緒に追加すれば使えます
0754nobodyさん2009/02/16(月) 12:54:51ID:???
大量のデータをデータベースに登録するとか、
すっごい時間がかかりそうな処理をする時に、
プログレスバーみたいな物って、どうしてる?
出してる?
待ち時間を計るって意味もあるけど、
出さないとtimeoutしそうな心配。
0755nobodyさん2009/02/16(月) 15:05:29ID:???
simpletest入れてみた。

CakePHP Test Suite v 1.2.0.0の画面は出て
自作のテストも動くんだけど、
simpletestディレクトリの中にあるファイルの使い方がわからない。

ドキュメント見ると「tests/all_tests.php」に書け的なことが書いてあるけど、
そこに置いても適当に動かしても認識されない。

なんか便利そうなんだけどなぁ。>simpletest
0756nobodyさん2009/02/16(月) 18:43:48ID:???
一般的に自分で書いたバリデーションルールってビヘイビアに書くもの?
0757nobodyさん2009/02/16(月) 21:37:13ID:???
>>756
AppModelだろjk
0758nobodyさん2009/02/16(月) 21:44:40ID:???
>>757
根拠は?
0759nobodyさん2009/02/16(月) 21:54:17ID:???
>>758
http://book.cakephp.org/ja/view/18/
0760nobodyさん2009/02/16(月) 21:58:13ID:???
どこに何を書くのか、正直迷う事がある。

>739で教えて頂いたのはFormHelperの拡張だったけど、
同じ機能を、
class DateFormHelper extends AppHelper {
var $helpers = array('Form');
でもほぼ同じで実現できる。できるんだけど・・・
FormHelperの拡張の方がいいのか?
FormHelperを読込む方がいいのか?
パフォーマンスに違いって出る??
0761nobodyさん2009/02/16(月) 22:19:02ID:???
>>757
親クラスに手を入れてよいものなのか?
0762nobodyさん2009/02/16(月) 22:24:43ID:???
manyuaruyomekasu
0763nobodyさん2009/02/16(月) 23:02:45ID:???
>>759
それはアプリ固有の話だろ
バリデーションなら他のアプリでも流用できるんだから
ビヘイビアのほうがいい
0764nobodyさん2009/02/17(火) 00:34:45ID:???
>>763
あんた天才。
email や name っていうよく使う奴だったら validation behaviour を作って、
それにまとめてかいて actas で読み込むってことか。

ナイス、アイデア!
0765nobodyさん2009/02/17(火) 06:29:15ID:???
strutsしか触ったことないから、バリデーション記述場所に違和感が。
最近のフレームワークはみんな、バリデーションをモデルに書くものなのかな?
0766nobodyさん2009/02/17(火) 09:56:53ID:???
>>761
何のためのapp_modelだと思っているのだ、キミは。
>>763-764
複数のappで共有するためにbehaviorを使うということかな?
具体的にどうするんだろうか?
setupで、$model->validateを書き換え、ってことかな?それとも、beforeSaveを利用するの?
0767nobodyさん2009/02/17(火) 10:00:17ID:???
あれ?単に独自メソッド記述すれば、$model->hoge()が使えるんだっけ?そこでvalidateするってことか。理解したわ
0768nobodyさん2009/02/17(火) 17:55:44ID:???
paginateですが、検索条件を次の画面に引き渡したい時はセッションに入れるべきですか?
それともURLパラメータにセットすべきなの?
0769nobodyさん2009/02/17(火) 20:09:38ID:???
>>766
ModelBehaviorクラスにbeforeValidateがあるからそれを使えばいいお
0770nobodyさん2009/02/17(火) 21:53:41ID:???
これとCodeIgniterってどっちがいいの?
07715602009/02/18(水) 10:11:30ID:???
ドキュメントのコードをざっと見て、見やすい方を選択すればよろし
0772nobodyさん2009/02/18(水) 10:25:52ID:???
>>770
http://pc11.2ch.net/test/read.cgi/php/1229960175/
0773nobodyさん2009/02/18(水) 12:03:42ID:???
Googleトレンド見たらRailsに追い付きそうだ
0774nobodyさん2009/02/18(水) 16:57:38ID:???
Cake、便利なんだけど、
フォームのname属性見るだけで
データベースのスキーマが手に取るようにわかっちゃうのがなんか嫌。
0775nobodyさん2009/02/18(水) 17:04:35ID:???
それがいいんじゃないの?
0776nobodyさん2009/02/18(水) 19:23:15ID:???
それはセキュリティ的にだめだろうね
0777nobodyさん2009/02/18(水) 19:27:16ID:???
何がセキリュティ的に駄目なんだ?
もともとスキーマが分かれば攻撃できちゃうような
駄目システムがさらに弱くなるってことか?
0778nobodyさん2009/02/18(水) 19:31:09ID:???
その時完璧な対策を施しても脆弱性なんてほとんどのシステムで見つかるものだから
脆弱性が見つかった後の防御が落ちる
0779nobodyさん2009/02/18(水) 20:25:48ID:???
スキーマが?
0780nobodyさん2009/02/18(水) 20:45:10ID:???
Commercial FREE って意味はなんですか?
商用でもOKってことですか?
0781nobodyさん2009/02/18(水) 20:47:06ID:???
CMが無料ってことなんじゃないかな
0782nobodyさん2009/02/18(水) 20:47:11ID:???
>>778
要するにフィールド名がすぐにわかるようではセキュリティに問題があるということね。

なら、君は今から、
「脆弱性対策のために安易に推測できるフィールド名を使わないようにする。」
というルールを提唱するべきだ。


商品名のフィールド名を product_name にしてはいいけない。
値段のフィールド名を price にしてはいけない。
0783nobodyさん2009/02/18(水) 23:04:31ID:???
このサイトのバグって1.2で修正されてる?
ttp://blog.livedoor.jp/coelacanth_blog/archives/55093835.html
0784nobodyさん2009/02/19(木) 00:14:13ID:???
>>782
落ち着けよ。
「出さなくて済む情報は可能な限り出さない」
はセキュリティの基礎の基礎でしょうが。

>商品名のフィールド名を product_name にしてはいいけない。
product_nameだろうとfooだろうとbarだろうと
「公開されているのは、公開されていないより、
 セキュリティ的には望ましくない」

あとは生産性その他との
トレードオフでどう考えるかという話。
(でもスキーマが判るのはcakeに限らないんじゃないか?
 よく知らんけど)
0785nobodyさん2009/02/19(木) 01:07:16ID:???
>>763

でも、behavior(振る舞い)じゃぁないよね。。

振る舞いになんの?
0786nobodyさん2009/02/19(木) 09:54:12ID:???
>>785
つまり、HtmlHelper で足りないものをTextHelperで補うイメージかと。
本来のbehaviorのあり方からいくと、役割が違うというのは、今まで類似のものがない(よね?)ことからも窺い知れるが。
0787nobodyさん2009/02/19(木) 11:24:36ID:???
cake bake all
しても、なかなか1回で全ての関連テーブルを
認識してくれないのって、そのうち直るのかなぁ。
今は、何回かbake allすると、少しずつ認識される感じ。
0788nobodyさん2009/02/19(木) 12:06:46ID:???
view から layout の body タグを変更する事はできますか?

layout で <body id="bodyContainer"> とかいてあるものを使っているのですが、
いくつかの view だけ body の onload を書きたいのですが、
onload のために layout がどんどん増えるのは嫌なので、
view から body に onload を足す事できないかなぁ、と。

何かよい方法ないでしょうか?
0789nobodyさん2009/02/19(木) 12:20:59ID:???
>>788
普通にコントローラーでsetすればいいよ。
0790nobodyさん2009/02/19(木) 12:23:38ID:???
>>789
コントローラで何をセットするんでしょう?
すみません…。
0791nobodyさん2009/02/19(木) 12:47:55ID:???
それは俺はわからないよ。あなたが表示したい内容を。
0792nobodyさん2009/02/19(木) 12:54:43ID:???
うーん、すみません、よくわかりません

view\layouts\default.ctp には

<body id="bodyContainer">
<?php e($content_for_layout); ?>
</body>

とあって、コントローラからは

var $layout = "default";

としてレイアウトを利用しています。

ここで、あるビューだけ、レイアウトは default.ctp を使いつつ
body タグの内容を
<body id="bodyContainer"> → <body id="bodyContainer" onload="hoge();">

にかきかえたいですが、コントローラでどのようにセットすればいいんでしょうか?
0793nobodyさん2009/02/19(木) 13:42:29ID:???
もう解決してるとは思うけど、
setした内容は$content_for_layoutの中身だけで使えるわけじゃないです。どこでも使えます。
0794nobodyさん2009/02/19(木) 14:09:58ID:???
いえ、実はまだ理解してないんですが…。
もしかして、コントローラで、

$this->set("body", '<body id="bodyContainer" onload="hoge();">');

して、view\layouts\default.ctp の中で、

<?php e($body); ?>

こうするって事?

もしそうなら、(わがままかもしれませんが)
そのレイアウトを使う全てで body を set しないといけなくなるので、
まるごと出力じゃなくて、場合によって
追記、もしくは置換できるといいんですけど…。

いくらなんでもそこまでは無理でしょうか。。。
0795nobodyさん2009/02/19(木) 14:22:39ID:???
追記、もしくは置換したいところだけ変数にすればいいじゃないすか。
0796nobodyさん2009/02/19(木) 14:24:33ID:???
>>794
$this->set()の使い方をおさらいして、発想を変えてみましょう
0797nobodyさん2009/02/19(木) 14:45:31ID:???
>>もしくは置換したいところだけ変数にすればいいじゃないすか

そうか…そうですね…。

頭カチカチだったようです…。
情けない…。

大変ありがとうございました。
0798nobodyさん2009/02/19(木) 17:11:58ID:???
app全体で使う定数ってどこで設定するの?
0799nobodyさん2009/02/19(木) 17:50:53ID:???
bootstrapでいいんじゃない?
0800nobodyさん2009/02/19(木) 18:53:52ID:???
bootstrapが、いい
0801nobodyさん2009/02/19(木) 18:54:22ID:???
bootstrapにしろ
0802nobodyさん2009/02/19(木) 19:47:50ID:???
いや、bootstrapのほうがいい
0803nobodyさん2009/02/19(木) 19:57:34ID:???
一つのフォームから二つのテーブル、つかモデルを更新したい場合ってどうやって書くの?

そういった場合はフォームヘルパー使えないよね?
0804nobodyさん2009/02/19(木) 20:01:14ID:???
>>803
キミがやろうとすることは大体できると思って良い
http://book.cakephp.org/ja/view/547/
http://book.cakephp.org/ja/view/75/
0805nobodyさん2009/02/19(木) 20:09:14ID:???
著作権表示は必要ですか?
Cakeで構築されたサイトは表示してないですけど
どうでしょ?
0806nobodyさん2009/02/19(木) 20:13:03ID:???
>>804
即レスありがとうございます!
0807nobodyさん2009/02/19(木) 20:14:57ID:???
>>805
MITライセンスだから必要です。
0808nobodyさん2009/02/19(木) 20:22:31ID:???
うちは外には開放しないから
ライセンスの事は気にして
無かったけど。
アクセスして来る人にも
ライセンスを見せないといかんの?
0809nobodyさん2009/02/19(木) 20:26:56ID:???
薬剤師の情報?サイトライセンス表示してないですよ?
0810nobodyさん2009/02/19(木) 20:36:35ID:???
>>803みたいな場合って、
formヘルパーのcreateメソッドの$modelには何を入れるべき?nullでいい?
0811nobodyさん2009/02/19(木) 20:44:39ID:???
>>810
特に必要がなければnullでよい
0812nobodyさん2009/02/19(木) 20:45:25ID:???
え?サイト内に Cakeで作ってますよ って表示するってこと!?
0813nobodyさん2009/02/19(木) 20:48:37ID:???
>>812
そうですよ
0814nobodyさん2009/02/19(木) 20:51:27ID:???
>>811
ありがとう
0815nobodyさん2009/02/19(木) 21:05:17ID:???
memberモデルとprojectモデルを、members_projectsでつないで
HABTMにしてる。memberが1,2,3、projectがA,Bとする。
・project Aにmember 1,2が関わり、
・project Bにmember 2,3が関わる。

この状態で、project Aのmemberを1,3にすると、
project Bに関わるmemberから、member 2が消えてしまう。

たぶん自分が悪いんだろうと思うのだけど、
素朴なHABTMモデルなので、理由が分からず。。。
0816nobodyさん2009/02/19(木) 21:12:05ID:???
HABTMのuniqueでいいんじゃない?
0817nobodyさん2009/02/19(木) 21:56:13ID:???
addons.mozilla.orgってCakeで作られてることサイトのどっかに表示してる?
0818nobodyさん2009/02/19(木) 21:59:30ID:???
>>813 はあ?
0819nobodyさん2009/02/19(木) 22:05:03ID:???
ぺっ
0820nobodyさん2009/02/19(木) 22:12:17ID:???
ソースを渡すときだけじゃないの?
0821nobodyさん2009/02/19(木) 22:21:22ID:???
それこそ上の方の話じゃないけど、
「Cakeで作ってます」って表示する方が
セキュリティのリスクが高くなるじゃん。
0822nobodyさん2009/02/20(金) 00:20:06ID:???
ソースの中に書いてあればいいのでは。
0823nobodyさん2009/02/20(金) 00:40:30ID:???
そーっすね
0824nobodyさん2009/02/20(金) 00:45:27ID:???
そ・・・
0825nobodyさん2009/02/20(金) 00:52:40ID:???
しょーゆこと
0826nobodyさん2009/02/20(金) 01:01:35ID:???
>>816
815です。まさにそれでした。
'unique'=>false、とすると、大丈夫なんですね。
助かりました。ありがとう。

# trueがデフォルトらしいけど、trueの使い方が分からない。。。
0827nobodyさん2009/02/20(金) 01:07:11ID:???
>823-825
この流れは秀逸。
そーっすねというありきたりな発言から、最終的には村上ジョージになってしまうという。
0828nobodyさん2009/02/20(金) 01:39:48ID:???
アクションの最初で、

if (!empty($this->data))...

みたいに判定するのがなんか気持ち悪いんですが、
みなさんどうしてます?

RequestHandlerとか使えばいいのかな?
0829nobodyさん2009/02/20(金) 03:22:14ID:???
俺は if(isset()) だな。
0830nobodyさん2009/02/20(金) 10:08:57ID:???
>>828
思いつきだけど
オレオレComponent(かapp_controller)でチェックするのもよいかも
if ( $this->Ore->isPost() ) ...
入力補完が効く分、良いかな?
0831nobodyさん2009/02/20(金) 10:22:41ID:???
オーバーヘッドが増えるだけじゃね?
・・・って今更か。
0832nobodyさん2009/02/20(金) 15:23:39ID:???
methodひとつ分のオーバーヘッドも気になるの?
0833nobodyさん2009/02/20(金) 18:16:44ID:???
reservesってテーブルをbakeしたら、
reserfにされた。あほー
これ、どうしたらいいと思う?

1)複数形のルールを書いてbakeし直す
2)reserf→reserveに自分で全部書き直す
3)そのまま使う
0834nobodyさん2009/02/20(金) 18:40:02ID:???
>>833
1がよい
0835nobodyさん2009/02/20(金) 19:15:41ID:???
RoRで作ろうかcakeで作ろうか迷ってるんだが・・・。
0836nobodyさん2009/02/20(金) 19:16:04ID:???
RoRがいいよ
0837nobodyさん2009/02/20(金) 19:20:26ID:???
>>834
おーけー。そうした。さんきゅー。
0838nobodyさん2009/02/20(金) 19:29:22ID:???
>>836
RoRはあんまり触ったことがないんだよね。
チュートリアルやってみた感じだと、cakePHPと似てるみたいだけど。
0839nobodyさん2009/02/20(金) 20:49:07ID:???
>>838
RoR以降のフレームワークはすべてRoRのパクリだから
CakePHPも例外じゃない
0840nobodyさん2009/02/20(金) 21:11:09ID:???
railsは環境作るのが面倒
0841nobodyさん2009/02/20(金) 22:04:37ID:???
CakePHPも遅いけど、RoRはもっと遅い
0842nobodyさん2009/02/21(土) 00:44:11ID:???
cakephp1.2は1.1に比べて相当スピーディーに動くね。
1.1は重すぎる。
0843nobodyさん2009/02/21(土) 00:56:54ID:YnbiMze9
cake1.2にコンポーネントでQdmailを使おうとすると、
PHPのメモリーリミット(8M)に引っかかってエラーになってしまいます。
ローカル環境ならPHPのメモリー設定すれば使えるんですが、
本鯖は設定がいじれないので困ってます。

Qdmail使ってる方はそんなにメモリー食いませんか?
なんか軽く使えるような設定あるんでしょうか?
0844nobodyさん2009/02/21(土) 01:29:06ID:???
PHPのメモリーリミットは
用心のためのリミット。

ソフトウェアから簡単に上限を変更できる。
まあ共有サーバーでしょうから節度を守った使い方をするように。
0845nobodyさん2009/02/21(土) 02:30:33ID:YnbiMze9
>>844
レンタル鯖で、php.iniや.htaccessではダメだったんですが、
phpの中からメモリ設定してやればOKでした。ヒントどうもありがとう。
0846nobodyさん2009/02/21(土) 08:15:24ID:???
>>843
Qdmail使っているけどひっかかったことはないし、Qdmailというより、そこまでの処理だとかメールの内容とかの問題のように思うが。
0847nobodyさん2009/02/21(土) 11:34:41ID:???
Qdmailってホント便利だよね〜。作者に感謝。
メール本文は当然、タイトル(見出し)、送信者名の日本語が絶対文字化けしない。
CakePHPで安心して日本語メールが送れる。

Qdmailの使い方 CakePHPでのメール送信
http://hal456.net/qdmail/cakebase#c

※CakePHP1.2から「Emailコンポーネント」が標準装備されたが、日本語メール送信
には少々難あり。残念!
0848nobodyさん2009/02/21(土) 15:29:15ID:???
俺は標準のEmailコンポーネントをサブクラス化して使ってる。
問題ある部分の文字コードなどを変換して送信とかしてる。
必要な部分しか対応していないけど。
0849nobodyさん2009/02/21(土) 17:11:38ID:???
>>848
問題のある部分ってどこなの?
to , from , subject であってる?他もある?bodyとか

結局Qdmail使ってるんだけど、本当はMailComponent使いたいんだよね。
0850nobodyさん2009/02/21(土) 17:37:44ID:???
誰か、Blog Plugin 公開してくれないかな
08518432009/02/21(土) 17:49:16ID:???
>>846
そうですか。使い方はいたって普通というか、Qdmailのサイトに乗っている通りの使い方です。

例えば、users_controllerで登録したユーザーにメールを出すという感じの使い方で、
var components = array('Qdmail'); として、
function _sendusermail() みたいに関数にして作ってます。

でも、users/index みたいにQdmailを使わないアクションを呼び出しても、
メモリエラーが出ます。var components からQdmailを外すとエラーは出ません。
ので、Qdmailを読み込んだ時点でメモリを凄く食ってるのかな。と思ってるのですが。

とりあえず、ini_set("memory_limit", "-1"); とやって制限を外すことで動きました。
0852nobodyさん2009/02/21(土) 18:00:40ID:???
>>849
CakePHP1.2のEmailコンポーネントは、
ファイル添付で、日本語ファイル名もNGじゃなかったかな?

Qdmail使っとく方が悩まなくて良いと思うけどなあ?
なぜ、EmailComponent使いたいの?
0853nobodyさん2009/02/21(土) 18:14:23ID:???
>>849
CakePHP 1.2.0.6311-betaの08/02/21のEmail Componentの調査報告
p.19〜p.28に日本語メールの事が書いてある。
http://handsout.jp/slide/225
0854nobodyさん2009/02/21(土) 23:31:08ID:???
urlのどこかに(ユニークな)セッションIDを追加するとして、
他の、例えばpagenatorの変数と干渉せずに、追加して、
取得するには、どうしたら良い?
0855nobodyさん2009/02/22(日) 00:10:27ID:???
>>854
namedにでも入れとけばいいよ。
paginatorとかで使われないなら無視されるし。
0856nobodyさん2009/02/22(日) 00:50:22ID:???
>>855
当たり前かもしれませんが・・・
アクションに渡すパラメータが先で、
namedに入れるのはurlの最後ですよね?
0857nobodyさん2009/02/22(日) 04:45:42ID:???
もしくは、pagenatorを使うなら、

/model/view/1
とかして、
function view($id) {
で$idを取得せずに、

/model/view/id:1
function view() {
$id = $this->params['named']['id'];
みたいにして取得した方が無難?
0858nobodyさん2009/02/22(日) 10:08:35ID:???
DBがujisでビューとコードがUTF-8だと、saveしたときに「嵜」「〜」「@」が化けますよね。
それで出力はeucJP-winからUTF-8にして、保存はUTF-8からeucJP-JPにしたいのですが、何か良い方法はありませんか。
0859nobodyさん2009/02/22(日) 10:18:13ID:???
>>858
http://book.cakephp.org/ja/view/40/
encoding
0860nobodyさん2009/02/22(日) 10:19:25ID:???
おはよう。
ググったら、「pagenator使う時にはGETのパラメータは
無効になる」って書いてる所があったけど。
試してみたら、
/model/view/sort:id/1とか、間に他のパラメータが入ってても、
viewのアクションの引数に1が渡ってた。すごい。

そうすると。$html->link()で、urlに'id:1'とかを挿入する
スマートな方法があれば良いんですけど。
$named='/id:'.$id;
echo $html->link('Enter', '/pages/home'.$named, $htmlAttributes);
みたいに書き替えて行かないとダメですかねぇ?
$htmlAttributesに追加する方法とかありますか?
0861nobodyさん2009/02/22(日) 10:31:34ID:???
>>859
database.phpの設定は既にutf8なので、他の文字は化けません。
新JISが化けるんです。
0862nobodyさん2009/02/22(日) 12:31:33ID:???
>>861
なぜにutf8なの?
0863nobodyさん2009/02/22(日) 13:17:59ID:V5qtKih8
>>861  >>862
そうだよねえ。database.phpの設定はujisで、
encodingでハンドリングするんだよねえ。
0864nobodyさん2009/02/22(日) 13:25:06ID:???
>>863
日頃の行いの悪い奴は、IDが公開される
0865nobodyさん2009/02/22(日) 13:33:04ID:???
>>862
database.phpのencodingをutf8にすると、内部でSET NAMEされているようで表示は問題ありません。
ただ、それだと保存したときに新JISが登録出来ないので、database.phpの設定をujisにして、ビューに渡すデータはeucJP-winからUTF-8にして、モデルに渡すデータはUTF-8からeucJP-winにしたい、ということです。
紛らわしくてすみません。
0866nobodyさん2009/02/22(日) 15:38:22ID:n5m/3HJ0
railsがcakephpより遅いとか誰が言い出したのかね〜?
railsの方が断然はやいよ。測定するまでもない。数倍違うから体感できる。
0867nobodyさん2009/02/22(日) 16:08:49ID:???
>>865
よく分かってないけどDBの文字コードは変えられないという仮定で。
一般的には、beforeSaveとafterFindで変換だけど、それじゃだめってこと?
0868nobodyさん2009/02/22(日) 16:21:57ID:???
>>866
早いとかそれ以前にRubyは後方互換性が低いからどうも・・・
0869nobodyさん2009/02/22(日) 19:20:17ID:mjuU1FsC
バリデーションはDB使わない場合は使えないの!?

$useTable = false;

しても、バリデーションしようとするとDBエラーが出るよ・・・(;´Д`)
0870nobodyさん2009/02/22(日) 19:27:43ID:???
エラーが出るのは $form->error() ね
0871nobodyさん2009/02/22(日) 19:32:35ID:???
仕様ですか、そうですか

http://cakephp.jp/modules/newbb/viewtopic.php?post_id=2771&topic_id=1317&forum=6

柔軟性のないFWだなあ…
0872nobodyさん2009/02/22(日) 19:56:41ID:???
解決方法がみつかるだけマシ
0873nobodyさん2009/02/22(日) 20:31:34ID:???
フォームの入力値をtrimするとして
モデルでやったほうがいいのかね?
コントローラー?
0874nobodyさん2009/02/22(日) 20:48:45ID:???
>>873
個人的にはコントローラ、コンポーネントのような気がする。
0875nobodyさん2009/02/22(日) 21:09:32ID:???
>>873
どちらがベターかと言えばModelだろうねえ
Controller(やComponent)でやるほうが簡単だったりするがMVC的にM

でもオレオレ解は、確認画面つくらないなら、Javascriptでやる
0876nobodyさん2009/02/23(月) 00:31:13ID:???
>>867
ありがとうございます。
>>867さんのヒントで自己解決しました。
0877nobodyさん2009/02/23(月) 04:12:40ID:???
>>873
モデルに一票。trimビヘイビア作るのもいいかもしれない。
ところで 自分は euc-jp で何度も痛い目あってutf-8オンリーでここ数年プログラムやってるけど
euc-jp で組んでる人ってなぜeucなの?
0878nobodyさん2009/02/23(月) 07:01:24ID:???
>>877
今まで(今でも)euc-jpで書かれたベタのPHPアプリが多く、php.iniがeuc-jpになって
いて変更出来ない。utf-8用サーバをもう一つ立てる事は費用対効果が許してくれない。
みんなPHPからCakePHPへ移行するのを面倒がる。メンテが主で、新規は少ないんだから
PHPのままでいいんじゃんとみんな消極的。(Cakeで作ったものを見ると、やっぱFWは
良いねえとは言うけど)
0879nobodyさん2009/02/23(月) 07:58:49ID:???
CakePHP Users in Japanフォーラムの記事が昨日から開けないんだけど、俺だけ?
ttp://cakephp.jp/modules/newbb/
0880nobodyさん2009/02/23(月) 07:59:36ID:???
CakePHP使ってる人って、Railsから移行してきた人が多いのだろうか?
0881nobodyさん2009/02/23(月) 08:52:50ID:???
>>880
逆だろ。railsは運用のハードルが高いからphpでってのが多いんじゃない。
0882nobodyさん2009/02/23(月) 09:10:43ID:???
RoRは導入コストが…。
0883nobodyさん2009/02/23(月) 09:26:12ID:???
導入にコストなんて無いだろ
対応したエンジニアが居れば良いだけ
0884nobodyさん2009/02/23(月) 09:41:24ID:???
手間=コスト
0885nobodyさん2009/02/23(月) 10:35:42ID:???
たった2行で矛盾を表現する>>883の才能に嫉妬
0886nobodyさん2009/02/23(月) 14:36:47ID:???
>>878
なるほど。自分も以前euc-jpで作ったサイトをutf-8に変更するの相当面倒だったもんなー。
0887nobodyさん2009/02/23(月) 17:39:27ID:???
cakephpのmodelが関連データを引っ張って来てくれる機能は
非常に強力でありがたいが。関連が複雑になる(数が増える)と
hasOneやbelongToなどがどこまでデータを持ってくるのか、
未だに把握できてない。
簡潔明瞭に説明してくれてる所はないものか。
0888nobodyさん2009/02/23(月) 18:58:53ID:???
FORMヘルパーでセレクトボックスを生成する場合なんですが、
テーブルにfirst_nameとlast_nameというカラムがある場合、この二つを結合した値をセレクトボックスのラベルとして表示したい時はcombineを使うしかないんですかね?

railsだともっと簡単にできるんでしょうか・・・。
0889nobodyさん2009/02/23(月) 19:45:35ID:???
>>888
第2引数が値と表示名の配列になっていればよいので、自分で配列作ってあげればよい
0890nobodyさん2009/02/23(月) 20:03:44ID:???
>>875
Javascriptでやる
(ぷぷ)
0891nobodyさん2009/02/23(月) 20:15:25ID:???
javascriptからPHPのプログラムを呼びたいんですが、
この時PHPのプログラムはコントローラに当てはまるんですかね?
また、どのディレクトリに置けばいいんでしょうか?
0892nobodyさん2009/02/23(月) 21:32:43ID:???
addressフィールドを扱うaddressモデルからprefectureフィールドを
参照する時って、addressモデルにアソシエーションが書いてあれば、
prefectureモデル(model/prefecture.php)って作らなくても大丈夫?
0893nobodyさん2009/02/24(火) 00:07:55ID:???
>>891
cakeのアクションとして呼び出すならコントローラだし、
cakeと全然関係ないならvendorsとかにいれとけばいいのでは。
0894nobodyさん2009/02/24(火) 07:17:11ID:???
>>879
セキュリティソフトを一時停止にしたら閲覧出来る様になった
0895nobodyさん2009/02/24(火) 07:58:11ID:???
>>893
なるほど。参考になりました。
0896nobodyさん2009/02/24(火) 08:00:04ID:???
>>890ってJavaaScriptオフだと効かないとかサーバーサイドでチェックしないと漏れがあるじゃんとでも言いたいのかな
0897nobodyさん2009/02/24(火) 08:44:03ID:???
>>896
まあ普通はそうだね。
クライアントサイドのバリデーションはおまけだから。
0898nobodyさん2009/02/24(火) 08:50:43ID:???
AuthCompornentを使っていて、login成功した際に、
loginした時間をデータベースのusersに記録したいのですが、
その処理はどこに書いたらいいんでしょう?

usersのloginアクションは認証前には来るけど、
認証が成功するとそれぞれのページに飛んでしまう。
login成功後(だけ)に処理させてくれる場所が分からない。
0899nobodyさん2009/02/24(火) 10:01:51ID:???
>>897
trimはバリデーションでもサニタイズでもないから漏れ上等ってならjsでも問題ないと思う
0900nobodyさん2009/02/24(火) 10:03:12ID:???
>>898http://book.cakephp.org/ja/view/395/autoRedirect
0901nobodyさん2009/02/24(火) 10:39:36ID:???
>>900
感謝

auth読んでたつもりだったが orz
0902nobodyさん2009/02/24(火) 12:21:07ID:???
jQueryヘルパーって役に立つ?
0903nobodyさん2009/02/24(火) 14:37:24ID:???
モデルで
function beforeFind($qd) {
$qd['conditions'] = 'delete_flag = 0';
return $qd;
}
こうすると、delete_flagが0の物しかfindされません。
普段はこれで良いのですが、まれにdelete_flag =1
のデータも検索したい時には、どうしたら良いでしょう?
0904nobodyさん2009/02/24(火) 14:58:00ID:???
>>903
Model::find()をオーバーライドする
0905nobodyさん2009/02/24(火) 15:55:29ID:???
findそのものをオーバーライドすれば、paginatorでも
有効のようですね。ありがとうございます。やってみます。

やりはじめたのですが。なんとなく、設定を解除しながら
使うよりも、そのつど設定した方が簡単なような気がして
きました。
どこにどのように設定されているか確認しながら解除する
必要があるため、厳密にやるとちょっと面倒。
0906nobodyさん2009/02/24(火) 17:53:07ID:???
cake.generic.cssの代わりのスタイルシートを作りたいんだけど、気をつけることってありますか?
0907nobodyさん2009/02/24(火) 17:54:24ID:???
…死ぬなよ。
0908nobodyさん2009/02/24(火) 18:12:40ID:???
>>906
ないよ。CSSなんて所詮CSS。
0909nobodyさん2009/02/25(水) 09:37:56ID:???
FORMヘルパーのcreateメソッドで生成されるformタグに
action属性が付かなくするにはどうすればいいですか?
0910nobodyさん2009/02/25(水) 09:48:59ID:???
>>909
こうじゃね? array('action' => '')
0911nobodyさん2009/02/25(水) 09:50:02ID:???
アプリケーション全体の設定はbootstrap.phpに
書くのが基本なんだろうけど、ユーザーがブラウザ
から変更できると良いこともあるので、どこかに
設定ファイルを持ちたいのだけれど。
どこに、どういう形で置くと、無駄が少ないだろう?
データベース?に配列ごとぶち込む?
設定ファイルに書くとしたらどこに、どんなふうに?
Cake流のやり方とかありますか?
0912nobodyさん2009/02/25(水) 10:33:30ID:???
>>911
bootstrap.phpにconfig()を記述して、外部の設定ファイルを読めばいいと思う
0913nobodyさん2009/02/25(水) 10:39:26ID:BZ8YN1wt
A←B←C
(←は多対1)

みたいなモデル構成のときに、$this->A->find()
する場合に、Cのカラムで検索条件を指定するのって
どうすればよいのでしょうか。

find時のrecursiveは2にしていますが、どうもうまく出来ません。
デバッグ情報を見てみると、
A←BのJOINしかしていないように見えるんですが。。。
0914nobodyさん2009/02/25(水) 12:10:26ID:???
>>912
そうだよね・・・。ありがとう。
データベースに入れると、処理が無駄っぽいかな。

外部の設定ファイルって、どこに置くのが安全で便利?
0915nobodyさん2009/02/25(水) 13:32:40ID:???
Authのlogin viewをユーザ種別毎に切り替える場合、
みなさんどのようにしてますか?

辿ってきたcontroller名からviewを切り替えてますが、
他に良い方法ありますか?
0916nobodyさん2009/02/25(水) 13:57:01ID:???
>>910
うーん、消えませんでした。
array('default'=>false)でsubmitはしなくなるようですが。

ヘルパー使わずに直接記述すると何かデメリットありますか?
0917nobodyさん2009/02/25(水) 13:59:47ID:???
>>916
そうか。失礼。
SecurityComponent使わなければ問題ない。
0918nobodyさん2009/02/25(水) 14:26:00ID:???
>>914
マニュアルのConfigurationクラスの所に書いてあるよ。
0919nobodyさん2009/02/25(水) 14:34:22ID:???
>>913
コンテイナブル使って持ってこれねえですか?
0920nobodyさん2009/02/25(水) 14:43:45ID:???
Paginator helperにXSSの問題
http://cakephp.jp/modules/newbb/viewtopic.php?topic_id=1779&forum=9&viewmode=flat&order=ASC&start=0

...orz
0921nobodyさん2009/02/25(水) 14:58:32ID:???
アソシエーションをどんな時に使えば良いのかわからない。
親になるモデルからクエリキャッシュしながらキーを取ってきて、
動的に扱う子のモデルにキーを渡した方が良いと思うのだが…。
0922nobodyさん2009/02/25(水) 15:48:03ID:???
マニュアルにとてもよい使用例があると思いますが...
0923nobodyさん2009/02/25(水) 18:27:28ID:???
>>918
Configure::load の説明だと思うのですが。
あれだとスタティックな設定の読み込みですよね?
変更するには、直接ファイルの書き替えが必要なのでは?

できれば、(あの例なら)sloganをアプリの中から、
書き替えたいのです。

Configure::writeしたものって、どこに保存されてるんでしょう?
ちょっとコントローラに書き込み/読み込みするものを書いて
みたのですが。
直後にConfigure::readすると出てくるけど、コントローラを
再読み込みすると消えてしまう。
0924nobodyさん2009/02/25(水) 18:57:27ID:???
>>920
あのヘルパそのまま使うやつなんていたのか?
0925nobodyさん2009/02/25(水) 22:27:20ID:???
>>913
逆に考えるんだ。jojo
B belongsTo C
B hasMany A

app/model/a.php
<?php
class A extends AppModel {
$var $hasMany = array('B' => array('className' => 'B'));
function useConditionForC($id) {
$conditions = array('A.id' => $id, 'C.foo' => 'hoge');
return $this->B->find('all', array('conditions' => $conditions));
}
}
?>

app/controller/as_controller.php
<?php
class AsController extends AppController {
function index($id) {
$this->set('data', $this->A->useConditionForC($id));
}
}
?>
0926nobodyさん2009/02/25(水) 22:28:49ID:???
あ、「A belongsTo B」だったw
0927nobodyさん2009/02/25(水) 23:17:48ID:???
横からだが参考になった。ありがとう。
(ちょっと複雑な検索は普通にゴリゴリSQL書いてたw)
0928nobodyさん2009/02/26(木) 10:33:25ID:???
Configureクラスって便利?
昨日から格闘してるけど、なかなか思い通りにならないorz
0929nobodyさん2009/02/26(木) 11:19:14ID:???
>>928
やろうとしていることが間違っているんじゃない?>>923と一緒で
0930nobodyさん2009/02/26(木) 12:00:53ID:???
うん。間違ってるんだと思う。

ユーザーが書き換え可能な設定って、
どこに書いて、どう保存するのがいいの?
0931nobodyさん2009/02/26(木) 12:06:49ID:???
>>930
もうちょっと具体的に書いてくれないと分からないんだよね
ユーザーが書き換え可能な設定って何?(ユーザーって誰?アクセスする人全員?ユーザー登録した人?管理者?)
0932nobodyさん2009/02/26(木) 13:00:29ID:???
例えば・・・
店長が、店名や電話番号、スローガンを書き替えたりする感じ。
店名とかの情報は、他の店員などのユーザーが共通して引用する。

店長が/app/config/のファイルを直接編集すれば、アプリとしては
何もしなくていいので楽だけど・・・できれば、してもらいたくない。

というか、/app以下に、アプリ以外の情報は入れたくないんだった。
(アプリのバージョンアップは、/appの入れ替えで考えてる)
そうすると、Configure::loadもダメじゃん orz

やっぱ、データベースに入れるか。
bootstrap.phpからモデルにアクセスできるっけ?
0933nobodyさん2009/02/26(木) 13:38:44ID:???
>>932
1app=1店舗 という理解でよいのかな?
だとすると、個人的な意見としては、DBに保存するのが、Cake的に楽だと思う。
0934nobodyさん2009/02/26(木) 13:41:34ID:???
>>932
勘違いしてそうだから補足すると、データはcontrollerで読み込む
0935nobodyさん2009/02/26(木) 14:24:14ID:???
>>933
>1app=1店舗
そうです。
DBに入れるのが楽ですか。

>>934
DBからデータを読み出すのは、bootstrapじゃなくて、
app_controllerからってことでしょうか?

confモデルとかを、app_controllerで、App::importで
インスタンスにして読み出して、$Controller::set()で
適当な変数(例えば、$this->data['confs'])にセット
して(viewに渡して)おけば、どこからでも使える?

あ。なんとなくダメっぽい気がする。
0936nobodyさん2009/02/26(木) 14:31:11ID:???
>>935
それでいいと思います。というかやってみようぜ。すぐ結果わかるんだから。
0937nobodyさん2009/02/26(木) 14:35:36ID:???
>>935 for example
# app_controller.php
# beforeFilter() or beforeRender()
$this->set('shop' ,$shop = $this->Shop->find('first' ,$options));
0938nobodyさん2009/02/26(木) 14:38:58ID:???
Configure::storeでファイルに書いちゃってもいいんじゃないの?
マニュアルには出てないからAPIの方を見てください。
0939nobodyさん2009/02/26(木) 14:48:53ID:???
>>938 へえこのメソッド知らなかった。勉強になるわ
0940nobodyさん2009/02/26(木) 15:04:17ID:???
>>938
Configure::loadとConfigure::storeのパスを
app/config以外に変更できればいいのですが。
0941nobodyさん2009/02/26(木) 15:14:22ID:???
Configure::load('../../appconfs');
とかなら可能だけど・・・あんまりお勧めできないわな。
0942nobodyさん2009/02/26(木) 15:56:30ID:???
http://unkar.jp/read/pc11.2ch.net/php/1194976228
の258に出てた。

>・Configure::store('AAA', 'a', array('data'=>'123'));で値保存。
> /app/temp/cache/persistent/a.php ができる。
> Configure::load('a'); でa.phpファイル読み込み
> pr(Configure::read('AAA')); で保存した値表示。

確かに、その場所に保存されてた。うーむ。
09439382009/02/26(木) 16:01:56ID:???
あーごめん、Configure::storeはキャッシュ的な使い方用なんだね。
じゃあ設定自体はDBに入れといて、
storeしておけばどこからでもConfigure::readで使えるってぐらいかな。
0944nobodyさん2009/02/26(木) 17:11:49ID:???
>>943
なるほどね。expiresが長いけど、cacheファイルが無くなる可能性を考えると
bootstrapでConfigure::loadして、読み込めなかったらapp_controller等でfind & Configure::store
あとは、afterSaveでConfigure::storeする感じか
0945nobodyさん2009/02/26(木) 18:02:14ID:/EQHTY5K
すいません質問させてください。

アソシエーションされたモデルのビヘイビアって動作しないのでしょうか?
何か動作させる方法があれば教えてください。

ModelAに
hasMany=>ModelB
とあるとして、
ModelA,ModelB両方にactsAsで同一ビヘイビアを呼び出している場合、

ModelA->find等とした場合に、ModelAはビヘイビアが効いていますが
ModelBには効きません。

これは正常動作ですか?何とか回避する方法はありますでしょうか?
0946nobodyさん2009/02/26(木) 18:18:14ID:???
>>945
ビヘイビアによると思うのだが。何使ってる?
0947nobodyさん2009/02/26(木) 18:22:59ID:/EQHTY5K
どれというより、基本的にmodelBから呼ばれてないので
自作してる途中に気付きまして。
ビヘイビア側で対応する必要があるんですかね??

ただ、ちょっと今配布物みてそれがきちっと動くなら参考に・・と思って
AttributeBehavior
http://bakery.cakephp.org/articles/view/attributebehavior-dry-and-powerful
これやってみたんですが、
やはりアソシ先には効いてないですね。

動作するビヘイビアがあれば参考までに教えていただきたいです。
0948nobodyさん2009/02/26(木) 18:32:29ID:???
>>947
いやsettingがかぶらない処理がしてあるから動くのかと思っただけ。アソシエーションの場合じゃないんだな
アソシエーション先のModelにもattachするとか、アソシエーション先のModelの処理も元ビヘイビアに書いちゃうとか、だめかい?
0949nobodyさん2009/02/26(木) 18:38:25ID:/EQHTY5K
AttributeBehavior見てみましたが
 setupは両方のモデルから呼び出されていますね
 afterFindは親モデルからしか呼び出されないですね

当然といえば当然なんですかね。


>アソシエーション先のModelの処理も元ビヘイビアに書いちゃうとか、だめかい?
それしかないかなと思うんですよね。

09509452009/02/26(木) 21:46:08ID:/EQHTY5K
私は残念ながら英語が苦手なのですが、
おそらくまったく同じ質問を英語で見つけました。
coreを改変する云々言ってるようですね。


ModelA hasMany ModelB
ModelB actsAs SomeBehavior

SomeBehavior defines afterFind()

ModelAController::someAction() has:
$this->ModelA->recursive = 1;
$this->ModelA->findAll();

Will SomeBehavior::afterFind() be triggered for ModelB, since ModelB
will be retrieved via association to ModelA?

http://groups.google.com/group/cake-php/browse_thread/thread/5f3d90e3686f191b/c3bb61dfb902b8c9?lnk=gst&q=afterfind
0951nobodyさん2009/02/27(金) 01:00:21ID:???
IRCの#cakephp-jaって、フォーラムで見かける名前の人がけっこう常駐してるな。
そこで質問したらすぐ答えてくれるのかな。
0952nobodyさん2009/02/27(金) 04:38:34ID:???
Authを使う際の、Usersフィールドのusernameとpasswordって、
例だとvarcharになってるけど。これをBLOBとかにしても大丈夫?
(データベースはMySQL)
今は、varchar(100)で使ってるんだけど。phpmyadminで
ユーザー名とかが丸見えなんだよね。
気休めでしかないのは分かるけど・・・BLOBなら、phpmyadmin
では表示されないので、大丈夫なら変更したいんだけど。
0953nobodyさん2009/02/28(土) 01:34:16ID:???
beforefindでfindのタイプを知ることできますか?
allなのかfirstなのかlistなのかなどです。
0954nobodyさん2009/02/28(土) 08:09:52ID:???
なんか人のオーラが見えるとかいう何の役にも立たない糞サービスあるみたいだけど意味ないな
0955nobodyさん2009/02/28(土) 09:24:09ID:jSeVzlRv
モデルとか関係なくコントローラーでSQLを実行したいのですが、
ダミーのテーブルなしモデルを使う以外の方法はありますか?

App::import('Core', 'DboSource');
$data = DboSource::query($sql);
とかやってみたのですが、DataSourceクラスがないと言われ、
DataSourceもApp::importしてみたのですが、同様でした。
0956nobodyさん2009/02/28(土) 09:25:12ID:???
>>953
何のために知りたいか分からんから外してるかもだが、beforeFindではなく、Model::find()で判定すれば確実では?
0957nobodyさん2009/02/28(土) 20:25:45ID:???
>>955
$db =& ConnectionManager::getDataSource('default');
$result=$db->query('SELECT 〜');
0958nobodyさん2009/03/01(日) 21:42:51ID:???
Qdmailで複数宛先にメールが送れなくて困ってます。(5ヵ所に同じメールを送りたい)
↓ここを見て
http://hal456.net/qdmail/oopbase
$to = array('hoge@example.co.jp', 'foo@example.co.jp');
$this->Qdmail->to( $to );
としましたが、hogeにもfooにもメールが届きません。
$this->Qdmail->to('hoge@example.co.jp');
$this->Qdmail->cc('foo@example.co.jp');
にするとhogeとfooの両方に同じメールが届きQdmailが動いている事が確認出来ました。
解決のアドバイスをください。

さくらスタンダード、CakePHP1.2.1、Qdsmtp0.2.0a、Qdmail1.2.6b
0959nobodyさん2009/03/01(日) 22:01:11ID:???
>>958
自己解決しました。
$to = array('hoge@example.co.jp', 'foo@example.co.jp');
$toName = array('hoge', 'foo');
$this->Qdmail->to( $to, $toName );
のとおり$toNameで相手先名を設定する事で複数宛先へメールを送る事が出来る様になり
ました。お騒がせしました。
0960nobodyさん2009/03/03(火) 15:11:04ID:???
textareaにJavascriptのエディター
(たとえばNicEditとか)を付けるには、
どうしたらいいですか?
0961nobodyさん2009/03/03(火) 16:47:53ID:???
>>960
http://bakery.cakephp.org/articles/view/using-tinymce-with-cakephp
この辺が参考になるのでは。
つうかJavascriptをどっかで貼付るだけだけどね。
0962nobodyさん2009/03/03(火) 17:32:49ID:???
なるほど。思った以上に簡単そうですね。ありがとう。

あとは、CakePHPの変態cssを何とかしたい・・・
0963nobodyさん2009/03/03(火) 20:26:38ID:???
スタイルシート外しちゃえば?
0964nobodyさん2009/03/04(水) 13:58:49ID:???
CSSで苦労している人はこれを参考にすれば良いよ
http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1421&forum=7
0965nobodyさん2009/03/04(水) 16:22:08ID:???
こういうの見てていつも不思議なのは・・・
なんで横幅を固定するのかなぁ?
リキッドレイアウトにした方がいいのに。
0966nobodyさん2009/03/04(水) 20:19:52ID:???
横幅を固定にしたほうがレイアウトに苦労しないから。

背景ひとつにしてもリキッドレイアウトだと
横に広げても違和感ないような同じパターンの
繰り返しの絵しか使えない。

不自然な空白は見た目が悪い。
0967nobodyさん2009/03/05(木) 00:39:26ID:???
>>966
同意。リキッドレイアウトもいいけど、その時々で使い分けるのがいいよね。
0968nobodyさん2009/03/05(木) 00:47:12ID:???
横幅固定に肯定的な意見が続きますね。

さて。>964の様な追加のcssを適用するのは、
どうするのがCake流?
cake.generic.cssを書き替える、上書きする?
それとも、別ファイルにして読込む?
0969nobodyさん2009/03/05(木) 00:49:36ID:???
>>968
自分は cakephpのcss は完全に捨てる。
で、 blueprint.css という cssフレームワークを使ってデザインしてきます。
0970nobodyさん2009/03/05(木) 08:02:38ID:???
Cakeで国際化したいのですが、
データベースの内容を言語別に出力できる仕組みなどはあるのでしょうか?
それとも、自分でURLなどから振り分ける必要があるのでしょうか?

どなたかわかる方がいましたら、教えてください。
0971nobodyさん2009/03/05(木) 09:39:03ID:???
>>970
国際化の仕組みはある。
言語別に出力するのはぐぐれば出てくるよ。確かgooglebotの場合に気をつけなきゃとかはあったはずだけど。
0972nobodyさん2009/03/05(木) 09:43:56ID:???
>>969
>>964-965はあくまでFormHelper向けのCSSの話。それ以外はみんな独自でしょ。多分。
で、微妙にスレチついでに悪いけど、blueprintってネガティブマージンみたいなことできるの?
「左・メイン・右」のようにカラムがあるとき、できればメインから記述したいのだが。
0973nobodyさん2009/03/05(木) 13:24:47ID:???
>>972
あ・・・そうなんだ。フォームだけか。フォームヘルパー使わずベタ書きしてるから
気にもとめなかった。

ネガティブマージンとかわからない。わかれば教えたいけど。
にしてもblueprintは便利。
0974nobodyさん2009/03/05(木) 15:44:09ID:???
アクセス解析とかクリックカウンターって
プラグインやらなんやらないかと探したけど見つからないんですが
よく使う機能だと思うんですけどみなさんどうされてますか?
0975nobodyさん2009/03/05(木) 16:51:37ID:Oid1bNoJ
便利すぎ
0976nobodyさん2009/03/05(木) 18:57:33ID:???
ボタンが複数あるページからの submit を、どのボタンが押されたか判断するために、

$this->params['form'] を使えばいいのかな、と思ったんですが、
試しにコントローラで
pr ($this->params['form']);
を見てみたら、結果が
Array
(
)

となります。 $this->data には post された値は入ってきます。

post されたパラメータを取得するのにはどうしたらいいですか?
0977nobodyさん2009/03/05(木) 19:24:56ID:???
submitにvalueが入ってたら
$this->data['submit']でとれんでねーの?
0978nobodyさん2009/03/05(木) 23:13:28ID:???
hiddenかなんかで渡してるんじゃないの?
0979nobodyさん2009/03/05(木) 23:17:52ID:???
普通にbuttonのnameでボタン名が渡るでしょ
paramsに
0980nobodyさん2009/03/06(金) 12:18:30ID:6wpuU2ya
Emailコンポーネントで、添付ファイルを送りたいのですが、
サーバーにファイルの実態がないとだめですか?

PDFをFPDFで作成しているのですが、文字列でアウトプットして、
ファイル名をつけてそのまま添付したいのですが。
0981nobodyさん2009/03/06(金) 16:00:33ID:???
>>980
requestActionじゃだめかな?
09829812009/03/06(金) 16:01:39ID:???
ああ、ごめん。忘れて
0983nobodyさん2009/03/06(金) 20:35:07ID:???
実態作って添付じゃだめなの?
実態作りたくなければ、
バウンダリー云々して自分でメール組み立てればいいだろうけどめんどくさそう。
0984nobodyさん2009/03/07(土) 08:43:19ID:???
>>970
http://book.cakephp.org/ja/complete/92/%E7%BF%BB%E8%A8%B3
翻訳ビヘイビアというのがあってな
0985nobodyさん2009/03/07(土) 22:32:36ID:???
XSSの脆弱性が発見されたというのに、
なかなかバージョンアップこないね。
レス数が950を超えています。1000を超えると書き込みができなくなります。