トップページ⇒php
1002コメント356KB

【PHP】フレームワーク CakePHP 17ホール目【v3α】

■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん2014/08/02(土) 21:57:41.01ID:LI0DdohH
CakePHPは、Ruby on Railsの概念の多くを取り入れた、高速開発とPHPの機動性を兼ね備えたフレームワーク
質問するときはCakePHPのバージョンを書きましょう

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

■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
cookbook(マニュアル)
[3.x] http://book.cakephp.org/3.0/
[2.x] http://book.cakephp.org/2.0/ja/
[1.3] http://book.cakephp.org/1.3/ja/
Twitter
https://twitter.com/cakephp
Facebook
https://www.facebook.com/CakePHP

■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/


※前スレ
http://kanae.2ch.net/test/read.cgi/php/1393661004/
0511nobodyさん2015/06/03(水) 21:23:59.28ID:???
↑
黙れバカ。ぐぐれ。
0512nobodyさん2015/06/03(水) 22:20:10.80ID:???
教えてやろうと思ったけど、511のツッコミに糞ワロタwwww
さすがにそのレベルだと回答するのも馬鹿馬鹿しくなるな
0513nobodyさん2015/06/03(水) 23:07:24.18ID:???
まずドキュメント読めよ
0514nobodyさん2015/06/04(木) 01:17:22.59ID:???
>>510は解決しました。
0515nobodyさん2015/06/04(木) 01:26:07.24ID:???
よくがんばりました
0516nobodyさん2015/06/04(木) 21:42:11.27ID:???
このレベルの人がnginxでcakephpを動かそうとする現代のスゴさ
0517nobodyさん2015/06/04(木) 21:57:48.06ID:???
普通にレンタルサーバ使えよな
0518nobodyさん2015/06/06(土) 00:04:16.21ID:rAdaJfyp
障碍者をしばいている天下り施設

https://www.youtube.com/watch?v=Tk--WgBtIBA
0519nobodyさん2015/06/10(水) 10:26:16.68ID:???
CakePHPとオレオレPHPフレームワークで作られたシステムを統合しなくてはならず困っています。

マスタ統合+リバースプロキシでシステム間を往き来できるようにはなったのですが

�@UI統一のためメニューバーを共通部品化したいが、テンプレートエンジンが異なるため統合できない、そうなると今後その部分の二重管理が避けられなくなってしまう。

�Aログイン認証をどちらかのフレームワークに寄せたいがログインセッションを共通で読めるようにする方法がわからない。例えばオレオレフレームワークでCakePHPが読めるセッションを作るといったことが出来るのか??

という問題にぶち当たり頭を抱えております。

�@�Aについてみなさまのお知恵を拝借できないでしょうか?
0520nobodyさん2015/06/10(水) 22:11:05.57ID:???
>>519
こら!うちの仕事を2CHで質問するな!
0521nobodyさん2015/06/11(木) 00:25:48.84ID:???
>>519
頑張ってCakePHPで全部ゼロから作る
0522nobodyさん2015/06/11(木) 04:13:08.75ID:???
>>519
Cakeなんて辞めてオレオレフレームワークに寄せちゃいなよ(白目
0523nobodyさん2015/06/11(木) 08:53:44.17ID:???
今後のメンテナンス性を考えたらどっちかに寄せるのが得策ですよね。
0524nobodyさん2015/06/11(木) 12:09:32.15ID:???
俺はCakeに寄せたオレオレフレームワーク作ったよ
0525nobodyさん2015/06/17(水) 23:44:34.95ID:???
>>519
俺なら断る仕事だな。
それか全部作り直しを提案する。
0526nobodyさん2015/06/19(金) 12:17:16.27ID:SOLYvyQT
userの管理としてUsersコントローラ内では
$this->Auth->user()をうまく拾えるのですが、
これを例えば、Fooコントローラ内で
同じものを拾いたい場合どうすればいいか、
教えて頂けますでしょうか。

AuthComponent::$sessionKeyを同じものにしても
だめでした。
0527nobodyさん2015/06/19(金) 16:02:48.79ID:???
>>526
Appコントローラーにauthコンポーネントをつけておけばいいんじゃないの
0528nobodyさん2015/06/19(金) 17:23:30.81ID:???
>>527
つーか、普通はAppControllerにauthコンポーネントつけね?
0529nobodyさん2015/06/19(金) 17:24:12.68ID:???
>>527
ごめん、528はなしで。同じ事言ってるわw
0530nobodyさん2015/06/22(月) 14:29:35.10ID:L3kxYzS9
モデルからモデルを呼ぶのって、MVC的にNGだったりする?
モデル同士が密結合になるから微妙なカンジがするんだけど、コントローラーでやろうとすると、どんどん太っていくし。
0531nobodyさん2015/06/22(月) 15:01:33.87ID:???
>>530
そんなあなたにビヘイビア。
0532nobodyさん2015/06/22(月) 16:41:23.12ID:???
一方向に限定するならいいじゃないの
0533nobodyさん2015/06/23(火) 09:29:54.07ID:P4/MrXim
1対多の関係で編集する時どうしてますか?
例えば1ユーザー(Userモデル)が自分の趣味を設定できるとします。
趣味はHobbyモデルで複数選択できます。

この時、登録時は単にsaveすればいいので問題無いですが、
編集時はどうすればいいのでしょう?
一旦、Hobbyに登録されているuser_idが該当するデータを削除した後、
追加という形でしょうか?

それともHobbyモデルの該当するuser_idを一旦取得して、
新たに選択したデータを追加、選択を外したデータを削除
という形がよいでしょうか?

どちらもなんか違う気がしてるので、良い方法があれば教えてください。
05345332015/06/24(水) 17:26:48.43ID:???
自己レスです。UserとHobbyの関係をhasAndBelongsToManyにすると
編集時は一旦全削除されて新たに追加という形になっていました。
ですので、>>533は前者の方法で正しいみたいです。
0535nobodyさん2015/07/02(木) 17:37:38.09ID:Bg3Tlr0u
2.6.7を使っています。Searchプラグインの使い方について教えて下さい。

checkboxで複数検索した時、URLが
/posts?category%5B0%5D=1&category%5B1%5D=2

みたいになります。チェックボックスの数だけ
「category%5B0%5D」のパラメータが増えると思うのですが、これで正しいのでしょうか?
(実際に絞り込みができるので、正しいかもしれませんが・・・)

カラムが1つでカンマ区切りとか複数指定する方法があれば教えてください。
0536nobodyさん2015/07/07(火) 18:57:43.11ID:???
titleタグとかmetaタグってビューから設定するしか無いんですかね?
ビューにあまりプログラムを書きたくないのですが
0537nobodyさん2015/07/12(日) 13:42:48.57ID:???
暇つぶしに覗いて見たけど あり得ない女が・・
見返りをもらって損はしなかったww
超本命が大穴

※を取って ∇をcに置き換え 
s※nn2∇h.net/s11/465rty.jpg
0538nobodyさん2015/07/12(日) 13:58:45.58ID:???
>>537
NGワード規制されてやんのwwww
ぷぷぷぷwwwwww
0539nobodyさん2015/07/13(月) 03:11:40.57ID:???
ローラのダイエット日記

http://rola-diet.sblo.jp/
0540nobodyさん2015/07/13(月) 21:23:44.80ID:???
2.7リリースはいいけど、cookbookもきちんと更新してほしい
0541nobodyさん2015/07/13(月) 23:12:26.27ID:???
質問しても誰も答えなくなったね
0542nobodyさん2015/07/14(火) 01:13:58.74ID:???
もうcakephpも10年位たつのか
はえーな
0543nobodyさん2015/07/14(火) 03:47:01.98ID:???
>541
もともと2chって質疑をやるには向いてないと思う
仮に回答があったとして何を根拠に信用できるかというのもある
cakeの場合 >1 にあるようなユーザフォーラムもあるし
ja.stackoverflow.com みたいなところだってあるからそういうところを活用すべきでは
0544nobodyさん2015/07/14(火) 21:00:51.06ID:???
Cakeって美味しいの?
0545nobodyさん2015/07/15(水) 10:22:55.73ID:???
おいしいお
0546nobodyさん2015/07/19(日) 12:03:10.80ID:???
ユーザーフォーラムも過疎ってるんとちゃうの
ここのほうがまだレス付きそう
0547nobodyさん2015/07/20(月) 05:50:38.35ID:kX6qAGro
今日からがんばるお
0548nobodyさん2015/07/20(月) 14:06:13.04ID:???
なにお?
0549nobodyさん2015/08/05(水) 20:18:38.91ID:???
みんな……。息してるか……?
0550nobodyさん2015/08/05(水) 23:24:25.23ID:???
別にネタないし・・・
0551nobodyさん2015/08/07(金) 11:17:17.91ID:???
先ほど2.xで重要なセキュリティ修正がリリースされました。特に admin_ のような prefix ルーティングを行っている人は必ず適応してください。
リリースのない2.5未満のバージョンを使っている人は差分を見て自力でホットフィクスを行ってください。
0552nobodyさん2015/08/08(土) 00:19:49.90ID:???
>>551 パッチは「適応」じゃなくて「適用」するものな。
まァ、12時間前の俺なんだけど。てか、しばらく来ないうちに過疎りすぎだろ。
0553nobodyさん2015/08/08(土) 02:29:19.95ID:???
>>551
いつもいつもありがとうございます
0554nobodyさん2015/08/08(土) 03:00:35.95ID:???
>>553 どういたしまして
0555nobodyさん2015/08/08(土) 03:18:03.61ID:???
ちなみに今回みたいなセキュリティバグはどうやって見つけてるんですか?
運用で発覚してるのか、それともコードレビューで見つけてるのか。。、
0556nobodyさん2015/08/08(土) 07:08:36.37ID:???
コードレビューですね。レビュー会をやっているわけではなくて個人的に。
人が書いたコードを読むのは勉強になるので。
0557nobodyさん2015/08/08(土) 11:57:41.64ID:???
>>555
コード見ずにテストする方法では検出が不可能か、極めて難しい問題ってのが有るんだよ。
そして負荷が高くなった時とかまれにしか発生しないが重大な問題になりがち。

だからコードを見ないでテストすることにも一定の意味はあるが、
コードを見て問題点を探す作業、つまり>>556もいってるコードレビューね。
これは 絶対に 省くことは出来ない。

コードレビューを軽視して、仕様ばっかり見ているような所はダメなところだよ。

んで、コードレビューという作業は、他人の書いた難解なコードを解読する 作業じゃない。
っていうかそんなの馬鹿じゃない?

Aさん「難しい問題作りました!」
Bさん「難しい。うーん、うーん。あっ分かった!」

お前ら、謎解き合戦でもして遊んでるのか? それで誰が喜ぶんだ?って。

読めないコードは、読む人の技術不足じゃない。書く人の技術不足だ。
読めなければ書き直しを言い渡して良い。
(もちろん言語の文法が理解できないっていうのは、読む人の技術不足。
文法がわからないからっていうのは、書き直しの理由にはならない)
0558nobodyさん2015/08/08(土) 12:13:44.49ID:???
>>557
自分立ち入りで書いたソースならコードレビューするけど、さすがにフレームワークはしないでしょ。
今回みたいに興味があってするとか、運用で問題発覚して解析するというのは別として。
0559nobodyさん2015/08/08(土) 20:59:26.33ID:???
基本的にアップデートってそのまま上書きしたらいいの?
何か使えなくなるコードがあったりしない?
0560nobodyさん2015/08/08(土) 22:16:15.83ID:???
>>559
俺も思う。だから俺は何もしない。
0561nobodyさん2015/08/08(土) 22:19:04.30ID:???
composer を使っていなければ lib/Cake 以下を上書き。
2.6.0 -> 2.6.9 みたいな同じマイナーバージョンならそれほど問題は起きないはず。そうじゃない場合は、公式にあるマイグレート手順の通りにすればそれほど問題は起きないはず。
ただ、prefix でルーティングしてる場合は多少バグってでも上げるべきかな。
0562nobodyさん2015/08/09(日) 00:02:51.87ID:???
>>561
その、それほど問題は起きないはずってのが怖いよね。万が一バグったらそのままのがよかったじゃんってなる。
0563nobodyさん2015/08/09(日) 01:18:36.79ID:???
>> 562
1. prefix ルーティングを使用している
2. 'prefix' => 'admin' なら admins テーブルからログインユーザーを探す、といった prefix キーに依存した認証処理になっている
3. その認証の結果アクセスできるはずの admin_系の画面を第三者に利用されると困る

3つ全部に該当する場合に問題になるので、バグが起きた場合のリスクと、admin_系の画面を不正に利用された場合のリスクを考えて選択するといいかも。
同時に報告したもう一つの脆弱性は正直大したことじゃないので。
もっとも、クリティカルなフィールドの検証に range か comparison を使ってなければの話だけど。
0564nobodyさん2015/08/09(日) 13:20:09.43ID:???
過去作った1.3系を最新の1.3.20にアップデートしたいと思うけど
何か問題起きないか不安だ。どんな機能が更新されたのかいまいち情報ないし。
0565nobodyさん2015/08/09(日) 13:30:21.06ID:???
>>564 各リリースノートに更新内容が書いてある。ずいぶん前に作ったままなら、少なくとも削除と更新が同時に走ると全データがUPDATEされる不具合が2.xからバックポートされてるはず。
0566nobodyさん2015/08/09(日) 13:45:11.47ID:???
>>565 不具合の修正が、ね。不具合バックポートしてどうすんだ。
0567nobodyさん2015/08/10(月) 15:09:16.81ID:???
特定のサイトにアクセスをした際に
リファラを書き換える事って出来ますか?


AAAというサイトへアクセスを想定しています。

実際には、Yahooで検索して遷移したとします。
しかし、AAAのサーバ側では「Googleからのリファラであった」と見せかけるにはどうした良いですか?
0568nobodyさん2015/08/10(月) 16:08:21.74ID:???
リファラを送出してるのはブラウザであってCakeは関係ない
0569nobodyさん2015/08/10(月) 18:29:52.85ID:???
>>568
どうやったらリファラ偽装できるの?
0570nobodyさん2015/08/10(月) 21:00:17.17ID:???
>>569
ソケット通信 header で出てくるんじゃないかな?
俺まとめたから、まとめーたーのどこかに載ってるよ。
0571nobodyさん2015/08/10(月) 22:04:25.69ID:???
そもそもなんで偽装したいんだよ
0572nobodyさん2015/08/10(月) 22:48:10.74ID:???
東方で不正発覚 [転載禁止]
http://hope.2ch.net/test/read.cgi/touhou/1439135722/
0573nobodyさん2015/08/11(火) 00:15:53.62ID:???
>>569
ブラウザ依存の話だからスレ違いどころか板違いだ
使ってるブラウザのスレ見つけてそっちで聞いてこい
0574nobodyさん2015/08/13(木) 19:28:44.54ID:???
2.xまでですっかり配列脳に染まった自分。
3.0からのオブジェクト返しにちょっと慣れずにいます。

今まではリレーションされたレコードを含めて配列で一気に取ってきておいて、
あとは巨大な配列をブンブン回して処理していたのを、
ある程度Entityに分担させられるようになる(Lazy loading)って認識でいいのかな?

あとは、DBからコードの形で取得したデータを
対応する文字列に置き換えたりっていうような処理を
自分はHelperとかにやらせてたりしたけれど、それもEntityにやらせる方が良かったりする?
0575nobodyさん2015/08/14(金) 12:00:47.77ID:ghYlBS32
すっごい初歩的な質問だけど
CakePHP2.xでApp::usesとかApp::importとかに書くのはクラス名?(拡張子を抜いた)ファイル名?
クラス名=ファイル名が前提?
1ファイルに複数クラス作っちゃダメ?
0576nobodyさん2015/08/14(金) 13:18:21.94ID:???
http://api.cakephp.org/2.5/class-App.html#_import
http://api.cakephp.org/2.5/class-App.html#_uses
まずAPIドキュメントを見るんだ
書いてあるとおりクラス名だ importの方はいろいろ柔軟だけれども

原則としては1クラス1ファイルだが、特定のクラスからだけしか参照しない
内部クラス的なものはそのクラスと同じファイルにまとめてしまうことはあるな
0577nobodyさん2015/08/14(金) 14:41:49.62ID:???
APIドキュメントのApp::import()の方に
 string $name optional null
 Name of the Class or a unique name for the file
って書いてあるけどファイルでもいいってこと?

Lib/Hoge.phpに
<?php
class Hoge1 {}
class Hoge2 {}

とか作って
App::import('Lib', 'Hoge');
すれば Hoge1 も Hoge2 も使える?
0578nobodyさん2015/08/14(金) 15:24:22.91ID:???
そういう話ならこっち読んだほうがいい
http://book.cakephp.org/2.0/ja/core-utility-libraries/app.html

2つ目はできるかできないかならできるが、インスタンス化はもちろん自前でやらなければならない
単にimport書くのが面倒だという理由ならやめた方がいい
0579nobodyさん2015/08/15(土) 14:02:48.31ID:???
>>578
thx
こういうのって普通の使い方は書いてあるけど
「じゃあ、こういう使い方はできるの?」ってのには触れてないんだよね。
言語の基礎的なことなら自分で試せばいいんだけど、フレームワークが間に入ってると
そもそもできないのか、自分の使い方が悪いのかが切り分けにくいし。

独自例外クラスとかほとんど空なのに個別にファイルつくるのは面倒だから
1ファイルにまとめたかった。
Javaとかなら1ファイル1クラス(非ネストクラス)って決まってるから諦めつくんだけど。
0580nobodyさん2015/08/15(土) 16:08:08.61ID:???
App::importは基本的にはApp::build()で登録済みのpathを探しに行く
登録済みのpathにあるファイルなら、クラス名=ファイル名ならクラス名だけで解決できる
path登録してないなら明示的にpathを特定してimportすることになる
e.g. App::import('File', 'MyClass', array('file' => '/path/to/MyFile.php'));
App::uses()使ったほうが遅延読み込みしてくれるし、IDEの補完やメンテナンスのことも
考えれば(書いた本人が直すとは限らない)規約に従って作っておいたほうが、最終的にはスムーズ
0581nobodyさん2015/08/20(木) 12:01:52.92ID:???
今から作るなら3なんかなぁ
2でちょっと作りかけたコードがあるが、今ならまだ移行できる
0582『佳子様』の『秘密』を『暴露』2015/08/20(木) 15:37:21.30ID:???
.
.
.
Σ(Д・;)"プチエンジェル事件"!(小学生売春事件)
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
プチエンジェル事件に隠された日本の闇を暴露する!

■実は、『女性皇族』の『男遊び』と、
 女性皇族がおこなったハニートラップだった!!

■その『男遊び』と『トラップ』を誤魔化す為の、
『プチエンジェル事件』が真相だったのだ!!

■闇に包まれた真相を、私が『暴露』する!!

※知る覚悟はできていますか?
下記を『Google』か『Yahoo』で検索して下さい。

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
検索⇒『佳子様 真子さま kare氏』
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

※上記で検索しますと、1ページ目の5番目以内に、

【懇約〕秋篠宮家の佳子様と・・・・・・・
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑が表示されます。

※世の中、知らない方が良い事もあるんです・・・。
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
.
.
.
0583nobodyさん2015/08/20(木) 17:42:51.65ID:???
Cake3でちょこっと作ったけど情報が少ないな
日本では流行らない気がする
0584nobodyさん2015/08/20(木) 21:43:48.53ID:???
2までと比べて作りやすくなったから俺は好き
0585nobodyさん2015/08/21(金) 04:29:01.85ID:???
あと2,3年は2で行けるはず。全然情報ないし、2の開発も続いてるしな。
0586nobodyさん2015/08/21(金) 10:20:45.46ID:???
そう言えば最近、ようやくぐぐっても1の情報ばかりということがなくなったな
あれホントうざかった
3を始める人はまたその状況が続くんだな
0587nobodyさん2015/08/21(金) 20:18:15.77ID:???
今、2.6から3.1bへのミグラチオン作業中です。

今まではConfig\hoge.phpに独自グローバル定数をまとめて定義し、
bootstrap.phpでconfig(’hoge’);
と書いて読み込ませていました。
が、3.0系ではそもそもconfig関数が無くなっています。
自前でincludeすれば良いといえばそれまでですが、そもそもとして
3.0系ではグローバル関数を使用すること自体がよろしくないのでしょうか?
0588nobodyさん2015/08/22(土) 03:29:22.56ID:???
>>587 一般論としてグローバル関数/定数には

■名前衝突のリスクが高い
PHP本体のバージョンアップや、サードパーティのライブラリとの共存で問題が生じる可能性がある。

■オートロードできない
使われないかもしれない関数/定数であっても予め定義しておかなければならず、パフォーマンスが低下する。

という欠点があるので削減していく方向なのだろう。
と思っていたけれど、stackTrace() のように3系になってから新たに導入された前例があるので何とも言えない。
ちなみに導入された理由は Cake\Error\Debugger を毎回書くのに疲れたから。
0589nobodyさん2015/08/23(日) 06:26:03.07ID:???
>>587
どうしてミグラチオンしないのよーッ!!
0590nobodyさん2015/08/23(日) 16:19:04.63ID:???
Cakeのページネーションで、
$this->Paginator->settings = [
'limit' => 10,
'order' => [ 'created' => 'asc' ]
];
みたいに指定すると、ビューのページネーションのリンクに
sort:Model.created/direction:asc
みたいなのが付くんですが、これを付けないようにする方法ありませんか?
orderは 'created' => 'asc'で固定にしたいです。
0591nobodyさん2015/08/23(日) 20:13:46.96ID:???
>>590
モデル名を省略せずに 'Model.created' => 'asc' の形式で指定すれば、当該ソート条件の時は付かないはず。
もしくは $this->Paginator->paginate() を呼んだ後に自力で消す。

unset($this->request->params['paging']['Model']['options']['order']);

'Model' は正しい名前に読みかえてね。
0592nobodyさん2015/08/26(水) 12:42:42.47ID:Dkufhip4
>>591
あざす!結果ですが、以下を参考にページ切り替えをAJAX化したら、何故だか付かなくなりました。
http://book.cakephp.org/2.0/en/core-libraries/helpers/js.html#ajax-pagination
また上手くいかなくなったら、上記の方法を試してみようと思います。

もう一つページネーションの質問で、最初のページにいる時もfirstとprevにaタグが付いて同じページへのリンクになってしまいます。
echo $this->Paginator->prev(
' <<前 ',
array('tag' => 'li'),
null,
array('class' => 'disabled', 'tag' => 'li')
);
が
<li class="disabled"><a href="同じページのURL"><<前</a></li>
こうなる。
実用上支障はないのですが、リンクにならないようにする方法があったら教えてください。
0593nobodyさん2015/08/26(水) 13:19:15.80ID:kqv3nla0
Cake2系を使っています。
appを用途によって分けているのですが、例えば
/app-admin/View/Photos/form.ctp
のビューを
/app-user/View/Photos/form.ctp
として使うことって出来ますかね?

単純に後者のビュー内で、前者のファイルパスをincludeすれば出来ると思いますが、
Cakeの機能で可能なら教えて下さい。
0594nobodyさん2015/08/26(水) 13:29:29.12ID:???
>>593
コントローラーでrender もしくは、element 化
0595nobodyさん2015/08/26(水) 14:21:29.17ID:???
>>592 本来、現在のページはリンクにならないはずだよね。
現在のページを Cake が正しく認識できていないんだと思う。
予期せずソートパラメータが消えたのもそのためかも?

差支えなければ、そのビュースクリプトで

pr($this->Paginator->params());

を実行した時の結果を張ってくれないかな?
05965932015/08/26(水) 15:19:26.19ID:???
>>594
コントローラーでrenderする時のパスって、appを分けてる場合はどうなるのですか?
普通に絶対パスを書くのですか?
0597nobodyさん2015/08/26(水) 16:05:32.49ID:???
>>574
今更だけど、最初の質問については、そうではないと思う。
Lazy loading は 2系でも Model のアクティブレコード機能か Helper を使えば簡単に実装できるので。
むしろ、3系の大きなアドバンテージは Eager loading の方。
$this->Articles->find('all', ['contain' => ['Comments.Authors']])
を実行した場合のクエリが発行回数が劇的に改善されているはず。

二番目の質問については、Entity に書くのが無難だと思う。
まず、記述が短い。そして、この問題の解決ため、将来的に Presenter が導入されるかもしれない。
https://github.com/cakephp/cakephp/issues/6698
仮に導入された場合 Entity で実装しておけば、ビュースクリプトの記述に互換性がある。

■Entity
$article->isPublished() //Article::isPublished()

■Helper
$this->Article->isPublished($article) //ArticleHelper::isPublished()

■Presenter
$article->isPublished() // ArticlePresenter::isPublished()
0598nobodyさん2015/08/26(水) 16:17:56.94ID:???
>>596
ごめん。
appわけたことないからわかりません。
0599nobodyさん2015/08/26(水) 16:27:52.27ID:???
>>596
俺も分けたことないけど App::build() はどう?
0600nobodyさん2015/08/26(水) 20:15:04.12ID:???
>>598-599
横だけど、appわけないって、管理画面と公開画面作る時どうしてるの?
prefixで対応してるの?それだと困らない?
0601nobodyさん2015/08/26(水) 20:57:02.92ID:???
>>600
prefix だよ。どう困るの?
0602nobodyさん2015/08/26(水) 21:01:09.92ID:???
>>600
管理画面は、ほぼphpmyadminから。
その他はcore.php にて
IPアドレスでdebug オンオフ。

debug の値に応じて編集画面を表示したりしてる。

むしろそこまでがっつり管理画面いる?
二度手間じゃない?機能増えるたびに管理画面も増えるんだし。
0603nobodyさん2015/08/26(水) 22:51:10.16ID:???
>>595
ありがとうございます。
シンプルなページネーションするコントローラとビューを作って、$this->Paginator->params()を表示してみました。
やっぱり、現在ページへもリンクされてしまいます。

array(10) {
 'page' => int(1)
 'current' => int(10)
 'count' => int(69)
 'prevPage' => bool(false)
 'nextPage' => bool(true)
 'pageCount' => int(7)
 'order' => NULL
 'limit' => int(10)
 'options' => array(1) {
  'conditions' => array(0) { }
 }
 'paramType' => string(5) "named"
}

コントローラーでは
$this->Paginator->settings = [
 'limit' => 10
];
$this->set( 'users', $this->Paginator->paginate( 'User' ) );

のようにやってるだけです。
Cakeはリンクしてしまう仕様なんですかね?
2.7.2です。
0604nobodyさん2015/08/26(水) 23:03:27.56ID:???
>>601
・IPアドレス制限したい場合は?
・管理と公開でdebugレベルを変えたい時は?
・制作時にプロジェクトが分かれてる場合は?
・URLを変えたい時は?
 ※通常、管理用のURLは推測されにくいURLにする。サブドメインとか
・ファイルがごちゃごちゃしてミスに繋がりにくくない?
 ※有名どころのPHPのOSSなんかは分けてるよ

などなど考えられるけど、一度も遭遇しなかった?

>>602
管理者が一人の場合はphpMyAdminでもいいけど、アソシエーションの時は面倒だよ?
Aのテーブル削除したら、BのテーブルにあるA_idのレコード削除とか。

管理画面ってその名の通り、「管理しやすい画面」だと思うから、
手間が増えても良いと思うんだけど、
むしろそこを面倒臭がるからミスや流出に繋がるわけで。
0605nobodyさん2015/08/26(水) 23:49:39.48ID:???
>>604
>・IPアドレス制限したい場合は?
httpd.conf の Location

>・管理と公開でdebugレベルを変えたい時は?
httpd.conf の環境変数。
ローカルでは管理でも公開でも debug モードにしたいのでは?

>・制作時にプロジェクトが分かれてる場合は?
状況が分からない

>・URLを変えたい時は?
そのためにルーティングがあるのでは?
ドメインを変えたい場合はバーチャルホスト

>・ファイルがごちゃごちゃしてミスに繋がりにくくない?
違うファイルを編集したことはない

挙げてもらった例は個人的にはメリットだとは思えないけど。
むしろ、分けた場合の方がデメリットが大きいのでは?
正直 cake test app を正常に実行できるのか疑問。
0606nobodyさん2015/08/27(木) 00:09:42.79ID:???
>>605
>httpd.conf の Location
>httpd.conf の環境変数。
つーことは、共有鯖では無理だね。基本的に。

>状況が分からない
今まで1人で制作してきたの?
デザイナーとプログラマーが分かれている場合や
管理画面(公開画面)だけ操作させたい、ってのもあると思うが。

>そのためにルーティングがあるのでは?
http://example.com/admin/をhttp://admin.example.com/
にルーティングで変えられるの?そうであれば自分の無知を認める。

>違うファイルを編集したことはない
まぁ、ファイル名で判断するから誤認は少ないか。
でも、Controllerの場合、prefix用のコードが増えるから
単純に1ファイルのコードが増えて(長くなって)視認性が悪くなると思うんだけど。

>むしろ、分けた場合の方がデメリットが大きいのでは?
じゃ、君が考えるデメリット教えてよ。
ちなみに共通化するファイルはbootstrap.phpで設定出来るようになってるから、
同じファイルが増えるってことはないと思うよ。
0607nobodyさん2015/08/27(木) 00:29:15.45ID:???
>>603
リンクしない仕様なんだよ。
パラメータには問題ないね。prevPage が true になっていると推測していたんだけど。
俺には分からないや。わざわざ張ってもらったのにごめんね。
0608nobodyさん2015/08/27(木) 00:35:46.77ID:???
>>607
いやいや、反応くれてありがとうでした。
なんかおかしいのかな?CakeのPaginatorHelperのソースちょっと見てみますわ。
0609nobodyさん2015/08/27(木) 01:39:43.38ID:???
>>606
>つーことは、共有鯖では無理だね。基本的に。
応用として .htaccess + mod_rewrite で可能では?

>今まで1人で制作してきたの?
>デザイナーとプログラマーが分かれている場合や
>管理画面(公開画面)だけ操作させたい、ってのもあると思うが。
まさか。そもそもチーム開発と prefix がどう関係するのかと。
それとも一般画面プロジェクトと管理画面プロジェクトを別の会社で受注でもするのかい?

>http://example.com/admin/をhttp://admin.example.com/
>にルーティングで変えられるの?そうであれば自分の無知を認める。
可能。実際に、今運用しているサイトは無数のサブドメインを使っている。

>単純に1ファイルのコードが増えて(長くなって)視認性が悪くなると思うんだけど。
そもそもコントローラに長い処理は書かない。

>じゃ、君が考えるデメリット教えてよ。
・さっきも書いたけれど、正直 cake test app を正常に実行できるのか疑問。
それぞれの app で実行している場合、コードカバレージが正確にならない。

・一般側に /default/Model/Article.php 、管理側に /admin/Model/Article.php を作成した場合の挙動が不明
優先的に読まれるのか、作成してはいけないのか。
せっかく Cake を使っているのに基本的なふるまいが独自フレームワーク化している。

・分けてしまったために困っている人が実際にスレにいる
>>596 に答えてやったらどう?
俺は分けたことないからワークアラウンドが分からん。
0610nobodyさん2015/08/27(木) 03:13:04.96ID:???
>>609
>応用として .htaccess + mod_rewrite で可能では?
無理だと思うよ。mod_rewritreでどうやってアクセス制限?

>まさか。そもそもチーム開発と prefix がどう関係するのかと。
チーム開発なんだから役割分担、作業分担してるでしょ?
デザイナーには出来るだけプログラムコードを触らせないし、
ディレクターやリーダー以外は重要ファイルにアクセス出来ないようにする。
でも、prefix式だと1つのファイルに記述するから無理だよね?

>可能。実際に、今運用しているサイトは無数のサブドメインを使っている。
じゃ、書き方教えてよ。いくつでも使ってるんでしょ?

>・さっきも書いたけれど、正直 cake test app を正常に実行できるのか疑問。
appを指定できるのに出来ない意味が分からん。

>・一般側に /default/Model/Article.php 、
>管理側に /admin/Model/Article.php を作成した場合の挙動が不明
>優先的に読まれるのか、作成してはいけないのか。
疑問形ってことは試してないのか。それもbootstrap.phpで順序決められるよ。
それに、2つ用意することでdefaultとadminのアソシエーションやバリデーションを
変更できるから、画面用途に合った処理が行えると思うんだけど。
もちろん、1つだけでもいいわけだし。

>・分けてしまったために困っている人が実際にスレにいる
うん?この人困ったから質問してるのか?「分けたいから方法を知りたい」に見えるが。

他人が困ったじゃなくて、実際に自分がやって困ったなら批判してよ。
俺は実際にprefix使ってて>>604みたいな疑問が出たし、
他にもAuthを複数使いたい場合、(管理画面のログイン、公開画面のログインなど)とか
管理/公開を条件分岐するために、その都度、IF文が発生するとか、
利用してみて感じる問題点を話しているのに。
■ このスレッドは過去ログ倉庫に格納されています