【PHP】フレームワーク CakePHP 17ホール目【v3α】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2014/08/02(土) 21:57:41.01ID:LI0DdohH質問するときは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/
https://twitter.com/cakephp
https://www.facebook.com/CakePHP
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
※前スレ
http://kanae.2ch.net/test/read.cgi/php/1393661004/
0493486
2015/05/09(土) 08:14:27.22ID:???結局、IN句がどうしても入らないので(文字列扱いになる)、
ORを利用することで解決しました
もしIN句で実現できるよーって人がいましたらレスしてくれると嬉しいです。
0494nobodyさん
2015/05/09(土) 12:00:46.20ID:???inはorやnot inとかと違って、明示的に書かずに配列を入れるだけでいいはずだよ
普通のfindのconditionsではin動いてる?
0495nobodyさん
2015/05/09(土) 13:18:29.99ID:???自動って、$this->Paginator->numbers()を出力したらということですか?
このままではなりません。普通に、5|6|7・・・とページが増えるだけです。
0497nobodyさん
2015/05/09(土) 13:58:19.35ID:HYo3XLyg自動ではならなかったと思うが…。
0498nobodyさん
2015/05/13(水) 13:39:51.91ID:???これまでprofilesにuser_idを追加していたんだけど、必要なかったんだね。
profilesのidのauto_incrementを止めて、
ProfileモデルにprimaryKey='id'とすれば、saveもfindも問題なく拾ってくれる。
既出だと思うが、自分としては発見だったのでメモする。
0499nobodyさん
2015/05/13(水) 22:16:31.12ID:???hasoneかつbelongstoでお互い同じidならってこと?
便利そうに見えるけど何となく気持ち悪い気もする
0502nobodyさん
2015/05/19(火) 12:15:05.85ID:jQo/pXrBエレガントな方法ってありますでしょうか?
セッションにユーザのIDとパスワードを入れといて
ページ遷移ごとにいちいち認証かけるってのも、あるけど
非セキュアな気がして気が進みません。。。
0503nobodyさん
2015/05/19(火) 13:20:38.39ID:???0504nobodyさん
2015/05/19(火) 17:12:56.72ID:c25x6ol9Cake使うまでもないと思いますが、皆さんはどうしてますか?
PDOと使うとか別の小規模フレームワーク使うとかPHP直書きとか
色んなパターンあると思いますが、出来るだけ手間なく使える方法が知りたいです。
0506nobodyさん
2015/05/19(火) 23:13:58.17ID:???セッションの使い方が間違ってる気がする
普通にauthコンポーネント使って任意のタイミングでsession消すか
logoutさせればok
>>504
1ファイルで収まる程度ならpure php
それ以上ならcakephp使うわ
ミニマルフレームワークに学習コストかける気になれない
0507504
2015/05/19(火) 23:46:28.25ID:???DB登録とか参照をどうするか悩んでいます。
Cakeの書き方がベストとはいえ、ページの一部だけに使うのでMVCは必要なく、
かといって、SQL文を直書きなのもどうかと思ったり。
SQLインジェクション対策とか必要ですし。
0509nobodyさん
2015/05/21(木) 21:37:14.24ID:???そんなに不安がるということはかなりの初心者だね?
もう一度PHPを基本からじっくり勉強し直した方が良いかもよ。
0510nobodyさん
2015/06/03(水) 21:07:19.92ID:???WEBサーバはnginxで「/var/www/docroot/hello/cake」にCakeを置きました。
ドキュメントルートは「/var/www/docroot/hello」です(Cakeはサブディレクトリ)。
そこで「https://foobar.net/cake/」でアクセスします。
しかし、cssやgifが取れない。ログには「https://foobar.net/cake/baz.css」と残っています。
Cake的には「https://foobar.net/cake/app/webroot/baz.css」を読んで欲しいが、それが上手くいかない。
ググると日・英なり、色々と出ては来るが、どうにも決定打がない。
お分かりになる方いますか。
0511nobodyさん
2015/06/03(水) 21:23:59.28ID:???黙れバカ。ぐぐれ。
0512nobodyさん
2015/06/03(水) 22:20:10.80ID:???さすがにそのレベルだと回答するのも馬鹿馬鹿しくなるな
0513nobodyさん
2015/06/03(水) 23:07:24.18ID:???0515nobodyさん
2015/06/04(木) 01:26:07.24ID:???0516nobodyさん
2015/06/04(木) 21:42:11.27ID:???0517nobodyさん
2015/06/04(木) 21:57:48.06ID:???0518nobodyさん
2015/06/06(土) 00:04:16.21ID:rAdaJfyphttps://www.youtube.com/watch?v=Tk--WgBtIBA
0519nobodyさん
2015/06/10(水) 10:26:16.68ID:???マスタ統合+リバースプロキシでシステム間を往き来できるようにはなったのですが
�@UI統一のためメニューバーを共通部品化したいが、テンプレートエンジンが異なるため統合できない、そうなると今後その部分の二重管理が避けられなくなってしまう。
�Aログイン認証をどちらかのフレームワークに寄せたいがログインセッションを共通で読めるようにする方法がわからない。例えばオレオレフレームワークでCakePHPが読めるセッションを作るといったことが出来るのか??
という問題にぶち当たり頭を抱えております。
�@�Aについてみなさまのお知恵を拝借できないでしょうか?
0523nobodyさん
2015/06/11(木) 08:53:44.17ID:???0524nobodyさん
2015/06/11(木) 12:09:32.15ID:???0526nobodyさん
2015/06/19(金) 12:17:16.27ID:SOLYvyQT$this->Auth->user()をうまく拾えるのですが、
これを例えば、Fooコントローラ内で
同じものを拾いたい場合どうすればいいか、
教えて頂けますでしょうか。
AuthComponent::$sessionKeyを同じものにしても
だめでした。
0530nobodyさん
2015/06/22(月) 14:29:35.10ID:L3kxYzS9モデル同士が密結合になるから微妙なカンジがするんだけど、コントローラーでやろうとすると、どんどん太っていくし。
0532nobodyさん
2015/06/22(月) 16:41:23.12ID:???0533nobodyさん
2015/06/23(火) 09:29:54.07ID:P4/MrXim例えば1ユーザー(Userモデル)が自分の趣味を設定できるとします。
趣味はHobbyモデルで複数選択できます。
この時、登録時は単にsaveすればいいので問題無いですが、
編集時はどうすればいいのでしょう?
一旦、Hobbyに登録されているuser_idが該当するデータを削除した後、
追加という形でしょうか?
それともHobbyモデルの該当するuser_idを一旦取得して、
新たに選択したデータを追加、選択を外したデータを削除
という形がよいでしょうか?
どちらもなんか違う気がしてるので、良い方法があれば教えてください。
0534533
2015/06/24(水) 17:26:48.43ID:???編集時は一旦全削除されて新たに追加という形になっていました。
ですので、>>533は前者の方法で正しいみたいです。
0535nobodyさん
2015/07/02(木) 17:37:38.09ID:Bg3Tlr0ucheckboxで複数検索した時、URLが
/posts?category%5B0%5D=1&category%5B1%5D=2
みたいになります。チェックボックスの数だけ
「category%5B0%5D」のパラメータが増えると思うのですが、これで正しいのでしょうか?
(実際に絞り込みができるので、正しいかもしれませんが・・・)
カラムが1つでカンマ区切りとか複数指定する方法があれば教えてください。
0536nobodyさん
2015/07/07(火) 18:57:43.11ID:???ビューにあまりプログラムを書きたくないのですが
0537nobodyさん
2015/07/12(日) 13:42:48.57ID:???見返りをもらって損はしなかったww
超本命が大穴
※を取って ∇をcに置き換え
s※nn2∇h.net/s11/465rty.jpg
0539nobodyさん
2015/07/13(月) 03:11:40.57ID:???http://rola-diet.sblo.jp/
0540nobodyさん
2015/07/13(月) 21:23:44.80ID:???0541nobodyさん
2015/07/13(月) 23:12:26.27ID:???0542nobodyさん
2015/07/14(火) 01:13:58.74ID:???はえーな
0543nobodyさん
2015/07/14(火) 03:47:01.98ID:???もともと2chって質疑をやるには向いてないと思う
仮に回答があったとして何を根拠に信用できるかというのもある
cakeの場合 >1 にあるようなユーザフォーラムもあるし
ja.stackoverflow.com みたいなところだってあるからそういうところを活用すべきでは
0544nobodyさん
2015/07/14(火) 21:00:51.06ID:???0545nobodyさん
2015/07/15(水) 10:22:55.73ID:???0546nobodyさん
2015/07/19(日) 12:03:10.80ID:???ここのほうがまだレス付きそう
0547nobodyさん
2015/07/20(月) 05:50:38.35ID:kX6qAGro0548nobodyさん
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.5未満のバージョンを使っている人は差分を見て自力でホットフィクスを行ってください。
0552nobodyさん
2015/08/08(土) 00:19:49.90ID:???まァ、12時間前の俺なんだけど。てか、しばらく来ないうちに過疎りすぎだろ。
0555nobodyさん
2015/08/08(土) 03:18:03.61ID:???運用で発覚してるのか、それともコードレビューで見つけてるのか。。、
0556nobodyさん
2015/08/08(土) 07:08:36.37ID:???人が書いたコードを読むのは勉強になるので。
0557nobodyさん
2015/08/08(土) 11:57:41.64ID:???コード見ずにテストする方法では検出が不可能か、極めて難しい問題ってのが有るんだよ。
そして負荷が高くなった時とかまれにしか発生しないが重大な問題になりがち。
だからコードを見ないでテストすることにも一定の意味はあるが、
コードを見て問題点を探す作業、つまり>>556もいってるコードレビューね。
これは 絶対に 省くことは出来ない。
コードレビューを軽視して、仕様ばっかり見ているような所はダメなところだよ。
んで、コードレビューという作業は、他人の書いた難解なコードを解読する 作業じゃない。
っていうかそんなの馬鹿じゃない?
Aさん「難しい問題作りました!」
Bさん「難しい。うーん、うーん。あっ分かった!」
お前ら、謎解き合戦でもして遊んでるのか? それで誰が喜ぶんだ?って。
読めないコードは、読む人の技術不足じゃない。書く人の技術不足だ。
読めなければ書き直しを言い渡して良い。
(もちろん言語の文法が理解できないっていうのは、読む人の技術不足。
文法がわからないからっていうのは、書き直しの理由にはならない)
0558nobodyさん
2015/08/08(土) 12:13:44.49ID:???自分立ち入りで書いたソースならコードレビューするけど、さすがにフレームワークはしないでしょ。
今回みたいに興味があってするとか、運用で問題発覚して解析するというのは別として。
0559nobodyさん
2015/08/08(土) 20:59:26.33ID:???何か使えなくなるコードがあったりしない?
0561nobodyさん
2015/08/08(土) 22:19:04.30ID:???2.6.0 -> 2.6.9 みたいな同じマイナーバージョンならそれほど問題は起きないはず。そうじゃない場合は、公式にあるマイグレート手順の通りにすればそれほど問題は起きないはず。
ただ、prefix でルーティングしてる場合は多少バグってでも上げるべきかな。
0562nobodyさん
2015/08/09(日) 00:02:51.87ID:???その、それほど問題は起きないはずってのが怖いよね。万が一バグったらそのままのがよかったじゃんってなる。
0563nobodyさん
2015/08/09(日) 01:18:36.79ID:???1. prefix ルーティングを使用している
2. 'prefix' => 'admin' なら admins テーブルからログインユーザーを探す、といった prefix キーに依存した認証処理になっている
3. その認証の結果アクセスできるはずの admin_系の画面を第三者に利用されると困る
3つ全部に該当する場合に問題になるので、バグが起きた場合のリスクと、admin_系の画面を不正に利用された場合のリスクを考えて選択するといいかも。
同時に報告したもう一つの脆弱性は正直大したことじゃないので。
もっとも、クリティカルなフィールドの検証に range か comparison を使ってなければの話だけど。
0564nobodyさん
2015/08/09(日) 13:20:09.43ID:???何か問題起きないか不安だ。どんな機能が更新されたのかいまいち情報ないし。
0565nobodyさん
2015/08/09(日) 13:30:21.06ID:???0567nobodyさん
2015/08/10(月) 15:09:16.81ID:???リファラを書き換える事って出来ますか?
AAAというサイトへアクセスを想定しています。
実際には、Yahooで検索して遷移したとします。
しかし、AAAのサーバ側では「Googleからのリファラであった」と見せかけるにはどうした良いですか?
0568nobodyさん
2015/08/10(月) 16:08:21.74ID:???0570nobodyさん
2015/08/10(月) 21:00:17.17ID:???ソケット通信 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/
0574nobodyさん
2015/08/13(木) 19:28:44.54ID:???3.0からのオブジェクト返しにちょっと慣れずにいます。
今まではリレーションされたレコードを含めて配列で一気に取ってきておいて、
あとは巨大な配列をブンブン回して処理していたのを、
ある程度Entityに分担させられるようになる(Lazy loading)って認識でいいのかな?
あとは、DBからコードの形で取得したデータを
対応する文字列に置き換えたりっていうような処理を
自分はHelperとかにやらせてたりしたけれど、それもEntityにやらせる方が良かったりする?
0575nobodyさん
2015/08/14(金) 12:00:47.77ID:ghYlBS32CakePHP2.xでApp::usesとかApp::importとかに書くのはクラス名?(拡張子を抜いた)ファイル名?
クラス名=ファイル名が前提?
1ファイルに複数クラス作っちゃダメ?
0576nobodyさん
2015/08/14(金) 13:18:21.94ID:???http://api.cakephp.org/2.5/class-App.html#_uses
まずAPIドキュメントを見るんだ
書いてあるとおりクラス名だ importの方はいろいろ柔軟だけれども
原則としては1クラス1ファイルだが、特定のクラスからだけしか参照しない
内部クラス的なものはそのクラスと同じファイルにまとめてしまうことはあるな
0577nobodyさん
2015/08/14(金) 14:41:49.62ID:???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:???thx
こういうのって普通の使い方は書いてあるけど
「じゃあ、こういう使い方はできるの?」ってのには触れてないんだよね。
言語の基礎的なことなら自分で試せばいいんだけど、フレームワークが間に入ってると
そもそもできないのか、自分の使い方が悪いのかが切り分けにくいし。
独自例外クラスとかほとんど空なのに個別にファイルつくるのは面倒だから
1ファイルにまとめたかった。
Javaとかなら1ファイル1クラス(非ネストクラス)って決まってるから諦めつくんだけど。
0580nobodyさん
2015/08/15(土) 16:08:08.61ID:???登録済みの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:???2でちょっと作りかけたコードがあるが、今ならまだ移行できる
0582『佳子様』の『秘密』を『暴露』
2015/08/20(木) 15:37:21.30ID:???.
.
Σ(Д・;)"プチエンジェル事件"!(小学生売春事件)
▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
プチエンジェル事件に隠された日本の闇を暴露する!
■実は、『女性皇族』の『男遊び』と、
女性皇族がおこなったハニートラップだった!!
■その『男遊び』と『トラップ』を誤魔化す為の、
『プチエンジェル事件』が真相だったのだ!!
■闇に包まれた真相を、私が『暴露』する!!
※知る覚悟はできていますか?
下記を『Google』か『Yahoo』で検索して下さい。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
検索⇒『佳子様 真子さま kare氏』
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
※上記で検索しますと、1ページ目の5番目以内に、
【懇約〕秋篠宮家の佳子様と・・・・・・・
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑が表示されます。
※世の中、知らない方が良い事もあるんです・・・。
▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲▲
.
.
.
0583nobodyさん
2015/08/20(木) 17:42:51.65ID:???日本では流行らない気がする
0584nobodyさん
2015/08/20(木) 21:43:48.53ID:???0585nobodyさん
2015/08/21(金) 04:29:01.85ID:???0586nobodyさん
2015/08/21(金) 10:20:45.46ID:???あれホントうざかった
3を始める人はまたその状況が続くんだな
0587nobodyさん
2015/08/21(金) 20:18:15.77ID:???今まではConfig\hoge.phpに独自グローバル定数をまとめて定義し、
bootstrap.phpでconfig(’hoge’);
と書いて読み込ませていました。
が、3.0系ではそもそもconfig関数が無くなっています。
自前でincludeすれば良いといえばそれまでですが、そもそもとして
3.0系ではグローバル関数を使用すること自体がよろしくないのでしょうか?
0588nobodyさん
2015/08/22(土) 03:29:22.56ID:???■名前衝突のリスクが高い
PHP本体のバージョンアップや、サードパーティのライブラリとの共存で問題が生じる可能性がある。
■オートロードできない
使われないかもしれない関数/定数であっても予め定義しておかなければならず、パフォーマンスが低下する。
という欠点があるので削減していく方向なのだろう。
と思っていたけれど、stackTrace() のように3系になってから新たに導入された前例があるので何とも言えない。
ちなみに導入された理由は Cake\Error\Debugger を毎回書くのに疲れたから。
0590nobodyさん
2015/08/23(日) 16:19:04.63ID:???$this->Paginator->settings = [
'limit' => 10,
'order' => [ 'created' => 'asc' ]
];
みたいに指定すると、ビューのページネーションのリンクに
sort:Model.created/direction:asc
みたいなのが付くんですが、これを付けないようにする方法ありませんか?
orderは 'created' => 'asc'で固定にしたいです。
0591nobodyさん
2015/08/23(日) 20:13:46.96ID:???モデル名を省略せずに 'Model.created' => 'asc' の形式で指定すれば、当該ソート条件の時は付かないはず。
もしくは $this->Paginator->paginate() を呼んだ後に自力で消す。
unset($this->request->params['paging']['Model']['options']['order']);
'Model' は正しい名前に読みかえてね。
■ このスレッドは過去ログ倉庫に格納されています