[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2chのread.cgiへ]
Update time : 07/03 16:30 / Filesize : 202 KB / Number-of Response : 839
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【PHP】フレームワーク CakePHP 17ホール目【v2.4】



1 名前:nobodyさん [2014/03/01(土) 17:03:24.57 ID:8AJ9GD6E]
CakePHPは、Ruby on Railsの概念の多くを取り入れた、Rails流の高速開発とPHPの機動性を兼ね備えたフレームワークです
CakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう

※他フレームワークとの比較等はスレ違いです

■本家
www.cakephp.org/
APIドキュメント
api.cakephp.org/
github - cakephp
github.com/cakephp
the Bakery
bakery.cakephp.org/
Issue
cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf

■日本語公式
cakephp.jp/
フォーラム
cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] book.cakephp.org/2.0/ja/index.html
[1.3] book.cakephp.org/ja

※前スレ
kohada.2ch.net/test/read.cgi/php/1378659370/

640 名前:nobodyさん mailto:sage [2014/06/06(金) 12:18:51.00 ID:???]
知らないだけだろ

641 名前:nobodyさん mailto:sage [2014/06/06(金) 13:35:54.13 ID:???]
>>640
今試しに同じデータベースを元にして Mac と Windows で bake したのを
git で比較したけど差分なかったぞ?

642 名前:nobodyさん mailto:sage [2014/06/06(金) 13:45:08.57 ID:???]
>>641
バージョンは?

CAKE_CORE_INCLUDE_PATHって何定義してる?

643 名前:nobodyさん mailto:sage [2014/06/06(金) 15:39:44.51 ID:???]
>>642
2.5.1
CAKE_CORE_INCLUDE_PATH はコアの Cake ディレクトリを格納している
ディレクトリのパス。

644 名前:nobodyさん mailto:sage [2014/06/06(金) 15:59:39.81 ID:???]
>>643
CAKE_CORE_INCLUDE_PATHに差があるんじゃない?

645 名前:nobodyさん mailto:sage [2014/06/06(金) 17:22:45.98 ID:???]
>>644
そりゃ絶対パスだから違うわけだけど、
bake して生成された結果には影響ないよ?

ちなみに今の論点はあくまでも
>bakeした時面倒なんだよ
に対する疑問ね。

646 名前:nobodyさん mailto:sage [2014/06/07(土) 13:17:32.00 ID:???]
composerについて
これは、phpファイルのみしか管理できないのですか?
例えばjqueryとか、画像も管理できるのでしょうか?

教えてください。
よろしくお願いします。

647 名前:nobodyさん mailto:sage [2014/06/07(土) 14:18:28.71 ID:???]
>>646
composerは基本、外部のライブラリを管理したり
プロジェクトの作成に利用したりするもの

jqueryは
component/jquery
を使えば管理できる

画像は外部のものなのかい?

648 名前:nobodyさん mailto:sage [2014/06/07(土) 14:22:04.06 ID:???]
>>647
ありがとうございます。
画像やjqueryはプラグインに入れようと思って、それをbitbucketで管理します。

全てのサイトでそのプラグインをcomposerで管理できるのかなとおもいまして。



649 名前:nobodyさん mailto:sage [2014/06/07(土) 14:26:11.05 ID:???]
>>648
bitbucketで
各々サイトと、jqueryのプラグインを別に管理したとして

>全てのサイトでそのプラグインをcomposerで管理できる
ってのは可能だよ

650 名前:nobodyさん mailto:sage [2014/06/07(土) 16:46:31.63 ID:???]
>>649
ありがとうございます!
早速やってみます。

651 名前:nobodyさん mailto:sage [2014/06/10(火) 09:20:20.15 ID:???]
cakephp.jp/modules/newbb/viewtopic.php?topic_id=1119&forum=8
これと同じ問題でハマってます
どうすればいい?
users/123 等の時は users/index/123にしたくて
users/read
users/edit
などアクション名を指定した時は、そのアクション実行したいのですが

652 名前:nobodyさん mailto:sage [2014/06/10(火) 10:48:00.76 ID:???]
>>651
正規表現で絞れば良いだけじゃないの?

Cakeは最近使ってないからわからんが

653 名前:nobodyさん mailto:sage [2014/06/10(火) 11:13:53.54 ID:???]
おお、性器表現も使えるのか
どこかにサンプルはないでしょうか?

