【PHP】フレームワーク CakePHP 2ホール目
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2007/11/14(水) 02:50:28ID:???http://www.cakephp.org/
10分で作るCakePHPアプリ for Windows
http://p4life.jp/cake/
マニュアル日本語化
http://www.cakephp.jp/doc/
日本語フォーラム
http://cakephp.jp/modules/newbb/
あとこのへんとか(初心者向けTIPS)
http://www.avatarfinancial.com/pages/cake/
0723nobodyさん
2008/03/03(月) 21:06:07ID:???コンポーネントってMVCでいうところのコントローラなんだから
そこからモデルを直接参照しないで何するんだ?
$Component->Controller->Modelだときもちわるくね?
0724nobodyさん
2008/03/03(月) 23:13:06ID:???> 基本はコントローラ以外にロジックを書くべきじゃないと思ってる。
> っていうかそればMVCの基本だよね?
ぷっ。3ページ目のBad Cakeそのものですねwwww
http://cakephp.org/files/OCPHP.pdf
0726721
2008/03/04(火) 03:21:21ID:???レスサンクス。やっぱりそれが妥当なんですね。
つかまだCake使い始めだからってのもあるのだけど、
こういう事する場合、あれでもこれでも出来るじゃなくて、
あれの場合はこういう手続きで。みたいなのきちっと一本化して欲しいなぁ。
こういう答えが明確でない事で悩む時間がかなり多い。。
もちろん関数とパラメータの意味を調べる為にソースにらめっこにも時間が取られるわけですが。。
社内ライブラリ群でやってる同規模の案件の倍以上かかってるよorz<当然残業コース。。トホホ
0727nobodyさん
2008/03/04(火) 03:35:17ID:???コンポーネントの意味がわかってねーなwww
Mコンポーネント
Vコンポーネント
Cコンポーネント
コンポーネントはMVCのそれぞれにあるんだよwww
低フレームワークをいじってるやつの基礎知識の無さは半端ねーな
0728nobodyさん
2008/03/04(火) 03:41:25ID:???フレームワーク覚えながら仕事できるっていい会社ですね
基本的に勉強は勤務外だから
とろとろ覚えながらやるなんて、まず無理
0729nobodyさん
2008/03/04(火) 09:30:35ID:???だからぁ
Mコンポーネント…Behavior(同じ処理に振る舞いを付ける時)
Vコンポーネント…Helper(表示に関してロジックが必要な時)
Cコンポーネント…Component(手続きを纏めて再利用する時)
Cakeの中ではCコンポーネントの事を単にコンポーネントって
呼んでいるんだから、いかに的外れな事を言ってるのか分かってね。
>>723
直接参照で問題ないでしょ。
データソースを扱いたいためにコンポーネントが
コントローラに依存し出したらそれこそ意味不明。
>>714
何が問題だと感じているの?
0731nobodyさん
2008/03/04(火) 10:25:20ID:???> 何が問題だと感じているの?
>>729
コントローラに追加していないモデルを
どうにしかしてコンポーネントで使うということです。
0732nobodyさん
2008/03/04(火) 11:34:34ID:???> フレームワーク覚えながら仕事できるっていい会社ですね
> 基本的に勉強は勤務外だから
家では仕事しない主義なんでw
0733nobodyさん
2008/03/04(火) 11:46:57ID:???現実の構成から考えると、Cakeのコンポーネントはあくまで
コントローラに書く記述の共通化用だからな
コントローラをインジェクションして使うものだと割り切った方がいいのでは?
0734nobodyさん
2008/03/04(火) 12:23:27ID:Oi3CmVe3http://api.cakephp.org/1.2/auth_8php-source.html#l00674
ClassRegistry::init('名前')でモデルを使用可能にしているみたいだけど。
0735nobodyさん
2008/03/04(火) 12:24:43ID:???コンポーネントに渡すなんてことをしないで、
コンポーネント内部で、uses()を使って
モデルを直接読んでいいですかね?
0736nobodyさん
2008/03/04(火) 13:39:48ID:???コントロール=コンポーネントていう考えがおかしい
M
V
C
コンポーネント
まったく別物だからwww
=で考えるなよバカwww
0737nobodyさん
2008/03/04(火) 13:42:36ID:???確かにコントローラとコンポーネントを=で結びつけるのは変だね
0739nobodyさん
2008/03/04(火) 14:08:44ID:???Vコンポーネントの中にはVの処理をカプセル化したもの
Cコンポーネントの中にはCの処理をカプセル化したもの
だからCコンポーネントの中にMやVの処理を入れてはダメ、Cの処理だけ
複雑化したら、それはコンポーネントといえない
なぜなら再利用化に適さないから
コンポーネントは複雑な処理じゃなくて、出来るだけ単純化したものを書くべき
0740nobodyさん
2008/03/04(火) 14:09:38ID:???CakePHPでは
Controllersフォルダ中にComponentsフォルダがあるの知ってる?w
Modelsフォルダの下behaviorsフォルダ。
Viewsフォルダの下にHelpersフォルダ。
どうせ知らなかったでしょ? 勉強してでなおしなさい。ば〜かば〜か
0741nobodyさん
2008/03/04(火) 14:12:50ID:???誤解の元だから。
なんでCコンポーネントていえないのかね
0742735
2008/03/04(火) 14:15:36ID:???生成しちゃうのってどうなんでしょうか?
>>734がネタばれしちゃったけど、標準の一部のコンポーネントでは
直接生成しているのよね。
それなら設計的にはコンポーネントにもusesプロパティが
あってもいいと思うんだけど、実際には無い。
コンポーネントにusesプロパティが無いのがおかしいのか、
それともコンポーネントでモデルを直接生成している
一部のコンポーネントの方がおかしいのか。
0743nobodyさん
2008/03/04(火) 14:16:14ID:???0744nobodyさん
2008/03/04(火) 14:17:22ID:???ここはCakePHPスレなので、Componentで問題ありません。
誤解のもの? あなた誤解していたんですかw
0745nobodyさん
2008/03/04(火) 14:18:20ID:???0746nobodyさん
2008/03/04(火) 14:19:09ID:???生成するてのは再利用化に欠けるんだよ
MとCにそれぞれコンポーネント作って
つなげればいいじゃんか
0748nobodyさん
2008/03/04(火) 14:22:37ID:???シーコンポーネントなんて恥ずかしい言い方は論外として
コントローラコンポーネントでぐぐったらStrutsが出てきた。
どうやらJava厨かw
CakePHPスレでStruts用語使わないでくれないかな。誤解の元だから。
0749nobodyさん
2008/03/04(火) 14:23:59ID:???単にお前の用語の使い方が間違っているんだよ。
Cコンポーネントなんて用語はCakePHPにはでてこない。
0751nobodyさん
2008/03/04(火) 14:26:28ID:???0752nobodyさん
2008/03/04(火) 14:27:29ID:???その質問は強烈すぎw
Cake知らない人には答えられないし、
答えたとしたら、自分のマヌケさを露呈することになるw
答えまだかな?逃げるかな?♪
0755nobodyさん
2008/03/04(火) 14:32:35ID:???behavirosの下ならそれはコンポーネントじゃなくてビヘイビアだろw
0756nobodyさん
2008/03/04(火) 14:36:12ID:???外注先で赤っ恥かきそうだなw
0757nobodyさん
2008/03/04(火) 14:37:01ID:???0758nobodyさん
2008/03/04(火) 14:37:38ID:???0759nobodyさん
2008/03/04(火) 14:39:02ID:???0760nobodyさん
2008/03/04(火) 14:44:18ID:???誰がつなぐのでしょうか?
コントローラからモデル内部のビヘイビアは
普通直接見るもんじゃないですよね?
コントローラで、コンポーネントとモデルをつなぐというのならわかるのですが?
あとここはCakePHPスレなのでCakePHP用語で話してください。
0768nobodyさん
2008/03/04(火) 14:58:04ID:???そもそもAuthComponentはコンポーネントで実装するものなのか?
AuthComponentはコンポーネント内部で、呼び出しもとの
コントローラが知らないモデルを、直接参照しているが
これは設計としてありなのか?
設計があまりよくないというのなら、こういうものを作る場合
本来はコントローラにモデルを参照させて、
コンポーネントに渡すべきなのか。
コンポーネントとビヘイビアをつなぐといっている人が
いるみたいですが、この人の頭は大丈夫なのか。
以上よろしくお願いします。
0769nobodyさん
2008/03/04(火) 15:00:26ID:???0770nobodyさん
2008/03/04(火) 15:01:32ID:???0771nobodyさん
2008/03/04(火) 15:02:08ID:???0772nobodyさん
2008/03/04(火) 15:03:58ID:???自演激しすぎwww
0773nobodyさん
2008/03/04(火) 15:04:54ID:???言っている言葉がめちゃくちゃだな
0774nobodyさん
2008/03/04(火) 15:06:34ID:???そう俺とお前が激しく書き込んでるだけだよwww
0775nobodyさん
2008/03/04(火) 15:08:17ID:???>>762と>>763の知能の差に吹いた
767 :nobodyさん:2008/03/04(火) 14:55:20 ID:???
>>766
自演乙
これ書いたの両方お前だなw
0776nobodyさん
2008/03/04(火) 15:09:59ID:???0777766
2008/03/04(火) 15:58:40ID:???CakePHPのビヘイビアは構造上モデルに依存するため
モデルを介さずコンポーネントとビヘイビアを
直接繋げるなど全く理解不能であり脳障害患者もいいところ。
って、分かってて言ってるんだろうけどね。
>>768
俺は「アリ」だと思う。
一般にMVCにおいて、コントローラはユーザからのリクエストを受け取り処理をモデルへ、表示をビューへ依頼するんだけど
モデルへのアクセスを必ずコントローラを通さなくてはならない、とは規定されていない。
現にMVCモデル図などググって見てみると表示担当のはずのビューからすらモデルへ矢印が引かれているだろ?
CakePHPのコントローラは「便利だから」簡単にモデルアクセスする機能が実装されているけど
それを理由に「コントローラ以外はモデルに触っちゃダメ」とは言っていないよね。
つまりコンポーネントからのモデルアクセスは設計的に十分可能であり、後はプロジェクトのコーディング規約次第。
心情的に、あっちこっちからモデルが参照されるとコ汚い感じがするよねって話なら同意。
AuthComponentはコンポーネント内で完結するには結構無理したよねって話も同意。
あれはCakePHPの開発チームが
「コントローラに$components = array('Auth')って書くだけで認証機能組み込めちゃうんだぜー!」
って言うために詰め込んだと思うんだ。アメはそういうの大好きだし。
>>775
>>776
ちげーよこの馬鹿ども。
0780nobodyさん
2008/03/04(火) 16:29:53ID:Zbgc5QoEパフォーマンス悪いのかな。実装にあたりPHPで書かなきゃいけなかったり、拡張子
がctpだったりと精神衛生的に気持ち悪い印象があります。
Smartyをビューコンポーネントとして使ったほうがいいのかな、結構利用者っていますかね
0781nobodyさん
2008/03/04(火) 19:28:59ID:???やっとまともなレスがw
なんかそういうサンプルレベルじゃなくて実運用レベルで
ちゃんとしたMVCになっているオープンソースのアプリ無いかな。
参考になる奴。
もう一つ別の疑問があって、Sessionはモデルではないのか?
という疑問。いろいろな理由で本来あるべき設計を崩すことに
抵抗は無いけど、本来あるべき設計というのを知りたいな。
0782nobodyさん
2008/03/04(火) 19:36:20ID:???拡張子が違うだけの生PHPだから、機能はPHPで出来ることすべてだし、
Smartyよりもパフォーマンスが悪いということは無いよ。
Smartyが使いたいのなら、それもありだと思うよ。
そういう記事結構あるし。ただやり方はいくつかあるっぽい。
どうせなら、綺麗に違和感なく組み込みたいが・・・。
0783nobodyさん
2008/03/05(水) 00:14:06ID:???Modelに保存しないので、Modelの$validate に設定する方法は使えません。
それでいながら、emailのチェックなどコントローラで
自力でやるのは面倒なので、Modelのvalidateで使える機能を
そのまま使いたいです。
0786nobodyさん
2008/03/05(水) 00:27:23ID:???Post/test
あとはコントローラーでvalidateチェックも出来るよ
0787nobodyさん
2008/03/05(水) 00:35:07ID:???$form->create(なんたら)
$form->input(なんたら)
$form->end(なんたら)
でフォームが作れて、データを送信できるのは知っています。
また、コントローラで$this->dateの入力チェックができるのもしっています。
ただ、こういうときに、validate変数に条件を定義するだけで
簡単に入力チェックができるModelの機能と
同等レベルの簡単さでコントローラで入力チェックがしたいのです。
0788nobodyさん
2008/03/05(水) 00:39:22ID:???'test' => VALID_NOT_EMPTY
って書けば出来るけど?
もうちょっと工夫してから文句言ってくれ
0790nobodyさん
2008/03/05(水) 00:51:56ID:???'test' => VALID_NOT_EMPTY,
);
0792nobodyさん
2008/03/05(水) 01:00:31ID:???じゃ、コントローラでチェックするしか無いじゃん。
しかもその縛りの理由がよくわかんね。
0793nobodyさん
2008/03/05(水) 01:02:02ID:???783 名前:nobodyさん[sage] 投稿日:2008/03/05(水) 00:14:06 ID:???
Formのバリデーションってどうやっていますか?
Modelに保存しないので、Modelの$validate に設定する方法は使えません。
それでいながら、emailのチェックなどコントローラで
自力でやるのは面倒なので、Modelのvalidateで使える機能を
そのまま使いたいです。
0794nobodyさん
2008/03/05(水) 01:06:21ID:???それすらしたくないなら、コントローラでやればいい。
0796nobodyさん
2008/03/05(水) 01:08:28ID:???0798nobodyさん
2008/03/05(水) 01:17:41ID:???0799nobodyさん
2008/03/05(水) 01:19:51ID:???最初のカキコにちゃんと書いているのに、
それを理解しないで見当はずれなレスをつけやがる。
まったく馬鹿につかまったもんだ。
ほかの人、お願いします。
どうにかモデルのバリデーション機能を有効活用できないでしょうかね?
単に関数を呼ぶだけなら簡単なんですが、そのエラーメッセージを
ちゃんと表示できるようにしようと思うと?で。
0800nobodyさん
2008/03/05(水) 01:26:17ID:???0801nobodyさん
2008/03/05(水) 01:42:45ID:???0802nobodyさん
2008/03/05(水) 01:46:23ID:???エラーを出すには、ClassRegistryあたりを呼び出さなきゃならないようだ。
そこに登録されていないと、$form->validationErrorsが設定されない。
ビューの頭で$form->validationErrorsを設定すればどうにか出せるが・・・
>>801
何度もいいますが、モデルは使いません。
0803nobodyさん
2008/03/05(水) 02:29:12ID:???その質問の仕方だと
0804nobodyさん
2008/03/05(水) 02:57:49ID:???たとえばセッションに保存したいとか。
0805nobodyさん
2008/03/05(水) 03:20:25ID:???$this->Hoge->set($this->data['Hoge']);
if ($this->Hoge->validates()) {
(成功)
} else {
(Viewに戻るとエラータグにvalidateのメッセージが表示される)
}
これじゃ駄目なの?
DBとの関連が無いModelなら別に使っても問題ないのでは?
0806nobodyさん
2008/03/05(水) 03:33:48ID:???だからセッションに保存するだけで、DBに保存しなくても。
モデルのバリデートを使用する事は出来るって答えもあったじゃん。
なんか根本的にコミュニケーションが上手くいって無いというか、もっと柔軟に考えたら?
自分が分かるからって他の人が分かるとは限らないし、目的が分かれば違うアプローチもあるかもしれないし。
まぁ、こんだけ答えてもらってありがたいと思わないんだから何言っても無駄だろうけど。
0807nobodyさん
2008/03/05(水) 04:11:55ID:???まともなのはないのか?
0808nobodyさん
2008/03/05(水) 04:25:34ID:???App:import('Core','Validation'); //これは多分いらんかも
$obj = Validation::getInstance();
あとてきとーにチェック
0809nobodyさん
2008/03/05(水) 04:30:30ID:???getInstanceでオブジェクト取得する必要は無さそう
Validation::ip();
とか
Validation::date();
で良いみたい
つーかこれぐらい探せば直ぐ見つかるだろうに・・・・
Model→バリデートメソッド検索→バリデート部分をざっくり読む→
Validationクラスが見つかる
0810nobodyさん
2008/03/05(水) 04:46:50ID:???因みに調べたcakeのバージョンは1.2の方ね
1.1は見てみたら仕様が糞過ぎるので自分でやった方が早い
0811nobodyさん
2008/03/05(水) 08:19:49ID:???エラーセットしてくれないしコントローラーでValidation::chibi($debu, $hage);を使うのは意味無さ過ぎね?
equalToなんてもう最高だよね
0812nobodyさん
2008/03/05(水) 09:35:38ID:???Model用に作ったFormのデータからカラム毎にvalidateしているのはModel自身
それなのにModel使うのが無理矢理とか言ってるんだから、後はもう自分で作れば?w
ていうか少しぐらい自分でソース読めよ
0814nobodyさん
2008/03/05(水) 10:30:12ID:???0817nobodyさん
2008/03/05(水) 13:11:50ID:???ここで聞く方がメンドクサイ。
0818nobodyさん
2008/03/05(水) 13:27:00ID:???一つのフォームで二つのテーブルにデータ格納するときとか、
どういうコードで保存して、それでちゃんとエラーメッセージを
出すようにするとかわけわからん。
単純な例では便利なのはわかるけど、コントローラからビュー(というかFormHelper)への
値(エラーメッセージ含む)のセットや「モデルのデータ型から適切なフォーム生成」の
所が見えないところで行われているからぜんぜん流れがつかめない。
0819nobodyさん
2008/03/05(水) 13:51:38ID:???0820nobodyさん
2008/03/05(水) 14:18:03ID:???>>781
CakePHPだと実運用しているサイト自体がまだ少ない上、バージョンによって仕様が激変するため
これだけは入れとけor見とけ!というキラーアプリはまだ出ていないな。YOU作っちゃいなよ。
まー何だかんだ言ってAuthComponentもかなりいいと思うぞ。例えば
----
アカウント名とパスワードを使ったログインが済んでいて、顧客区分がXXXまたは###かつ女性のユーザのみが
アクセスできるコントローラだが、%%%のアクションにだけはアクセスさせたくない。
----
…と頭の痛くなるアクセスコントロールなども少し頑張れば出来る。
モデルはデータの入出力を司るんだから、セッションもモデルの一部じゃね?という話なら理解できる。
データソースがあって、そこへの入出力があるからね。
俺は、モデルの扱うデータソースをほぼRDBMSに限るってルールは単純に歴史的なものだと思うぞ。
セッションは大量検索しないし、接続ごとに切れる特殊性があるだろ!とか言われるかもしれないんだけど
そもそもSQLを使うRDBMS自体が特殊で他と相容れないものなんだから、情報の入出力という観点で取捨選択した結果
最もコスト対効果の大きなものの(=RDBMS)サポートに専門化したんじゃないかな。
今後、XMLDBやODBMSやらが高速かつ手軽に投入できたり、誰かが言ってた
ステートフルWebアプリケーションとやらが台頭してきたら状況が変わってくるかもしれないけど。
つーかモデルってデータの出し入れだけじゃなくて、もっと広義の意味だとビジネスロジック全般を書く所なんだから
何でもかんでもコントローラに詰め込む最近の風習ってちょっと違和感ないか?
コントローラって要はユーザリクエストの受け口じゃん。
0821nobodyさん
2008/03/05(水) 14:20:05ID:???まずいケーキだってケーキ様が言っている。
http://cakephp.org/files/OCPHP.pdf
0822nobodyさん
2008/03/05(水) 14:26:43ID:???0823nobodyさん
2008/03/05(水) 14:35:10ID:???ソースコード見た?
さわりだけじゃなくて、完全に近いマニュアルが無い以上
ソース見なきゃいけないんだけど、$options[?]に何が使えるのか
混沌としすぎている。がんばれば出来るのかもしれないが、
あんなのとがんばるのはもう嫌だ。
もう俺は自作ヘルパーに置き換えたからどうでもいいけど、
管理画面はともかく、あれで思い通りに作るのは無理だろう。
たとえば、データベースの一行だけでなく、複数行をいっぺんに表形式で入力したい。
ここまでは質問&答えがあったきがするけど、
そのとき、どこか一行でもエラーがあれば全部保存しない(それはトランザクションで解決)
で、入力エラーがあったフィールドの下にエラーメッセージを表示させる。
自作のはさらに、同じテキストフィールド入力フォームでも
表形式の場合と通常の状態でプロパティ一つで形を変えられるようにしたり、
ビューのviewとeditでほぼ同じコードが使えるように、入力可能状態と
閲覧状態をフィールド名を指定することで切り替えたりする機能があるけどね。
■ このスレッドは過去ログ倉庫に格納されています