トップページ⇒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/
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文が発生するとか、
利用してみて感じる問題点を話しているのに。
0611nobodyさん2015/08/27(木) 09:38:54.76ID:wzS4bZ57
↓みたいなことをしたいのですが、どうやったらよいでしょうか?

DBから取得したModelデータの配列($students)を
foreach ($students as $student) {
<input type="checkbox" value="$student->id"・・・・/>$student->name //<= 実際はFormHelperを使う。
}
みたいにチェックボックスのリストとして表示して、チェックされたstudentのidを
Controllerで受け取りたい。

で、再びViewに同じチェックボックスのリストを表示して、今度は
前画面でチェックされたstudentはチェックされた状態で表示したい。
ただし、表示するstudentsをDBから再取得することはできない。
0612nobodyさん2015/08/27(木) 11:31:18.92ID:???
>>610
>無理だと思うよ。mod_rewritreでどうやってアクセス制限?
RewriteCond で HTTP_HOST と REMOTE_ADDR を見て 403 に飛ばせば?

>ディレクターやリーダー以外は重要ファイルにアクセス出来ないようにする。
そうするのが妥当で一般的だとは思わない。
管理側のプログラムを閲覧できない場合、一般側のメンバーは自分が行った変更が管理側に与える影響を知ることができない。

>じゃ、書き方教えてよ。いくつでも使ってるんでしょ?
ホスト名で読み込む routes.php を切り替えるだけでは?
君の構成では一般/管理でそれぞれ routes.php を持っているのだろうから、その時のワークアラウンドは君の方が詳しいのでは?
俺はカスタムルーティングを使っているが。

>appを指定できるのに出来ない意味が分からん。
個別にコードカバレッジを出力していたのでは、空白だらけにならないかい?

>それに、2つ用意することでdefaultとadminのアソシエーションやバリデーションを
>変更できるから、画面用途に合った処理が行えると思うんだけど。
同一のテーブルを参照するモデルが複数存在する構成を素晴らしいとは思わない。
そもそも、アソシエーションとバリデーションは動的に変更可能。

>うん?この人困ったから質問してるのか?「分けたいから方法を知りたい」に見えるが。
>>593 で「分けているのですが」と言っているよ。

>他人が困ったじゃなくて、実際に自分がやって困ったなら批判してよ。
公式ドキュメントに管理画面を作る時にそうしろと書いてあるなら試すだけの価値はある。

>他にもAuthを複数使いたい場合、(管理画面のログイン、公開画面のログインなど)とか
AuthComponent::$sessionKey を切り替えればいい。

>管理/公開を条件分岐するために、その都度、IF文が発生するとか、
通常は index() が index.ctp を、admin_index() が admin_index.ctp をレンダリングするのでは?
0613nobodyさん2015/08/27(木) 11:42:59.94ID:???
>>611
'multiple' => 'checkbox' かな?
belongsToMany('Students') なら

$this->Form->input('students._ids', ['multiple'=>'checkbox', 'options' => $students]);
0614nobodyさん2015/08/27(木) 14:41:18.57ID:???
>>612
>管理側のプログラムを閲覧できない場合、
>一般側のメンバーは自分が行った変更が管理側に与える影響を知ることができない。
知る必要なくね?管理者が分かれば。
君の意見が正しいとするなら、既存のグループ/権限設定もおかしいって事になるよ?
そもそも俺の意見は「余計な操作をさせない・ミスに繋がらないようにする」
だから、根本的な価値観が君とは違うね。

>個別にコードカバレッジを出力していたのでは、空白だらけにならないかい?
いくら説明しても納得しないだろうから、以下のURLを提示する。よく読みましょう。
http://book.cakephp.org/2.0/ja/development/testing.html

>同一のテーブルを参照するモデルが複数存在する構成を素晴らしいとは思わない。
素晴らしい・素晴らしくないの問題じゃない。そんなの個人の感情だろ。
それ言うなら「動的に変更させるための処理を書く」という事が、
俺の価値観では素晴らしくないわ。IFや条件分岐だらけになってな。

> >>593 で「分けているのですが」と言っているよ。
うん。だから「そうしている〜から教えて」になるのでは?
そもそも分けなければ同じapp上でrenderにて別ファイルを読み込めるんだから、
質問する意味が無い。分けること前提での質問だろ。

>公式ドキュメントに管理画面を作る時にそうしろと書いてあるなら試すだけの価値はある。
以下のURL見ても納得しないんだろうな〜
http://book.cakephp.org/2.0/ja/installation/advanced-installation.html

