私的良スレ書庫
不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitterでログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。
元スレ【PHP】フレームワーク CakePHP 6ホール目【v1.2】
php スレッド一覧へ / php とは? / 携帯版 / dat(gz)で取得 / トップメニューみんなの評価 : ○
レスフィルター : (試験中)
CakePHP使ってますと公言してもメリットがないから
使ってるサイトが少なそうに見えている、とも考えられる
あと1.2で大分ましになったけど、同じフルスタックとはいえ
導入するメリットがSymphonyに対して見えにくかったというのもある。
簡単だ!みたいな点だけ強調されすぎた。なんかそういうのはもういい。
その点では1.2になって本当に良くなった。敷居は上がったかもしれんが
使ってるサイトが少なそうに見えている、とも考えられる
あと1.2で大分ましになったけど、同じフルスタックとはいえ
導入するメリットがSymphonyに対して見えにくかったというのもある。
簡単だ!みたいな点だけ強調されすぎた。なんかそういうのはもういい。
その点では1.2になって本当に良くなった。敷居は上がったかもしれんが
制作事例を公表するというのは、セキュリティ的には、システムの脆弱性をさらすようなものだから、
よっぽど強固な作りになっていない限り、制作事例は公表しないというのが面倒が無くて良い気がする。
オレは、仕事でCakePHPを組込んでいるよ。どれか教えないけどね
よっぽど強固な作りになっていない限り、制作事例は公表しないというのが面倒が無くて良い気がする。
オレは、仕事でCakePHPを組込んでいるよ。どれか教えないけどね
>>753
そらパクってるからな笑
そらパクってるからな笑
説明とOKボタンだけのダイアログを、フォームのボタンを押した時に表示するようにしたいんですが
実装は可能でしょうか?
方法があれば教えていただきたいです
マニュアルの11.1.11を参考にしていますが、これだと「Delete」の文字列のリンクでダイアログが出てくることと、
OK,キャンセル二つのボタンが出て、実装したいものと少々違います。
# <?php echo $html->link('Delete', "/posts/delete/{$post['Post']['id']}", null, 'Are you sure?' )?>
実装は可能でしょうか?
方法があれば教えていただきたいです
マニュアルの11.1.11を参考にしていますが、これだと「Delete」の文字列のリンクでダイアログが出てくることと、
OK,キャンセル二つのボタンが出て、実装したいものと少々違います。
# <?php echo $html->link('Delete', "/posts/delete/{$post['Post']['id']}", null, 'Are you sure?' )?>
要するにキャンセルがあるからダメなの?
だったら自前でダイアログ(っぽいもの)を吐き出す必要があるのでは?
だったら自前でダイアログ(っぽいもの)を吐き出す必要があるのでは?
MySQL上にViewを定義します。
CakePHP側でこのViewのモデルを定義し、findAll等でデータを取得するとなぜか
配列にはViewがテーブル別に分割されて取得されます。
あくまでViewの配列に一括で入ってくることを期待しているのですが・・・
CakePHP側でこのViewのモデルを定義し、findAll等でデータを取得するとなぜか
配列にはViewがテーブル別に分割されて取得されます。
あくまでViewの配列に一括で入ってくることを期待しているのですが・・・
最近cakephpを使って開発を始めたんですが、少し気になる事があったので質問させてください。
データのCSVの保存とかは、ドキュメントを見た感じモデルに書くべきって書いてあったからいいんですが、
データの計算や、加工等などはどこでやるべきなのでしょうか?
MVCの概念からいくとモデルになるのでしょうが、Cakeの場合モデルはDB操作や、
データの保存等に使用のみ(?)と書いてあったのでどこに書くべきか迷っています。
すみません、ご教授お願いします。
データのCSVの保存とかは、ドキュメントを見た感じモデルに書くべきって書いてあったからいいんですが、
データの計算や、加工等などはどこでやるべきなのでしょうか?
MVCの概念からいくとモデルになるのでしょうが、Cakeの場合モデルはDB操作や、
データの保存等に使用のみ(?)と書いてあったのでどこに書くべきか迷っています。
すみません、ご教授お願いします。
コントローラに書くとそのコントローラからしか呼び出せない(正確にはにくい)
モデルだと、そのモデルを使うコントローラすべてから使える
データに密接な加工はモデルに書くべきでしょ
http://www.sooey.com/journal/2008/03/26/717/
ていうかすごく根本的なことだと思うが・・・
モデルだと、そのモデルを使うコントローラすべてから使える
データに密接な加工はモデルに書くべきでしょ
http://www.sooey.com/journal/2008/03/26/717/
ていうかすごく根本的なことだと思うが・・・
ログイン認証で質問です。
Authコンポーネントが用意されていますが、独自で実装するよりこれを使ったほうがいいですか?
ユーザーの権限によって処理を振り分けたりということをしたいのですが、Authコンポーネントを
使っても柔軟に対応できるものですか?
Authコンポーネントが用意されていますが、独自で実装するよりこれを使ったほうがいいですか?
ユーザーの権限によって処理を振り分けたりということをしたいのですが、Authコンポーネントを
使っても柔軟に対応できるものですか?
モデルAのひとつのフィールドには配列をserializeしたデータが入っており、取り出すときに必ずunserializeしたいのですが、
AのafterFind内でunserializeすると、Aを直接findで取得した場合はいいのですが、
関連モデルBから引っ張ってきた場合にはAのafterFindは呼ばれないようです。
Aのデータ展開時に確実にunserializeするにはどうすればいいのでしょうか?
AのafterFind内でunserializeすると、Aを直接findで取得した場合はいいのですが、
関連モデルBから引っ張ってきた場合にはAのafterFindは呼ばれないようです。
Aのデータ展開時に確実にunserializeするにはどうすればいいのでしょうか?
モデルの意味を勘違いしている人が多いよね。
データに関わるものであれば、モデルでビジネスロジックを書いてもいいのに。
データに関わるものであれば、モデルでビジネスロジックを書いてもいいのに。
>>771
769ではないけど
その機能はしってるけど、そうじゃなくて以下のような時にどう実装すればいいんだろ
モデルがUserとPostの2つあって
Post BelongsTo Userのとき
User.ipにはip2longしたIPアドレスを持っていて
UserモデルにはafterFindでIPアドレスをlong2ipで復元するように書いてある
なのでUser->find等したときは意識せずとも勝手に変換されたIPを取得できる。
この時に
Postモデルから芋づるでUserも引っ張ると、UserのafterFindを通らない。
769ではないけど
その機能はしってるけど、そうじゃなくて以下のような時にどう実装すればいいんだろ
モデルがUserとPostの2つあって
Post BelongsTo Userのとき
User.ipにはip2longしたIPアドレスを持っていて
UserモデルにはafterFindでIPアドレスをlong2ipで復元するように書いてある
なのでUser->find等したときは意識せずとも勝手に変換されたIPを取得できる。
この時に
Postモデルから芋づるでUserも引っ張ると、UserのafterFindを通らない。
え!マジ?
記憶があいまいなので確かこんな感じと書いてみたんだけど違ってたのかな?
Post->User->find()
ではなくて
recursiveセットした上での
Post->find()
のことなんだけど
ほんとにUserのafterFind通る??
記憶があいまいなので確かこんな感じと書いてみたんだけど違ってたのかな?
Post->User->find()
ではなくて
recursiveセットした上での
Post->find()
のことなんだけど
ほんとにUserのafterFind通る??
>>771のエントリを読むと、芋づる方じゃなくて芋づられる方のデータを対象に出来るって書いてあるね
ためしてないが
ためしてないが
>>778
うんどっちでも来るはずよ。どっちから呼ばれたかを判定するための$primaryだから。
ただ、if($primary === false) { ---- }
てやらないとちゃんと判定してくれなかったかも。
うんどっちでも来るはずよ。どっちから呼ばれたかを判定するための$primaryだから。
ただ、if($primary === false) { ---- }
てやらないとちゃんと判定してくれなかったかも。
769書いた後12時間爆睡してしまいました。
アソシエーションがA HABTM B なんで>>774とは微妙に違うんですが、
今やってみると…両方とも思いっきりafterFind通っていました。なんでだろう。
ちょっと気持ち悪いけどとりあえず解決下っぽいです。
ありがとうございました。
アソシエーションがA HABTM B なんで>>774とは微妙に違うんですが、
今やってみると…両方とも思いっきりafterFind通っていました。なんでだろう。
ちょっと気持ち悪いけどとりあえず解決下っぽいです。
ありがとうございました。
CakePHPというか、アメリカ圏というべきかな。では
ドメインモデルの設計が主流みたいなんだよね。
それに対して日本はトランザクションスクリプトが多い感じ。
(低レベル日本じゃこの考え方自体があまり知られていない感じもするけどw)
なので、ドメインモデルとして使えばCakePHPは複雑なこともかなりやれるけど、
トランザクションスクリプトでやろうとすると、なんでこんなことがやりにくいの?ってなってしまう。
データを加工して表示するのはビュー。処理はモデル。
コントローラはモデルに処理を依頼して、ビューにデータを渡すだけ。
こういう設計にするのが一番じゃないかな。
ドメインモデルの設計が主流みたいなんだよね。
それに対して日本はトランザクションスクリプトが多い感じ。
(低レベル日本じゃこの考え方自体があまり知られていない感じもするけどw)
なので、ドメインモデルとして使えばCakePHPは複雑なこともかなりやれるけど、
トランザクションスクリプトでやろうとすると、なんでこんなことがやりにくいの?ってなってしまう。
データを加工して表示するのはビュー。処理はモデル。
コントローラはモデルに処理を依頼して、ビューにデータを渡すだけ。
こういう設計にするのが一番じゃないかな。
afterFindの件、今やると確かに通ってる
バージョンアップで変わったのか勘違いかどっちかです。
時間できたらテストしてみます
おさーがせしました
バージョンアップで変わったのか勘違いかどっちかです。
時間できたらテストしてみます
おさーがせしました
>>790
たしか、バージョンアップで変わったが正解だと思う。
俺も昔、それ関係でソースを呼んでいたのだが、
ひもづるで呼んだときは通らなくて、
まあ、SQLの仕組み上JOINして持ってくるだろうから
難しい話だと思ったのでそいういう仕様かなぁと思っていた。
たぶん今俺が使って実稼動しているシステム。
新しいCakeでは動かないだろうな・・・
ちゃんとテストしているからすぐ修正できるとは思うが。
たしか、バージョンアップで変わったが正解だと思う。
俺も昔、それ関係でソースを呼んでいたのだが、
ひもづるで呼んだときは通らなくて、
まあ、SQLの仕組み上JOINして持ってくるだろうから
難しい話だと思ったのでそいういう仕様かなぁと思っていた。
たぶん今俺が使って実稼動しているシステム。
新しいCakeでは動かないだろうな・・・
ちゃんとテストしているからすぐ修正できるとは思うが。
今回の件と関係あるかわからないけど
アソシエーション先のbehaviorのafterFindは呼ばれなかった気がする。
あとは、primaryで呼ばれたときと、hasManyで呼ばれたときと、
HABTMで呼ばれたときの配列の構造がそれぞれ違うので
そのあたりの対策をちゃんとしないといけないと思う。
この辺のアソシエーション周りの統一感のなさが設計ミスとしか思えない…
アソシエーション先のbehaviorのafterFindは呼ばれなかった気がする。
あとは、primaryで呼ばれたときと、hasManyで呼ばれたときと、
HABTMで呼ばれたときの配列の構造がそれぞれ違うので
そのあたりの対策をちゃんとしないといけないと思う。
この辺のアソシエーション周りの統一感のなさが設計ミスとしか思えない…
Commentsテーブルと、複数コメントを持つUsersテーブルがあって
/models/user.php内に
var $hasMany = 'Comment'; を記述する。
users_controller.phpのコントローラー内で
Commentの作成日がXX日までの物を検索し、ページネート表示としたいのですが
どのようにConditionを記述するのでしょうか
$tempにXX日の文字列を入れ、
$condition = array('Comment.created <' => $temp);
$conditions = array('AND'=>array($condition));
$result = $this->paginate('User', $conditions);
このような記述をしたところ
Warning (512): SQL Error: 1054: Unknown column 'Comment.created' in 'where clause'
という警告がでてきてしまいました。
/models/user.php内に
var $hasMany = 'Comment'; を記述する。
users_controller.phpのコントローラー内で
Commentの作成日がXX日までの物を検索し、ページネート表示としたいのですが
どのようにConditionを記述するのでしょうか
$tempにXX日の文字列を入れ、
$condition = array('Comment.created <' => $temp);
$conditions = array('AND'=>array($condition));
$result = $this->paginate('User', $conditions);
このような記述をしたところ
Warning (512): SQL Error: 1054: Unknown column 'Comment.created' in 'where clause'
という警告がでてきてしまいました。
>>766みたいな方法でも良いと思うが、
メゾット毎に役割を決めた方がメンテナンス性が上がるような気がする。
メゾット毎に役割を決めた方がメンテナンス性が上がるような気がする。
おーテンプレはいってましたか
えらいすんまへんでした
えらいすんまへんでした
類似してるかもしれないスレッド
- 【PHP】フレームワーク CakePHP 7ホール目【v1.2】 (1001) - [98%] - 2010/3/18 1:18 ○
- 【PHP】フレームワーク CakePHP 4ホール目【v1.2】 (1001) - [98%] - 2008/12/19 21:06 ○
- 【PHP】フレームワーク CakePHP 5ホール目【v1.2】 (985) - [98%] - 2009/3/7 4:53 ☆
- 【PHP】フレームワーク CakePHP 10ホール目【v1.3】 (1001) - [92%] - 2011/2/13 8:32
- 【PHP】フレームワーク CakePHP 16ホール目【v2.4】 (1001) - [92%] - 2014/3/3 3:00
- 【PHP】フレームワーク CakePHP 11ホール目【v1.3】 (1001) - [92%] - 2011/6/30 22:32
- 【PHP】フレームワーク CakePHP 15ホール目【v2.2】 (985) - [92%] - 2013/9/7 8:30
- 【PHP】フレームワーク CakePHP 9ホール目【v1.3】 (1001) - [92%] - 2010/11/1 2:53
- 【PHP】フレームワーク CakePHP 19ホール目【v3.3】 (844) - [90%] - 2023/2/2 14:30
- 【PHP】フレームワーク CakePHP 17ホール目【v2.4】 (984) - [90%] - 2015/1/10 2:45
- 【PHP】フレームワーク CakePHP 13ホール目【v2.0】 (995) - [90%] - 2012/4/23 21:16 ○
- 【PHP】フレームワーク CakePHP 14ホール目【v2.1】 (1001) - [90%] - 2012/12/3 19:16
- 【PHP】フレームワーク CakePHP 8ホール目【1.3】 (1001) - [90%] - 2010/7/22 22:16
- 【PHP】フレームワーク CakePHP 3ホール目【本命】 (1001) - [89%] - 2008/6/19 7:19 ○
- 【PHP】フレームワーク CakePHP 17ホール目【v3α】 (955) - [88%] - 2016/11/15 20:45
トップメニューへ / →のくす牧場書庫について