654 名前:nobodyさん mailto:sage [2014/06/10(火) 13:57:21.11 ID:???]
>>653
api.cakephp.org/2.5/class-Router.html#_connect
book.cakephp.org/2.0/en/development/routing.html#route-elements

655 名前:nobodyさん mailto:sage [2014/06/10(火) 17:33:53.47 ID:???]
>>654
d
結局正規表現使わなかったけど、解決しました

656 名前:nobodyさん mailto:sage [2014/06/11(水) 00:44:51.34 ID:???]
twitterのように自分自身のユーザ情報のみ
編集可能にする方法を教えて下さい。
(他人のユーザ情報は編集不可、表示のみ)

657 名前:nobodyさん mailto:sage [2014/06/11(水) 00:46:47.80 ID:???]
ログインユーザと編集する対象のユーザが同じかどうか確かめればいいだけじゃん

658 名前:nobodyさん mailto:sage [2014/06/11(水) 00:51:45.60 ID:???]
>>657
ありがとうございます。
一致したら「編集」ボタンを表示する、などの処理をすれば良いのでしょうか?



659 名前:nobodyさん mailto:sage [2014/06/11(水) 01:06:59.37 ID:???]
基本的に信頼していいのは自分がプログラムにハードコーディングしたサーバ側の処理だけ
クライアント側は他にアプリを作ればどんなHTTPリクエストでも送れるからだ

編集ボタンを表示しないのも予防策にはなるが
根本的にはサーバ側でデータベースのアップデートやセーブやデリートをする前に
CRUDの対象となるレコードがログインユーザ自身のものかどうかを確認するステップが必要
より具体的にはログインユーザのIDと更新するユーザテーブルのレコードのIDが一致するかどうかだ

660 名前:nobodyさん mailto:sage [2014/06/11(水) 02:19:09.44 ID:???]
>>658 は、ちゃんと >>659 の言ってることを理解できたのだろうか・・・

661 名前:nobodyさん mailto:sage [2014/06/11(水) 08:53:19.95 ID:???]
リクエストにユーザーIDをつけない

662 名前:nobodyさん mailto:sage [2014/06/11(水) 10:34:05.54 ID:???]
あれ?
ユーザー情報の更新のリクエストにユーザーIDを含むようなフォームを作ったとしても
Cakeのパラメータ改ざんとCSRFのチェックが有効なら
悪意あるユーザーがフォームを改ざんして他のユーザーIDに変えたら
パラメータ改ざんチェックで引っかからんのかい?
教えてエロい人


まあそれでも>>661みたいに根本的に他のユーザの情報を更新できないようにしたほうが安心安全か
人為的なミスも起きにくいし

データベースを変更しないユーザー情報表示画面の時だけリクエストにユーザーIDを含める
ユーザー更新・削除時は対象レコードの選択にログインユーザのIDをそのまま使う

663 名前:nobodyさん mailto:sage [2014/06/11(水) 17:28:51.09 ID:???]
>>662
CSRF対策は、そのページに行くまで正しい経路をたどってるかどうか
フォーム改ざんは、そのページに含まれるポスト対象のフィールドが正しいかどうか

のチェックだったはず。なので、POSTされるフィールド値を変更されたとしても、
Cake側では対応できないはず。

664 名前:nobodyさん mailto:sage [2014/06/11(水) 20:19:39.05 ID:???]
ありがとうございます。
皆様のおかげでテストケースの有用性がわかるようになりました。
composerの便利さも。

jenkinsとかはどうなんですか?

665 名前:nobodyさん mailto:sage [2014/06/11(水) 21:00:28.09 ID:???]
>>568の問題、2.5でも直ってねーじゃねーか

AppControllerを継承したAdminControllerを継承したEventControllerを動かしたら
AdminControllerのusesに書いてあるモデルが、AdminControllerのbeforeFilter内で使えなかったぞ
EventControllerのusesに追加したら動いたが、なんだかなー

666 名前:nobodyさん mailto:sage [2014/06/11(水) 21:09:11.43 ID:???]
>>665
マージする継承クラスを指定できるパラメータがあったはず。
ドキュメント読んでみて。

667 名前:nobodyさん mailto:sage [2014/06/11(水) 21:52:04.25 ID:???]
>>666
$_mergeParentのことか?
これでAdminControllerを指定したら、今度はAppControllerをマージしてくれないからダメ。
ぐぐったらこれ皆困ってるらしくてそれぞれ独自に_mergeVarsを改造したりして直してるな。
なんでこの問題公式が放置してるんだ?

