【PHP】フレームワーク CakePHP 7ホール目【v1.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2009/09/01(火) 16:12:06ID:XVdxsVut※sage推奨
テンプレは>>1-5くらい
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
the Bakery
http://bakery.cakephp.org/
thechaw
http://thechaw.com/projects
CheatSheet (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
http://book.cakephp.org/ja
CakeMatsuriTokyo2009
http://matsuri.cakephp.jp/
0084nobodyさん
2009/09/11(金) 21:02:25ID:???あ、ごめん。数ヶ月前に見たけど出来なかったサイトがあったんだけど、
もう一度見たら出来たわ。ごめんあさい。
http://www.a24loveweb.net/cake/%E9%81%8B%E7%94%A8%E6%99%82%E3%81%ABphp%E3%81%AE%E3%82%A8%E3%83%A9%E3%83%BC%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95/
これね!
008565
2009/09/12(土) 00:56:23ID:???いやあ、勝手にパースされて`が変なところに付くということなんで
SQLを変えても意味がないというか。
$this->Table->selectAdd('tables.created + INTERVAL '.$this->Table->escape('$hour').' HOUR AS hoge');
みたいなのがあればいいんだがなあ、と。
>>67
EC-Cubeは使ったことないからわからないが、
今回は単純なSQLだからいいけど、
複雑なのだと非常にパフォーマンス上問題になりそうなのでご勘弁願いたい。
つうかDB乗り換えるような変更があったとしたら、
SQLだけ対応しててもそのまま動くとは思えないんだが。
0086nobodyさん
2009/09/12(土) 01:13:40ID:???preg_match('/(?:\w+\.)?(\w+)/', $options['sort'], $result)
とか書いてあるけど全然意味がわかりません。
008712
2009/09/12(土) 11:58:30ID:???toのUser.idを格納するフィールドを作りました。
Post.user_id
Post.from_user_id
と作成し、
'from_User' =>array('className' => 'User','foreignKey' => 'from_user_id'),
'to_User' =>array('className' => 'User','foreignKey' => 'user_id'),
のように$belongsToを設定しました。
ここでPostの編集画面(edit)でそれぞれのUserを選択させるコンボボックスを表示させる場合に
他所でbakeしたソースを見ると
$users = $this->Post->to_User->find('list');
$this->set(compact('users'));
こうセットしているようなのですが、これだけだとfromの方はtextでidがそのまま出てしまいます。
試行錯誤の結果
$from_users = $this->Post->from_User->find('list');
$this->set(compact('from_users'));
が必要なことがわかったのですが、ここの$from_usersという名称はどこで関連付けた名前なのでしょうか。
toの方は$usersで良いのがなぜだかわからず。
ためしに$usersを$to_usersにしたら動かなくなりました・・・。
モデルの基本的なところが理解できていないかもしれませんが、
こういう場合はどのようにするべきなのでしょうか。
わかりにくい質問ですいません。
0088nobodyさん
2009/09/12(土) 12:05:02ID:???ちゃんとやってみたのか?>>66の言うとおり
$this->Table->find('all',array('fields'=>'DATE_ADD(Table.created, INTERVAL 1 HOUR) as hoge'));
でいけるはずだぞ。
>>86
普通は第2引数は指定しないと思う。
そうするとデフォルト値とquery stringをマージして現在のソートキーを返してくれるから。
$options['sort']は、'Model.id'みたいなのから'id'を取り出してるだけじゃなかろうか。
008982
2009/09/12(土) 12:24:36ID:???http://book.cakephp.org/ja/view/2/x1-2-Collection
というurlを入れるつもりだったのは秘密だ ><
ごめんな!>>78
0090nobodyさん
2009/09/12(土) 17:49:07ID:???; *
; * CakePHP(tm) : Rapid Development Framework <http://www.cakephp.org/>
・
・
・
よくコードに上記のようなコメント書いてるけど絶対書かないといけないんですか?
書き方載ってるサイト教えてください
0091nobodyさん
2009/09/12(土) 18:13:52ID:???phpDocumentor でググるといいかな。
絶対必要というわけではないけど、
自分で作ったファンクションとかAPIのドキュメントを自動生成するために書式が決まってる。
後から自分のコードを読みやすくするには書いとくクセを付けといた方がいいのかも。
0093nobodyさん
2009/09/13(日) 01:37:39ID:???うん、それだけ。
0094nobodyさん
2009/09/14(月) 21:33:44ID:SnxRq9ULそのテーブル内でユニークなランダム文字列ないし数字を振ってくれる便利なものないですか?
UUIDは長過ぎて8文字程度のランダムな文字列を割り当てたいんだけど
0096nobodyさん
2009/09/14(月) 23:05:17ID:SnxRq9ULCakeのString::uuid()がらみで聞いてみたけど確かにすれ違いかも
Cakeに用意されてたら同じくStringクラスにあるはずだしね。。
0097nobodyさん
2009/09/15(火) 00:35:27ID:???以前作ってみた。
処理としては、app_modelに、ランダムな/[a-zA-Z0-9]{8}/を返す関数を作り、
save時にそいつを呼び出して割り当てる(既に割り当て済みの文字列だったら、新しいものが出てくるまで処理を繰り返す)
これでいけた。まあ自前で作っても簡単。
0098nobodyさん
2009/09/15(火) 01:27:37ID:???なんかアホらしい気もするが
0100nobodyさん
2009/09/15(火) 13:20:04ID:???0101nobodyさん
2009/09/15(火) 13:31:25ID:jnkEds0n速度遅そうですが以下のようにしました。
Model->__schemaあたりからidのカラム長を取得
Text_Passwordでカラム長のパスワードを生成
Model->findしてかぶりがないかチェック
かぶっていれば10回まで再帰
ってなビヘイビアを作り読み込む。
0103nobodyさん
2009/09/15(火) 15:17:53ID:???0104nobodyさん
2009/09/15(火) 15:18:09ID:???まず普通は一回でもかぶらないのですが
一応10回まで回してそれでもだめならfalse返して終了
false受け取ったら自分にメール通知して、
画面はエラーです。。
今回はいいけど、他の案件で使おうと思うと全然だめですね。
uuidの36進数とかもやってみたけど結構文字数多いんですよね。
あと、time()を元にすると同秒の時の処理が・・・と、あと前後レコードを推測されやすいので
0106nobodyさん
2009/09/16(水) 00:09:49ID:???UUIDにはプロセスIDを含むはずなので、同時刻に生成しても問題ないはず
というか、そういう場合も含めて一意になるように設計してある規格なので
そこで衝突が起こったらUUIDの存在意義がなくなるような
0107nobodyさん
2009/09/16(水) 00:37:00ID:???0108nobodyさん
2009/09/16(水) 13:06:49ID:???ディレクトリ選べたらいいですのに。
0109108
2009/09/16(水) 13:37:35ID:???それをファイルベースでやると1つのディレクトリに何個もファイルが増えるのが嫌なの。
で、それを解消するのにどうしようかなぁと思ったんだけど
キャッシュを操作する直前にCache::configuいじって
プリフィックスにディレクトリ情報つけるだkでよかった。
0110nobodyさん
2009/09/16(水) 13:42:09ID:???0112nobodyさん
2009/09/17(木) 06:34:31ID:???ブラウザ間でSession情報を共有しちゃうんだけど、そういうものですか?
0113nobodyさん
2009/09/17(木) 10:37:05ID:???http://x68000.q-e-d.net/~68user/unix/pickup?%A5%D5%A5%A1%A5%A4%A5%EB%C0%A9%B8%C2%A4%DE%A4%C8%A4%E1
●ファイル・ディレクトリ数の上限
ひとつのディレクトリに置くファイルは、多くても 1000個程度にとどめておくことをお勧めする
これを見てダメだと思ったんだけど俺間違ってるのかな。
0114nobodyさん
2009/09/17(木) 10:47:44ID:???0116nobodyさん
2009/09/17(木) 12:10:36ID:???セッション開始前とか
そのあたりでpluginのコールバックを呼び出す機構がほしいな
pluginの幅が広がると思うんだけど
0117113
2009/09/17(木) 12:18:13ID:???そうなの?直接ファイルにアクセスするのには
ひとつのディレクトリにいっぱいいても大丈夫なのか。
キャッシュならFTPで接続しても見ることないしいいってことね!
0118nobodyさん
2009/09/19(土) 01:52:48ID:???明確に5.2以上でないと動かない機能を使ってるんですかね?
うち5.1台なんですけどむりすか
0119nobodyさん
2009/09/19(土) 02:56:08ID:???Media Pluginのソース全部読んだわけじゃないけど、
一部pathinfoの定数とかに5.2で追加されたものが使われてたのは発見したよ。
0120nobodyさん
2009/09/20(日) 10:31:46ID:???やはりmediumとかに落としたほうがいいんでしょうか?
0121nobodyさん
2009/09/20(日) 18:50:11ID:4/VSd770アプリの要件がモデルと単純に結びついてるケースなんてあんまりなくね?
コード拾い場として使うくらい?
0122nobodyさん
2009/09/21(月) 04:36:43ID:???.phpの方がエディタとかで扱いやすいだろJK
0123nobodyさん
2009/09/21(月) 07:31:21ID:???0124nobodyさん
2009/09/21(月) 08:12:05ID:???合理的な理由言ってみろや
0125nobodyさん
2009/09/21(月) 08:17:13ID:???オリジナルの拡張子にする害はあっても利はゼロだろ
0126nobodyさん
2009/09/21(月) 08:48:28ID:???そういう各アクション共通のフィルタって
基底クラスのAppControllerに実装するの?
0127nobodyさん
2009/09/21(月) 11:34:52ID:PliNJAC7そう。
afterLayout()とかで
0129nobodyさん
2009/09/21(月) 13:51:17ID:???-''":::::::::::::`''> ctpに慣れていってね!!! <
ヽ::::::::::::::::::::: ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
|::::::;ノ´ ̄\:::::::::::\_,. -‐ァ __ _____ ______
|::::ノ ヽ、ヽr-r'"´ (.__ ,´ _,, '-´ ̄ ̄`-ゝ 、_ イ、
_,.!イ_ _,.ヘーァ'二ハ二ヽ、へ,_7 'r ´ ヽ、ン、
::::::rー''7コ-‐'"´ ; ', `ヽ/`7 ,'==─- -─==', i
r-'ァ'"´/ /! ハ ハ ! iヾ_ノ i イ iゝ、イ人レ/_ルヽイ i |
!イ´ ,' | /__,.!/ V 、!__ハ ,' ,ゝ レリイi (ヒ_] ヒ_ン ).| .|、i .||
`! !/レi' (ヒ_] ヒ_ン レ'i ノ !Y!"" ,___, "" 「 !ノ i |
,' ノ !'" ,___, "' i .レ' L.',. ヽ _ン L」 ノ| .|
( ,ハ ヽ _ン 人! | ||ヽ、 ,イ| ||イ| /
,.ヘ,)、 )>,、 _____, ,.イ ハ レ ル` ー--─ ´ルレ レ´
0130nobodyさん
2009/09/21(月) 17:03:46ID:???0131nobodyさん
2009/09/21(月) 23:10:34ID:???あいつ元気にやってっかな
0132nobodyさん
2009/09/22(火) 00:05:44ID:???0133nobodyさん
2009/09/22(火) 01:53:07ID:???ここの検索って機能してなくね?
入力しても何も表示されないんだが
0134nobodyさん
2009/09/22(火) 02:17:06ID:???シングルトン用オブジェクトコンテナっぽいけど
なんで説明ないの?
0135nobodyさん
2009/09/22(火) 04:33:15ID:???どうするのが定石ですか?
0136nobodyさん
2009/09/22(火) 06:23:24ID:???var $ext=".ctp.php";
を定義しても、ctpを読み込みやがる。
何故?
0137nobodyさん
2009/09/22(火) 06:42:02ID:???http://api.cakephp.org/class/class-registry#method-ClassRegistrykeys
0139nobodyさん
2009/09/22(火) 11:33:12ID:???�d
API&ソース見て探求していくしかないのか・・
symfonyのcontext的なものでいろいろ取り出せるのかと思ったら
viewしか入ってねー
0140nobodyさん
2009/09/23(水) 03:33:59ID:ux1l4fZgSNS的なサイトをつくる場合にログイン認証画面(auth利用)→個人プロフィールトップ画面みたいなんを作りたいんす。
色々試行錯誤したんだけど、解決方法としては
テーブルを二つ用意する。userテーブル(ログイン認証用でid,password)とprofile(個人プロフィールトップ用(誕生日とか好きなものとか))
んでもってprofileテーブルからuserテーブルにhasoneでくっつける。
でもコントローラどうやって書けばいいか・・・。
っていうか方法本当にこれでいいのかな?
誰かいい方法知ってたら教えてください!!
0141nobodyさん
2009/09/23(水) 04:36:28ID:???cakeの使用以前なので、クダスレの方がいろいろ答えてもらえるんじゃない?
http://pc11.2ch.net/test/read.cgi/php/1229491611/
0142nobodyさん
2009/09/23(水) 05:54:39ID:ux1l4fZgありがとう。
使用以前ていうか、cakephpのauth使ってできるんすか?
できないなら、使わないで普通に書くんすけど。
0143nobodyさん
2009/09/23(水) 06:13:29ID:???できます。マニュアルは読みましたか?
ttp://book.cakephp.org/ja/view/172/Authentication
あとhasOne云々はAuthとは関係ないので、問題をきちんと切り分けたほうが良いです。
今はUserモデルとAuthコンポーネントにのみ注力すべきです。
0144nobodyさん
2009/09/23(水) 07:46:21ID:???User hasOne Profile な関係にして
UserモデルとUsersControllerでやるといい
ProfilesControllerは不要
0145nobodyさん
2009/09/23(水) 15:10:04ID:ux1l4fZg皆優しいっすね・・・。あれ、ちょっと涙が・・・。(笑)
>>143さん
ありがとう。読んでみます。
>>144さん
ありがとう。
ただ、USERモデルを作ったらはまったんすよ。
ID,pass合ってるのにログインできなかったりして。
auth使った場合、Userモデルは作らないって別の本にも書いてあったし。
0146nobodyさん
2009/09/23(水) 15:17:56ID:???とりあえず、チュートリアル系で一からやってみて、
動いてから自分のやりたい事やりなよ
問題の切り分けがしずらいし聞きたいこともわからん
0147140です。
2009/09/23(水) 21:12:19ID:ux1l4fZgとりあえずは解決?しました。
結論としては・・・
add,editloginで送るときのid,username,passwordとかがずれてました。
bakeを使ったから間違えた?ということで、今回はbakeのせいにして、これからは使いません。
本当お世話になりました☆
またよろしくお願いします!!
0148nobodyさん
2009/09/23(水) 21:19:49ID:???自分のミスをフレームワークの所為にして
便利さを犠牲にする。愚の骨頂
0149140です。
2009/09/23(水) 21:23:50ID:ux1l4fZgありがとうございます。
それも原因のひとつでした。
パスワードはaddアクションから登録したハッシュ化されたものでないとログインできなかったす。
(テーブルに打ち込んだハッシュ化してないパスワードはだめでした。)
ただ、まあそれはいいとして、編集するときにパスワード欄が
●●●●●●●●●●●●●●●●●●●●●●●みたいに
めっちゃ長くなってて、ちょっとださいんだけど、これくらいは目つぶるべきですかね?
入力されたものと同じ文字数で●●●●●て出せるんですか?
0150nobodyさん
2009/09/23(水) 21:26:44ID:???ググレかす
あとそれで編集実行したらログインできなくなるぞ
0151140です。
2009/09/23(水) 21:29:51ID:ux1l4fZgども!
おれはcakephp使わないって言ってないっすよ?
つかこれからも素人なりにガンバりますよ!
ただ!
bakeは使わないかも!
bakeって最初がちょっと楽できるだけなんじゃないすか?
それとも本当の便利さにおれが気づいてないんすか?
0152140っす
2009/09/23(水) 21:34:17ID:ux1l4fZgどーもご親切にあざーっす!
ちょっとイラっとしたけどおっしゃるとおり!!
0153nobodyさん
2009/09/23(水) 21:36:07ID:???全てのMVCを一から手書きするのはおれはやだ
骨組作ってもらってから編集していきたいね。
ま、好きにすればいいけどね
重大なのはそれより、
ろくに調べもせずに
「bakeがおかしいからbake使わないでいーや」
って心構えでコーディングなんかしてるとどのみち後々痛い目見る
問題を切り分け
一つ一つつぶし
同じ過ちを繰り返さない
プログラマとして最低限必要でしょ
0154nobodyさん
2009/09/23(水) 21:39:40ID:???ほらよ
http://www.google.co.jp/search?hl=ja&safe=off&client=firefox-a&rls=org.mozilla%3Aja%3Aofficial&hs=ht6&num=100&q=authComponent+cakephp&btnG=%E6%A4%9C%E7%B4%A2&lr=lang_ja
0155140っす
2009/09/23(水) 21:49:09ID:ux1l4fZg考え甘かったすわ。
肝に命じて進めていきますわ。
0156nobodyさん
2009/09/23(水) 21:59:46ID:???0157nobodyさん
2009/09/23(水) 23:32:04ID:???0158nobodyさん
2009/09/24(木) 01:31:26ID:???0159nobodyさん
2009/09/24(木) 03:11:55ID:L477CAe50163nobodyさん
2009/09/24(木) 23:58:41ID:???0164nobodyさん
2009/09/25(金) 00:18:25ID:???もうくんな
0165nobodyさん
2009/09/25(金) 00:27:33ID:???Cakeの特徴の一つですが
複数のクラスの中で同じヘルパーを使う時、
ヘルパーのインスタンスは同じなのでしょうか?
それとも、インスタンスが毎回作られるのでしょうか?
0166nobodyさん
2009/09/25(金) 12:12:36ID:???0167nobodyさん
2009/09/25(金) 12:34:20ID:???その前にCake2も今つくってんだし
0168nobodyさん
2009/09/25(金) 17:06:34ID:???ってどういうこと?Viewは一個だからHelper読み込みは1個ですよね通常。
Modelとかで強引に読み込んだらnewするわけだからインスタンス作るわけですよね
ちょっとわからんです。
0169nobodyさん
2009/09/25(金) 17:49:56ID:???あとelementsやlayoutsごとにviewインスタンスは生成されるのでは?
そのように共有されるものなので
helperを一元的に管理するファクトリのようなものがあって
同じ種類のhelperを複数作らないようにしてるのかなーと思ったのです
0170nobodyさん
2009/09/25(金) 20:02:24ID:???0171nobodyさん
2009/09/25(金) 20:21:44ID:???なモデル用意してバリデーションルール書けばいい
0173nobodyさん
2009/09/26(土) 05:31:21ID:Z4zintKr自分でinvalidFields()で取得して、viewに渡さないといけないのでしょうか?
0174nobodyさん
2009/09/26(土) 05:53:58ID:???0175nobodyさん
2009/09/26(土) 11:43:59ID:???CakePHPではModelはORマッピングの為にDBのテーブルを
クラスで表現したものとしていますよね。
Modelっていったい何???
0176nobodyさん
2009/09/26(土) 11:48:27ID:???0177nobodyさん
2009/09/26(土) 11:53:18ID:???> クラスで表現したものとしていますよね。
いいえ違います。ビジネスロジックを記述するモデルの
開発を加速する為に、DBのテーブルに対応するような
規約になっているだけです。
それが嫌なら、テーブルと関係ないModelを作ることも可能です。
が、レールの上に乗っかった方が速い開発が出来るでしょう。
0178nobodyさん
2009/09/26(土) 13:23:17ID:???count()しないでSQL_CALC_FOUND_ROWS使ってくれないん?
0179nobodyさん
2009/09/26(土) 16:03:41ID:???0180nobodyさん
2009/09/26(土) 16:37:57ID:???ログに保存したいのですが、方法があれば教えてください。
0181nobodyさん
2009/09/26(土) 17:12:39ID:???それがいやなら自分で$this->log();しまくれば
0182nobodyさん
2009/09/26(土) 23:39:27ID:???大した指摘もできねー能無しがほざくな。
■ このスレッドは過去ログ倉庫に格納されています