>通常は index() が index.ctp を、admin_index() が admin_index.ctp をレンダリングするのでは?
誰もアクションを言ってるんじゃないよ。
「AuthComponent::$sessionKey を切り替えればいい。」って言ってるけど、
これを切り替えるにはどうやるの?IF使ってprefixの有無を調べるんじゃないの?
0615nobodyさん2015/08/27(木) 21:17:15.92ID:???
そんなにapp分けていたいなら勝手にわけてればいいじゃん
なんでこんな必死なのこの人
0616nobodyさん2015/08/27(木) 21:33:44.04ID:???
>>615
批判するのよくないよ。
俺もappわけないけど勉強になる。
0617nobodyさん2015/08/27(木) 22:06:28.85ID:???
>>615
必死も何も「どうして使わないの?」って質問に、批判しか返してこないじゃん。
結局そういう精神論で決めつけて「勝手にしろ!」で終わらせる。議論になりゃしない。
0618nobodyさん2015/08/27(木) 22:56:05.23ID:???
まぁ、最終的には好き好きだよね。
どっちがいいかなんてわからんがお二人とも正しい。

ここは仲直りしようぜ。
俺の顔に免じて。
0619nobodyさん2015/08/28(金) 09:09:31.70ID:???
>>617 は >>614 かな?
そうだとしたら勘違いしているかもしれんが >>615 は俺(>>612とか)ではないよ。
それは >>615 と俺しかわからないことだけれど。俺も勘違いしているのかもしれんが。

ただ、議論やめようと思ってた部分は間違っていないから、一応、謝罪しとく。
正直、そろそろ他の閲覧者に迷惑かと思ったのもあるし、ここは >>618 の仲裁で手打ちということでどうだい?
それと俺は批判したつもりはないんだけれど、そう受け取れる箇所があったならごめんね。

もっとも >>616 のように参考になるという意見もあるから、続ける分にはやぶさかではないよ。
でも、議論を続ける気なら、リンクだけ張ってその文書中のどこが自分の意見なのかを示さないというのはフェアじゃない。
俺にはそのどこに反論すればいいのか分からないからね。そして君にはそれが分かる。どう考えてもフェアじゃないでしょう?
0620nobodyさん2015/08/28(金) 10:08:30.38ID:???
>>619
フェアじゃないのはお互い様じゃないか?
618のレスもそうだが、自分の有利なレスにしか反応しない。
一方的に手打ちにしようと言っておきながら、後者では批判する。
するとまた言い合いになる。そんなの目に見えてるわな。
06216202015/08/28(金) 10:11:14.62ID:???
間違えた。「618のレスもそうだが」は「619のレスもそうだが」だった。

とにかく「俺はこうだけど、お前はこうだからもう止めよう」
って一方的な遮断をするのは、相手の反論を一切受け付けず
自分の思うように相手を従わせたいという思惑が見えて卑怯だよ。
0622nobodyさん2015/08/29(土) 01:22:41.97ID:???
>>620-621
それなら、もう少しだけ続けてみようか。

俺としては >>617 までは一応、全部に反論してきたつもりだったので、
君がアンフェアに感じた部分がどこだったのか分かっていない。
議論し足りなかった議題を一つ挙げてほしい。
選択は任せるので、それを最後の議論にするというのでどうだい?
0623nobodyさん2015/08/29(土) 01:23:50.95ID:???
失礼 >>614 まではね。
0624nobodyさん2015/08/29(土) 02:07:18.84ID:???
いい加減つまんね
0625nobodyさん2015/08/29(土) 02:13:10.69ID:???
2.6.7を使用しています。
下記の3つのテーブルがあります。
○small
id,name,middle_id
○middle
id,name,large_id
○large
id,name

それぞれの関係は下記の通りです。
small→(belongTo)→middle→(belongTo)→large

コントローラからfind('list')で
small.idとconcat(large.name,middle.name,small.name)
の値を取得したいのですが、うまくできません。

どなたか、おしえていただけませんか!
0626nobodyさん2015/08/29(土) 11:11:58.93ID:???
>>625
結論から言うと無理だよ。concatで孫モデルまでまとめることは出来ない。
どうしてもそうしたいならjoinを使いましょう。
0627nobodyさん2015/08/30(日) 01:21:50.17ID:???
>>626
ありがとうございます!
解決出来ました!
0628nobodyさん2015/09/04(金) 19:49:50.36ID:???
【 オンラインTCGエディター 】 >>1