668 名前:nobodyさん mailto:sage [2014/06/11(水) 22:06:20.17 ID:???]
>>667
あ、本当だな。
CakePHPが糞と言われるのがよく分かるwww



669 名前:nobodyさん mailto:sage [2014/06/11(水) 22:07:34.04 ID:???]
それがCakeクオリティ!
3の開発で忙しいんじゃないかな(*´∀`*)

670 名前:nobodyさん mailto:sage [2014/06/11(水) 22:43:50.86 ID:???]
糞とか言ってる暇があったら issue 出すか、プルリクしろよ。



オレはやんないけど。

671 名前:nobodyさん mailto:sage [2014/06/12(木) 01:35:46.71 ID:???]
>>670 出したところで却下かと。

>>667 はいくつかのコントローラに共通する機能が必要なら、
その時は継承ではなくてコンポーネントを作ったらどうかな?
コンポーネントはそのために存在しているわけだし。

共通機能を継承で得ようとするのは、言語やフレームワークを問わず、
あんまり良い選択ではないと思うけど。

672 名前:nobodyさん mailto:sage [2014/06/12(木) 01:39:01.21 ID:???]
え?
うーむこれがPHP脳というやつか

673 名前:nobodyさん mailto:sage [2014/06/12(木) 01:48:11.52 ID:???]
>>672
言語は問わないと書いたがな。
たとえば

EffectiveJava 第4章 項目14「継承よりコンポジションを選ぶ」

コンポーネントは文字通りこのコンポジションパターンだよ。

674 名前:nobodyさん mailto:sage [2014/06/12(木) 02:42:37.90 ID:???]
>>671
>>665の例で言うと、EventController(他にもあるが)は管理者専用機能のコントローラである。
管理者用コントローラに共通の処理(ログインなど)をAdminControllerに書き、EventControllerはそれを継承した。
同じことをコンポーネントでやろうとすると、すべての管理者用コントローラーに
まったく同じコード(コンポーネントのメソッドを呼び出すコード)を書かねばならないのでは?
非常に不便だと思うが、俺が勘違いしてたら教えて欲しい。

675 名前:nobodyさん mailto:sage [2014/06/12(木) 02:56:04.36 ID:???]
Controller::beforeFilter() に言及してたから、
その処理なら Component::startup() でいいんじゃないかと思ったんだけど、どうだろう?

場合によってはメソッドの呼び出しも必要になるけれども
けど、それは parent:: で親クラスのメソッドを呼ぶのとそれほど変わりないのかなと。

676 名前:nobodyさん mailto:sage [2014/06/12(木) 02:57:29.99 ID:???]
>>671 がややずれてるのは
>いくつかのコントローラに共通する機能

としてるけど、>>665 で問題にしてるのは
広い意味では機能で間違いないんだけど
単に設定値である点においてズレてる。

ここではそれこそ、コンポーネントの
使い方なんかを指定しているわけで、
これは継承してほしいと思うよ。

677 名前:nobodyさん mailto:sage [2014/06/12(木) 03:11:49.49 ID:???]
>>676
1.x系からのふるまいだから、仕様変更が入る可能性は低くないかな。

どうしても継承の継承が必要なケースで
さらに、孫クラスに基底クラスから継承させたいパラメータがあるなら
基底クラスのコンストラクタで $this->uses に入れればいいわけだし。

678 名前:nobodyさん mailto:sage [2014/06/12(木) 09:12:51.74 ID:???]
こんなゴミなもの対応されたら
また名が廃る



679 名前:nobodyさん mailto:sage [2014/06/12(木) 11:19:04.70 ID:???]
3のソースからは $_mergeParent は消えてるみたいだな。

680 名前:nobodyさん mailto:sage [2014/06/12(木) 11:22:15.38 ID:???]
常識的に考えて、マージしないとおかしいだろ
何だこの仕様

681 名前:nobodyさん mailto:sage [2014/06/12(木) 11:22:23.38 ID:???]
3使ってる人いるん?
どんな感じですか?

682 名前:nobodyさん mailto:sage [2014/06/12(木) 11:28:47.32 ID:???]
3は継承全部マージされるよ

パフォーマンスはお察し

683 名前:nobodyさん mailto:sage [2014/06/12(木) 12:11:49.21 ID:???]
3に苦労して移行するくらいなら、LaravelとかRailsに移るかな。
使ってこそのフレームワークだから、コミュニティの勢いは重要。

684 名前:nobodyさん mailto:sage [2014/06/12(木) 12:25:24.65 ID:???]
cakeとsymfonyが本命FWとして争っていた時期が懐かしい

685 名前:nobodyさん mailto:sage [2014/06/12(木) 13:23:35.06 ID:???]
みんな良く勉強できるな。他の言語に移るのは辛いわ。。。

686 名前:nobodyさん mailto:sage [2014/06/13(金) 08:29:35.00 ID:???]
Cake使い続けるほうが長期的に見て辛い

687 名前:nobodyさん mailto:sage [2014/06/13(金) 08:39:23.01 ID:???]
それはあるw
書いたコードの分だけ、負債がどんどん増えていく

688 名前:nobodyさん mailto:sage [2014/06/13(金) 09:00:43.34 ID:???]
その負債の原因がCakeではなく自分にあるとも気づかぬままにw



689 名前:nobodyさん mailto:sage [2014/06/13(金) 10:44:08.86 ID:???]
管理者用の機能って、Adminコントローラを作るんじゃなくて
adminプレフィクスを使うのが一般的な方法だと思っていたんだが
実際のところみんなはどうやっているんだ?

690 名前:nobodyさん mailto:sage [2014/06/13(金) 11:00:42.12 ID:???]
>>689
俺はクッキーでログイン画面作って、セッション有る無しでview表示を少し変えてる。
ずっとこれでやってるけど。。。
ダメかな?

691 名前:nobodyさん mailto:sage [2014/06/13(金) 12:20:32.10 ID:???]
一般利用者も管理者も同じaction通してるってことか。
全体的に管理者の機能が一般利用者とそんなに変わらなければそれでもいいのかもね。
プレフィクスを切っている場合でも

public function admin_search() {
$this->search();
}

なんてコードは実際に書かれるわけで。

692 名前:nobodyさん mailto:sage [2014/06/13(金) 14:29:24.42 ID:???]
>>689
面白そうだったんで最初やってみたけど、
同じクラスにヤバいアクションが混在するのが気持ち悪い。
それ以降やったこと無いな。

>>690
表示だけならそれでいいんじゃない?

693 名前:nobodyさん mailto:sage [2014/06/13(金) 17:20:45.32 ID:???]
俺は管理画面と一般画面のappは分けてるよ
管理画面だけ変えたい設定(キャッシュしないとかdebug2とか)があるし。

694 名前:nobodyさん mailto:sage [2014/06/14(土) 17:11:30.81 ID:???]
みなさん、ホーム画面ってどのコントローラーでやってます?
ホーム用のコントローラーを作るか既存のコントローラーでやるか

695 名前:nobodyさん mailto:sage [2014/06/14(土) 17:15:43.40 ID:???]
ホーム専用

696 名前:nobodyさん mailto:sage [2014/06/14(土) 17:19:19.02 ID:???]
専用じゃないや
HomesControllerだけど他にもaboutとかシンプルなページと兼用

697 名前:nobodyさん mailto:sage [2014/06/14(土) 17:26:13.81 ID:???]
>>696
その場合、コントローラー付きで直アクセスされた場合、
何かリダイレクト処理を入れてるんですか?
(/homes/indexとか/homes/aboutでアクセスされた場合)

698 名前:nobodyさん mailto:sage [2014/06/14(土) 17:37:45.91 ID:???]
>>697
routes.php弄る



699 名前:nobodyさん mailto:sage [2014/06/14(土) 17:42:44.81 ID:???]
あ、違うな
対策はしてない
最近やってないから忘れてる…

700 名前:nobodyさん [2014/06/14(土) 18:59:09.94 ID:dq/AB5k+]
ルーティングについて質問です。
URLに「hoge」がついていたら、パラメーターをhogeとして受け取りたいです。

/users/        →UsersControllerのindexアクション
/users/detail     →UsersControllerのdetailアクション
/hoge/users/     →UsersControllerのindexアクションでパラメーターhoge
/hoge/users/detail →UsersControllerのdetailアクションでパラメーターhoge

というイメージなのですが、こういう事はルーティングの設定で可能でしょうか?
可能なら書き方を教えてください。2.4系を使用しています。

701 名前:nobodyさん mailto:sage [2014/06/14(土) 21:50:21.39 ID:???]
>>700
できるよ


/* /hoge/users/ がマッチする設定 */
$route = '/hoge/users/';
$defaults = array('controller' => 'users', 'action' => 'index', 'hoge');
Router::connect($route, $defaults);

/* /hoge/users/ がマッチする設定 */
$route = '/hoge/users/:action';
$defaults = array('controller' => 'users', 'hoge');
Router::connect($route, $defaults);

/* /users/ と /users/detail は設定なしの標準でマッチ */

702 名前:nobodyさん mailto:sage [2014/06/14(土) 21:54:32.07 ID:???]
あ、コメントミスった。正しくはこっち


/* (1) /hoge/users/ がマッチする設定 */
$route = '/hoge/users/';
$defaults = array('controller' => 'users', 'action' => 'index', 'hoge');
Router::connect($route, $defaults);

/* (2) /hoge/users/detail などがマッチする設定 */
$route = '/hoge/users/:action';
$defaults = array('controller' => 'users', 'hoge');
Router::connect($route, $defaults);


/users/ と /users/detail は設定なしの標準でマッチ
(2) のパターンは detail 以外のアクションにも適用されることに注意して。
もしアクションを限定したいのなら別の書き方が必要。

703 名前:700 mailto:sage [2014/06/15(日) 00:45:45.76 ID:???]
>>701-702
ありがとうございます。大変参考になりました。

704 名前:nobodyさん mailto:sage [2014/06/15(日) 14:07:12.52 ID:???]
フォームヘルパーのinput作成のname部分を
data[Model][name]→nameにする方法って無いでしょうか?

705 名前:nobodyさん mailto:sage [2014/06/15(日) 16:51:00.51 ID:???]
>>704

FormHelper のパラメータでってことなら不可。

706 名前:nobodyさん mailto:sage [2014/06/15(日) 17:42:36.89 ID:???]
>>705
やっぱり無理ですか。諦めます

707 名前:336 mailto:sage [2014/06/15(日) 18:33:33.91 ID:???]
>>706
オーバーライドして、アウトプットを置換するだけじゃん

708 名前:nobodyさん mailto:sage [2014/06/16(月) 00:20:49.49 ID:???]
フォームヘルパー本当に使い辛い
散々ハマった挙げ句、自分でFormタグ書いてるわ



709 名前:nobodyさん [2014/06/16(月) 12:40:04.49 ID:2sVNmbqM]
現在、cakeのAuth認証を使ってログインシステムを作っているのですが
一度登録済のパスワードをユーザ操作により変更した場合、
パスワードの認証対象の値はハッシュ値で自動でDBに登録されるのですが
それを再び登録し直すにはどうすれば良いのでしょうか?


例)
[入力パスワード]  [ハッシュ値]
testpass  ijierwaaasdfkjiewi32jasdfkj3

↓ ユーザがパスワードを変更した場合
testpass2 asdafasdfasjd・・・etc ←ハッシュ化する関数は何でしょうか?

710 名前:nobodyさん mailto:sage [2014/06/16(月) 18:38:51.83 ID:???]
フィームヘルパーのselectで0の値が空欄になるのは仕様ですか?

711 名前:nobodyさん mailto:sage [2014/06/17(火) 00:26:53.74 ID:???]
>>709
Security::hash($password, null, null)

ちなみに v2.4 までは
AuthComponent::password($password)
だったけど、2.5 からは非推奨。

712 名前:nobodyさん mailto:sage [2014/06/17(火) 00:34:56.25 ID:???]
Security::hash() の第2と第3パラメータは要らないみたいだ

Security::hash($password)
でOK

713 名前:nobodyさん mailto:sage [2014/06/17(火) 06:18:50.52 ID:???]
CakePHPてprimary idは必ずauto incrementのintでないと駄目なん?
INSERT時にidがnullであることを前提にしてるから、自前でid渡すと
バリデーション時にisUniqueやonCreateの指定がうまくいかなくなるね。
これはCakeではそういうもんなのか。自前でバリデーション書くしかないのか。

714 名前:nobodyさん mailto:sage [2014/06/17(火) 11:33:53.22 ID:???]
>>713
Model::$primaryKey で設定
動的な変更も可
複数キーは不可。3から対応

715 名前:nobodyさん mailto:sage [2014/06/17(火) 11:38:54.51 ID:???]
>>713

>バリデーション時にisUniqueやonCreateの指定がうまくいかなくなるね。

そうか?

716 名前:nobodyさん mailto:sage [2014/06/17(火) 12:03:04.11 ID:???]
>>714
それはもちろん指定してる。
だが、isUniqueやonCreateはうまくいかなかった。
結局数字のidを追加して対応した。

717 名前:nobodyさん mailto:sage [2014/06/17(火) 12:32:01.97 ID:???]
あぁ、そういうことか。なるほど。
onCreate は使ったこと無いんでよく分からんけど、
isUnique は、保存前に Model::$id をセットしてやってもダメなん?

718 名前:nobodyさん mailto:sage [2014/06/17(火) 16:22:43.39 ID:???]
>>717
それは試してないな。primaryKeyの名前がidじゃなかったから、idは一切いじらなかった。
Model::isUniqueのソースあらためて見たら、$this->idにNULLを入れていたらうまくいったかもしれん。



719 名前:nobodyさん mailto:sage [2014/06/17(火) 17:08:04.87 ID:???]
Model::$id は、primaryKey の値のことなので、
スキーマのフィールド名が id であるかどうかとは無関係。

720 名前:nobodyさん mailto:sage [2014/06/18(水) 03:28:03.88 ID:???]
>>719
なるほど!
後で試してみよう

721 名前:nobodyさん [2014/06/18(水) 12:55:32.95 ID:1XJ5G0pn]
すみません、今ドットインストールの講座が終わりまして、
自分でCakePHPのサイトを作ろうと思っているのですが、気になった点がありました。

今、作ろうとしているサイトは、ポートフォリオ系になるので、
自分が作ったゲームやWebサイトを置く予定であります。
CakePHPを使う必要性は薄いのですが、フレームワーク経験が必須なため、
経験を積むという意味で、CakePHPを使用しました。
そして、サイトには、大きく分類して、トップページ、ゲーム、Webサイト、リンクがあり、
それぞれ、topsテーブル、gamesテーブル、sitesテーブル、linksテーブルがあります。

そこで、気になったのが、
CakePHPでは、Controller、View、Model、データテーブルの名前を揃えなければならないと習ったのですが、
そうなると、出力するテーブルが違う場合は、GamesController、SiteControllerのように、
コントローラーとフォルダを用意すべきでしょうか。
それとも、1つのコントローラー、1つのViewフォルダにまとめられるでしょうか?

722 名前:nobodyさん mailto:sage [2014/06/18(水) 13:01:47.43 ID:???]
好きなようにすれば良い

723 名前:nobodyさん [2014/06/18(水) 13:23:44.25 ID:1XJ5G0pn]
つまり、Controller名、フォルダ名と異なるテーブルを使用することは可能で、
特に問題ないとのことでしょうか?

724 名前:nobodyさん mailto:sage [2014/06/18(水) 14:07:44.93 ID:???]
>>721
topsってテーブルが気になるな。何があるテーブルか分からん。
sitesテーブルとlinksテーブルの違いとか。

お前さんの用途は「自作のゲームやWebサイトの情報を公開する」だろ?
じゃ、「products」テーブルだけか、分けても「links」「games」だけだと思うんだが。

あと、基本的なCakeの命名規則が分かってないよ。

Controller:GamesController
Model  :GameModel
View   :Games
テーブル:games

725 名前:nobodyさん [2014/06/18(水) 14:20:51.04 ID:lT0uB39l]
>>711 >>712

ありがとうございます!!

726 名前:nobodyさん [2014/06/18(水) 14:29:45.54 ID:1XJ5G0pn]
説明がたりませんでした、申し訳ありません。
Webサイトに載せるのは、ゲームとWebサイトです。

topsは、トップページなのですが、ここに更新履歴を置くところです
sitesは、メインとなるホームページ以外に作った、Webサイトを置くところです。
ここでは、ゲーム以外の製作物と認識してくだされば十分です。
linksは、素材とかをお借りしたサイトとかへのリンクです。
gamesテーブルとsitesテーブルは、productsテーブルにまとめたほうがよさそうです。
ご助言ありがとうございます。

そうなると、
Controller:TopsController
Model  :TopModel
View   :Tops
テーブル:tops

Controller:GamesController
Model  :GameModel
View   :Games
テーブル:games

Controller:LinksController
Model  :LinkModel
View   :Links
テーブル:link

という風に分けた方が、使用するテーブル単位で分けた方が無難ということでしょうか

727 名前:nobodyさん mailto:sage [2014/06/18(水) 15:13:40.83 ID:???]
だからtopsって何なんだよw
更新履歴ならnewsとかupdatesとかにしたらどうだ?

728 名前:nobodyさん mailto:sage [2014/06/18(水) 15:41:33.35 ID:???]
1XJ5G0pnはもう少し勉強したほうがいいな。根本的なMVCが分かってない



729 名前:nobodyさん mailto:sage [2014/06/18(水) 15:45:20.63 ID:???]
いや英語を勉強した方がいい

730 名前:nobodyさん [2014/06/18(水) 16:30:07.27 ID:1XJ5G0pn]
すみません、画面名からテーブル名作ってしまいました。
最初は、更新履歴を表したテーブル名は、newsでつけていたのですが、
コントローラー名とフォルダ名を揃えなければならないということ思い出して、
それでトップ画面の名前を、更新履歴のテーブル名にしてしまいました。
(トップ画面に更新履歴を表示させるため)

それで、テーブル名とコントローラー名、フォルダ名がずれていても問題ないということでしょうか?

731 名前:nobodyさん mailto:sage [2014/06/18(水) 16:39:06.81 ID:???]
モデルとコントローラはむしろずれてないとバグりやすくなるだろ。
1画面にニュースとリンクを両方表示したいときどうするつもりだ?

画面に名前をつけたのがView、データの集まりに名前をつけたのがModel。
Cakeでは便宜上Viewのフォルダ名とコントローラ名を合わせると幸せになれるというだけ。

732 名前:nobodyさん mailto:sage [2014/06/18(水) 16:39:37.90 ID:???]
ずれるの意味が分からんが、MVCでバラバラなら問題あるだろ

733 名前:nobodyさん [2014/06/18(水) 16:59:54.99 ID:ma+gijMn]
秒速で1億稼ぐ豚が・・・レイプ

www.tanteifile.com/diary/2014/06/17_01/

734 名前:nobodyさん mailto:sage [2014/06/18(水) 17:34:03.35 ID:???]
上の方でも誰か書いてるけど、1XJ5G0pn はまず好きにすればいい。

つまり、いろいろ質問してるけど、とにかくやってみてから
問題を見つけて行ったほうがいい。

手を動かさない奴に何をいっても無駄だ。

>という風に分けた方が、使用するテーブル単位で分けた方が無難ということでしょうか

などという小賢しい質問をする前にまず作れ。
そして壊して作りなおせ。

735 名前:nobodyさん mailto:sage [2014/06/18(水) 23:32:42.92 ID:???]
Cakeマスターの皆さんに質問

ViewからModelのvalidateを参照して、「名前は○文字までです」みたいな表示をしたい。
ベストプラクティスなやり方ありますかね?

もしくはViewからもModelからも見える所に数値のdefineを置くべきだろうか。

736 名前:nobodyさん mailto:sage [2014/06/19(木) 00:35:54.86 ID:???]
>>735
文字数制限をViewでも管理したいってことか?
そう頻繁に変わるものじゃないから、
Viewに直接注意書きを書くのが一番だと思うが

737 名前:nobodyさん mailto:sage [2014/06/19(木) 01:10:02.52 ID:???]
うちは最近設定値関係は Config に json で保存するパターンを試してる。
パーサのオーバーヘッドが多少気になるけど、まぁ悪くない。

738 名前:nobodyさん mailto:sage [2014/06/19(木) 01:18:19.13 ID:???]
>>736
Viewから変更する必要はなく、注意書きを書きたいだけなんだよね
制限文字数なんかは後から変更される可能性があるので、ModelとViewの両方に直書きしたくない
やはり設定ファイル式にすべきか



739 名前:nobodyさん mailto:sage [2014/06/19(木) 02:04:30.51 ID:???]
Configモデルに数値を保存してコントローラーから操作すればいいじゃん。
モデルキャッシュを使うと、重くならないぞ

740 名前:nobodyさん mailto:sage [2014/06/19(木) 02:06:51.32 ID:???]
viewからmodelを参照するのは全く構わないと思う。俺はviewからいつでもmodelのインスタンスを参照できるように$getmodel('Foo')みたいなクロージャを用意してるので、バリデーションルールにもアクセスできる。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<202KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef