【PHP】フレームワーク CakePHP 15ホール目【v2.2】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2012/12/04(火) 13:06:36.87ID:ExCLhBiPCakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
CakeQs
http://cakeqs.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja
前スレ
【PHP】フレームワーク CakePHP 14ホール目【v2.1】
http://kohada.2ch.net/test/read.cgi/php/1335859124/
0792nobodyさん
2013/06/27(木) 12:06:54.65ID:???0793nobodyさん
2013/06/28(金) 12:14:46.69ID:???(テーブル名は英語で)
0794nobodyさん
2013/06/28(金) 12:19:44.86ID:???0795nobodyさん
2013/06/28(金) 12:22:35.51ID:???嫌な予感しかしねぇな。
俺の予想は、地味に動いていけるんじゃね?って事にもならず、
のっけから動かないと思う。
0797nobodyさん
2013/06/28(金) 15:32:07.99ID:???0798nobodyさん
2013/06/28(金) 15:35:47.68ID:???0799nobodyさん
2013/06/28(金) 16:03:23.19ID:???0800nobodyさん
2013/07/02(火) NY:AN:NY.ANID:PsPEQ4Vq今、ホームページ制作を勉強しているのですが、
CakePHPの入門書にある掲示板ではなく、よくあるサイトを模して作ろうと思うのですが、
一度、テンプレートのようなものを別のフォルダで作成し、
出来上がったものをCakePHPの書式に変換してやろうと考えております。
ただ、viewフォルダ→Pagesフォルダの中に、実際に表示したいと思っているコーディングしたものを上げたら、
エラーが表示して出てきませんでした。
Pagesフォルダ以外にも、記述しなければならない箇所はどこでしょうか。
0801nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???>Pagesフォルダ以外にも、記述しなければならない箇所はどこでしょうか。
Pagesフォルダに何記述したんだよ
フォルダに記述ってなんだよ
0802nobodyさん
2013/07/02(火) NY:AN:NY.ANID:PsPEQ4Vqすみません、Viewフォルダの中にあるPagesフォルダの中に、
表示したいページを入れるでした。
0803nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???不要と思うものも何もかも貼り付ける。
不要なものを貼り付けてしまっても何ら問題ない。
面倒だとか恥ずかしいとか思うなら質問する資格はない。
0804nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???DBの仕様により、管理者、一般ユーザが2つのテーブルに別れて格納されています。
管理者、一般ユーザはそれぞれ同じリソースにアクセスするのでアプリ自体を別けたくありません。
Authは一つのモデルしか対象に出来ないので、認証すべきユーザテーブルが2つに別れている場合の
対処の仕方がどうしても思いつきません。どうかよろしくお願いします。
0805nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???それぞれのauth設定に分ければいいだけじゃないの?
0806nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???ありがとうございます。
その「それぞれのAuth設定」というのを理解出来ていないのですが、
AppControllerのuses でAuthを使った場合、設定できるのは一回きりですよね。
一般モデルと管理者モデルを相手とする別々のAuthの設定をどうやっていいのやらわかりません。
0807nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???アクセスしてきたユーザーはadminか一般かのどちらかだよね?
一度のアクセスで両方を設定する必要があることは無いでしょ?
だからAuthの設定をbeforeFilterでしてやればいいわけじゃん?
AuthのAPIみてみ
beforefilterでauthenticateとかloginActionとか
0808nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???>AppControllerのuses
これあってる?componentsじゃない?
俺2.1までしか触ったこと無いからもしこのへん変更されてるなら俺無視した方がいいかもね
0810nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???管理者と一般ユーザ(それぞれ admins, users として)を統合する
上位のテーブルをこれから作れないの?
全ユーザーテーブル all_users にして、
admins と users にそれぞれ all_user_id を追加するという具合に
0812nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???>>807様と>>810様のアドバイスの合わせ技で、以下のようにしました。
users テーブルを新たに作成
カラム id, username, password, role を設定
↓
admins テーブル、 customersテーブルに カラム user_id を追加
↓
モデル Admin,php に$belongsTo Userを設定
モデル Customer.php に$belongsTo Userを設定
↓
AppContorollerのbeforeFilter()でユーザのRoleを判定し
ログインリダイレクト先とログアウトリダイレクト先を設定。
あとは各コントローラのbeforeFilter()にRole判定を入れてしまえば
だいたい完成かなと思っております。
ありがとうございます。
0813nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???0814nobodyさん
2013/07/02(火) NY:AN:NY.ANID:???だとしたら冗長だな。
User hasOne Customer
User hasOne Admin
にした方がいいと思うが。
0815nobodyさん
2013/07/05(金) NY:AN:NY.ANID:???0816nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???Cake2です
0819nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???設計まずい?
0821nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???0822nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???モデルのコンストラクタは引数決まってるしCakeが勝手に呼んでくれるけど
そこをオーバーライドして、引数を追加しろって事?
0828nobodyさん
2013/07/11(木) NY:AN:NY.ANID:???やはりコンストラクタが確実なんじゃないですかね?
引き続きその線で考えてみます
0829nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???・stackoverflow
・2ちゃん
・質問対象のコミュニティ、フォーラム
どれも試したが、stackoverflowは質問が大杉てすぐ流れちゃって閲覧されない
簡単な質問ならすぐレスが付く、ただし数分過ぎたらもうレスは付かない
質問対象のコミュニティ、フォーラムは過疎ってることが多い
2ちゃんはアホばかり
いちばんレスは得られるが煽りばかり
さあどれを選ぶ?他にある?
0830nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???うざがられるの覚悟なw
0831nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???いつまでたってもぜーんぶ他人だより
そろそろ自分でなんてかすることおぼえろよ
0832nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???0833nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???http://api.cakephp.org/2.3/class-Component.html
これ見てわかったら反省しろ
0834nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???0836nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???頭悪いにも程があるな
0837nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???0839nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???2年ぐらい前までは、まだたまに有益なレスが得られたものだが
0840nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???0841nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???俺の周りだけ?
0843nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???0844nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???Component を使ってる Controller じゃなんであかんのや?
0845nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???これ以上触れないほうが双方の利益
0846nobodyさん
2013/07/12(金) NY:AN:NY.ANID:???0847nobodyさん
2013/07/19(金) NY:AN:NY.ANID:???がいいの?
ずっとコントローラーでやってたんだけど「isForeignKeyみたいな標準バリデーションを用意してくれ」っていう
提案が出されてるのを見つけて、バリデーションの方で実装しようかと心が揺れてる
https://cakephp.lighthouseapp.com/projects/42648/tickets/3213-suggestion-for-validating-foreign-keys
0848nobodyさん
2013/07/19(金) NY:AN:NY.ANID:???ビヘイビアでも作っておけばいいんじゃないの?
0849nobodyさん
2013/07/19(金) NY:AN:NY.ANID:???その方向で直してみるわ
0850nobodyさん
2013/07/24(水) NY:AN:NY.ANID:???任せておけばプレースホルダ使ってくれるんだよね?
0852nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???0853nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???find と save だけ使ってりゃ大丈夫だったか。
0854nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???結構使ってるつもりだったが初めて知ったわ
0855nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???正直面倒
0856nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???何か難しい問題があるのかな
既に別のフレームワークへ移ってしまったが
0857nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???これ問題じゃないだろ
カラム名+1とか出来るようにしてんじゃないの?
0858nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???カウンター増減専用メソッドが存在しないための対処なんだな
0859nobodyさん
2013/07/25(木) NY:AN:NY.ANID:???難しい問題があるというよりも、生のSQLを用いた
更新ロジックを作りたかったんじゃないかな。
とは言え、他のは自動的にサニタイズされるのに
これだけ自前でやるだなんて、問題ないとは言えないと思うが。
オプションで "sanitize" => false とか
指定できるようにすればいいわけだから。
0860.net 99
2013/07/30(火) NY:AN:NY.ANID:li987LIG!次のサイトでは、セッションのタイムアウト時間として
'timeout' => 259200,
と記載されていますが、timeoutに指定する時間単位は分ですよね?
259200分 = 4320時間 = 180日
の設定となり異常に長いのですがこれは開発用に敢えて長い
時間を設定しているという認識で良いでしょうか?
http://weble.org/2012/03/22/cakephp-session-database
0861nobodyさん
2013/07/30(火) NY:AN:NY.ANID:???0862nobodyさん
2013/07/30(火) NY:AN:NY.ANID:???何でその長さにしたのかはブログの作者に直接聞くといい
0863.net 99
2013/07/30(火) NY:AN:NY.ANID:li987LIG!ありがとうございます。うーん。
ブログで得意気に情報を公開するのは結構ですが間違った
情報を堂々と公開するのは勘弁してほしいですね。
ちょっと自分でブログにまとめます。
0864nobodyさん
2013/07/30(火) NY:AN:NY.ANID:???お前の用途に合って無かっただけ
0865nobodyさん
2013/07/30(火) NY:AN:NY.ANID:???あとブログの情報なんてのは間違っていても全然おかしくないわ。公式のヘルプでも間違ってんのに。
問題はお前みたいに間違いに気づいたと思っても、
恥ずかしかったり面倒くさかったりでアクションを起こさないやつだ。
0866nobodyさん
2013/07/30(火) NY:AN:NY.ANID:???はよ
0868860
2013/07/30(火) NY:AN:NY.ANID:qDXmbOPS騙るなクズ
0869nobodyさん
2013/07/30(火) NY:AN:NY.ANID:???そんなに改良するところがあるもんなのかな
CakePHPにかぎらず、なかなか一つの定番に落ち着かないもんだな
ま、PHP 自体が変化しているから仕方ないのかな?
0870nobodyさん
2013/07/30(火) NY:AN:NY.ANID:???0871nobodyさん
2013/07/31(水) NY:AN:NY.ANID:???0872nobodyさん
2013/08/03(土) NY:AN:NY.ANID:???http://blog.sumyapp.com/2013/07/no-recommend-rails/
0873nobodyさん
2013/08/03(土) NY:AN:NY.ANID:???0874nobodyさん
2013/08/03(土) NY:AN:NY.ANID:???同意だわ
0875nobodyさん
2013/08/03(土) NY:AN:NY.ANID:???0876nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???>どれもプログラマにとっては当たり前のキーワードだが、オートインクリメントって何?って人がほとんどなのではないだろうか?
どんな連中が回りにいるんだよwww
0877nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???0878nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???てかcake触る人でもDB構築してるわけじゃん?autoincrement知らないわけないんじゃないのか
0879nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???0880nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???そのため架空のフィールド名'tmp.hoge.huga'みたいなのでタグを生成してるのですが、編集の際にまたこねくり回してフォームに値を戻したいです
その際にどこかに値をセットすれば値を戻してくれたりするのでしょうか?
コントローラでthis->dataに辺りに値を戻せば戻してくれると思ったのですが、上書きすんなってdata上書きすんなって怒られました
0881nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???0882nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???0883nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???意図することはわかるのですが具体的にどんな感じで書けばいいのでしょうか??
0885nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???ファイルのアップロードを行っていて
mysqlのカラム名はfile_nameでtext型 not NULL で作っていて
コントローラーでfileの名前を変えた後
$this->request->data['Model']['file_name'] = $imageName;
$this->Model->save($this->request->data)
で保存しています
ほかのIDやbodyなどは正常に保存できていて
file_nameだけphpmyadminで見ると全部NULLになります
でもviewのほうで<?php echo $Item['Model']['file_name']; ?>
とするとしっかり保存されている名前がでてきます
ファイルもしっかり保存されています
mysqlとの食い違いがよくわかりません
原因とかえすぱーできませんか(´;ω;`)ブワッ
0886nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???> file_nameだけphpmyadminで見ると全部NULLになります
おかしくないか?
0887nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???phpmyadminのバグなのかもしれないけど
カラム名も表示されないんだよね
なんか違反してるのかなぁ
>>886
ちゃんとnot NULLで作ってるけど
表示はNULLで中身はしっかり入ってる状態っていうのかなぁ・・・
値は取れるから・・・
プログラミング自体初心者だから積んでる(´;ω;`)ブワッ
0888nobodyさん
2013/08/04(日) NY:AN:NY.ANID:???バグでもなんでもなくてphpmyadminの仕様で表示が省略されるっていうのでした
すいませんでした
0889nobodyさん
2013/08/05(月) NY:AN:NY.ANID:???class こねくるモデル extends AppModel {
public function こねくる(元のデータ) {
// こねくりまわす
return こねくり回されました!
}
public function もどす(こねくり回されました!){
// こねくりを元にもどす
return 元のデータ
}
}
場合によっては不可能だけど、事情が許せば
static にして、更に可能なら Utility とかのディレクトリに
別のクラスを作ってそこに実装する
そうするとテストや保守がしやすい。
0890nobodyさん
2013/08/05(月) NY:AN:NY.ANID:???beforeSaveで加工して
afterFindで戻せばいいだけじゃないの
0892880
2013/08/05(月) NY:AN:NY.ANID:???あとは、返却された値を$this->request->dataに入れればスムーズに行きそうな感じですね
>884の通りrequestの方でした、this->dataもあって中身は同じでした
ちなみにやりたかったのは複数レコードの挿入で、
A. x
B. y
C.1
d.1 2 3
E. 9
f. 4 5 6
と入力された時に
[x y 1 - 1][x y 1 - 2][x y 1 - 3]
[x y 9 - 4][x y 9 - 5][x y 9 - 6]
みたいな6レコードを挿入するみたいな感じです
■ このスレッドは過去ログ倉庫に格納されています