デュエル・マスターズ的な非電源TCGの 《 オンライン化ツクール系ソフト 》 制作の企画。

例えば、ガチンコ・ジャッジを直ぐにでも導入できる機能を持っておりながら、
当面それを扱わず単純化させておいて、事後的に導入拡張する際に当該システムを
ブロック構造の組み合わせで後付け挿入できるように予めシステム化してあるソフト(エディター)。
既存の非電源TCGを劣らずに再現できるならば大概のニーズに応えられる筈。
バトスピ、ヴァンガ、バディ、フォースofウィル、ウィクロス、ポケカ、デジモン、ゼクス、モンコレ、ガンダム・ウォー、ディメンション・ゼロ、ライブオン、カードヒーローなど
のシステムを完全再現できるように設計するけど、他に此のTCGの此のシステムは再現希望とか有ったら書いて。
マジック:ザ・ギャザリングの全システムを完全に再現するのは無理だから、此れだけは必用だ!って部分のみリクエストして。
WEB通信での対戦は、個vs個、多数乱戦、チームvsチーム、個vsチームを可能な仕様とする方針。

設計思想は 《 RPGツクール 》 が良いかな?  他に、優れたエディター有ったら挙げてみて。

個人や企業などのベンダーが提示する開発費(見積もり)で折り合えば、発注する。
↓
エディター群から基本コンセプトを絞り込む(もちろんオリジナルで優れた新ネタが有れば導入する)。
↓
遊戯王OCGに関しては、タッグフォース、ADS、デュエルオンラインを発注先ベンダーに研究させる。
なるべく前述3つで可能な再現は全て実装させる方向を目指す。 まぁ努力する・・・
バトスピ、ヴァンガ、バディ、デュエマなど発売済みゲームソフトが存在してるケースはベンダーに研究させる。
↓
各社TCGを再現するテストプレイ ⇒ 更に改良や修正。
↓
機能制限した下位版を5万円以上で発売 + デュエリーグ用に改造した上位版でサーバー稼動=営業開始。
↑
下位版の改造および商用利用には、別途で当社との契約が必要。

さ〜て、製作ベンダー見つけよっと!ww(クス
http://wc2014.2ch.net/test/read.cgi/entrance2/1441218863/l50
0629nobodyさん2015/09/04(金) 21:32:24.15ID:???
CakeでMySQLのVIEWみたいな処理って出来ますか?
0630nobodyさん2015/09/05(土) 02:07:55.12ID:???
何を言っているのかよくわからない
modelでDBのviewを参照できるか、という意味?
0631nobodyさん2015/09/05(土) 11:11:05.76ID:???
エスパーするとMySQLでの操作(CREATE VIEW)
をせずにCake側でビューみたいに結合した結果を
見たいってことでは?
0632nobodyさん2015/09/05(土) 11:19:04.03ID:???
画像をDBではなく、webroot以下に保存する画像アップロードプラグインで
おすすめのはありませんか?
サムネイル作成など、機能は多い程ありがたいです
0633nobodyさん2015/09/05(土) 13:29:50.16ID:NBrY/rBT
UQ-WIMAXルータ ATERM WM3500Rを使っていて電源が自動で勝手に落ちてしまう場合の対処方法


http://know-how-tree.com/archives/2327
0634nobodyさん2015/09/05(土) 18:25:19.06ID:???
>>631
それはModel::find()で普通に取得するのと何の違いが?
DB側でview定義しない以上、毎回join条件を付与しなければならないのに
0635nobodyさん2015/09/05(土) 20:17:32.51ID:???
Mysqlのビューってどうなの?
みんな使ってるの?
前使ったことあるけど微妙じゃないあれ。
いまいち使いづらい感じ。
0636nobodyさん2015/09/06(日) 12:32:19.29ID:???
スレ違いだからこれ以上深入りはしないが、ストアドプロシージャとか
ストアドファンクションとかで使う共通部品としてなら便利という認識
0637nobodyさん2015/09/07(月) 13:32:06.16ID:???
>>632
いくつかあるけど、俺は自作をおすすめする。
既存のは小回りが聞きづらいし、自作のプラグイン(とかコンポーネント)でも
そんなに手間はかからないよ。PHPのソースがネット上に多くあるしね。
0638nobodyさん2015/09/07(月) 13:44:12.92ID:???
>>637
あざす、俺もすぐに見つかるものを少し試して、思いの外出来が良くないので自作に傾いてました。
やはりタダでは製品レベルのものはなかなかないですね
0639nobodyさん2015/09/08(火) 14:25:47.61ID:???
>>635
スキル次第。お前のスキルが微妙だから使った印象も微妙
0640nobodyさん2015/09/10(木) 21:22:48.45ID:???
http://book.cakephp.org/2.0/ja/core-utility-libraries/file-folder.html
基本的な使い方
App::uses() を使ってクラスをロードします。
App::uses('Folder', 'Utility');
App::uses('File', 'Utility');

とありますが、これは使う直前に毎回書くのでしょうか?
それとも、ファイルの冒頭などに1回書くだけ?
0641nobodyさん2015/09/10(木) 22:03:35.21ID:???
App::uses()は1回でOK
0642nobodyさん2015/09/11(金) 23:50:23.87ID:???
>>641
ありがとうございます。

別の質問もどなたか…。

Model::saveの返値は何でしょうか?成功失敗のboolでしょうか?
http://book.cakephp.org/2.0/ja/models/saving-your-data.html
何故ドキュメントにそういう基本的な事が載っていないのでしょうか?自分でソース見て調べるのがCake流?
0643nobodyさん2015/09/12(土) 00:17:07.84ID:???
>>642
http://api.cakephp.org/2.7/class-Model.html#_save
気になるところはAPIドキュメントも見ながらがいいよ
0644nobodyさん2015/09/12(土) 02:15:06.39ID:???
>>643
あざす、しかし雑な説明ですよね…
>>643さんではなく公式への不満ですが
結局自分で実際に試してみるしかないな
0645nobodyさん2015/09/12(土) 11:08:33.05ID:???
Cakeの場合は日本語訳が間に合ってないので、ドキュメントは英語版も参照すべし
日本語版に書いてないことが英語版には書いてあることがある
最終的にはソース見たほうが早いことも多々ある
0646nobodyさん2015/09/12(土) 11:58:17.63ID:???
英語版でも情報多くはないよね
Cakeのずっと改善されない点の一つ
0647nobodyさん2015/09/12(土) 12:38:29.14ID:???
普通にソースを見る癖がついたなぁ
0648nobodyさん2015/09/12(土) 13:20:45.15ID:???
>>647
俺も。cakephpのおかげで人のソースをみれるようになったな。
0649nobodyさん2015/09/18(金) 01:50:51.05ID:???
ぼくもー(^o^)
0650nobodyさん2015/09/20(日) 15:15:49.81ID:???
ソース見るのはいいんだけど、なんでもソース見て
理解するのもだめだよな。

理解するのに読まなければならない量が多い。
0651nobodyさん2015/09/21(月) 20:30:12.03ID:zJdcfcjc
なんかおもしろいものあった
http://goo.gl/YIsqjP
0652nobodyさん2015/09/28(月) 17:49:39.11ID:???
Model::queryでSQLを実行する時、プレースホルダを使わないと
インジェクション的にダメ、ゼッタイ!だと思ってたのですが
queryで実行したSQLはfetchAllに渡されるとどこかで見た記憶がありまして、
もしそうであればプレースホルダ使わなくても大丈夫なのかと思ってるのですが、これは間違いでしょうか?
0653nobodyさん2015/09/28(月) 20:24:02.91ID:???
SQLインジェクションが起きる理由を
勉強しましょう
0654nobodyさん2015/09/29(火) 13:46:47.95ID:???
fetchAllだからプレースホルダ使わなくてもいいって理屈は無い。
fetchAllはプレースホルダ使わないといけない。
0655nobodyさん2015/09/30(水) 01:04:16.72ID:???
2系で、一度に複数のレコードをsaveする場合、
saveしたidを取得する方法ってないですよね?
$this->Model->idだと1つのレコードしか取得できないので、
何か複数追加時のidが取れたら良いなっと思うのですが。
0656nobodyさん2015/09/30(水) 02:03:39.95ID:???
やったことないが、該当モデルにafterSaveコールバック定義しておけばできそうな気はする
0657nobodyさん2015/10/01(木) 00:10:43.92ID:476zm7XN
2つのモデルをまとめて1つにしてfindって出来ますかね?
MySQLのunionのイメージです。

社員(User)と取引先(Client)のメッセージをそれぞれ
UserMessage、ClientMessageに保存して使用しています。
メッセージは「社員から取引先」「取引先から社員」
に伝達するためのメールBOXのような感じです。

一覧表示時に1つにして表示したいと思い、質問しました。
バージョンは2.6.10を使用しています。ご存じの方はアドバイスください。
■ このスレッドは過去ログ倉庫に格納されています