【PHP】フレームワーク CakePHP 17ホール目【v2.4】
■ このスレッドは過去ログ倉庫に格納されています
0001nobodyさん
2014/03/01(土) 17:03:24.57ID:8AJ9GD6ECakePHPから派生したLithium(li3)も専スレできるまではここでどうぞ
質問するときはCakePHPのバージョンを書きましょう
※他フレームワークとの比較等はスレ違いです
■本家
http://www.cakephp.org/
APIドキュメント
http://api.cakephp.org/
github - cakephp
http://github.com/cakephp
the Bakery
http://bakery.cakephp.org/
Issue
http://cakephp.lighthouseapp.com/dashboard
CheatSheet[1.2] (PDF)
http://cakephp.org/files/Resources/CakePHP-1.2-Cheatsheet.pdf
■日本語公式
http://cakephp.jp/
フォーラム
http://cakephp.jp/modules/newbb/
cookbook(マニュアル)
[2.x] http://book.cakephp.org/2.0/ja/index.html
[1.3] http://book.cakephp.org/ja
※前スレ
http://kohada.2ch.net/test/read.cgi/php/1378659370/
0275nobodyさん
2014/04/16(水) 23:00:28.05ID:???0276nobodyさん
2014/04/17(木) 00:07:52.39ID:???0277nobodyさん
2014/04/17(木) 00:13:59.42ID:SXCfNI/g1行ずつステップデバッグ実行をした方が効率が良いものなのでしょうか?
cakePHPとかみたいなFWを使っている場合には
デバッガーがそこまで追い切れるのか若干気になります。
皆さんは、PHPで業務システムを作る時にはデバッガーを使っていますか?
それとも dumpで開発していますか?
0278nobodyさん
2014/04/17(木) 00:19:14.66ID:???人海戦術に頼る。クラウドソーシングとかで安く依頼できるしな。
やっぱ、システムだけで対応しようとすると、何かと抜けが出るよ。
0279nobodyさん
2014/04/17(木) 00:26:59.39ID:???ステップ実行といってもすべての行を1行ずつ実行する必要はなくて
処理を追いたいところにブレークポイントをつけておけばいいだけ
ステップ実行するまでもない場合はdebug関数で変数の中身を画面で確認してる
>>261
2.3.8で試してみたらfalseになったんでバージョンが原因みたいだね
>>263
自分もreadは使ったことなかったんで試してみたところ、再現を確認
なかなか嫌な動きだわ
0280nobodyさん
2014/04/17(木) 02:16:53.26ID:???0281nobodyさん
2014/04/17(木) 06:59:31.54ID:+GQ/cWTuどのように実現すればよいのでしょうか?
[テーブル左] 列A*、列B*、列D*、列E*
[テーブル右] 列A*、列B*、列C
(*は主キー)
のような構成で、
[テーブル左] に [テーブル右] を 列A、列Bをキーとして
列C を外部結合したいと考えています。
$virtualFields で1つにまとめて、$primaryKeyで定義しなす?
0283nobodyさん
2014/04/17(木) 12:22:28.87ID:???0284nobodyさん
2014/04/17(木) 12:35:55.72ID:???0285nobodyさん
2014/04/17(木) 14:12:21.40ID:???'joins' キーでちまちま作りこんだほうが良い。
というか、以前調べたときはそれしか無理だった。
他に方法あれば教えて欲しい。
Cake3 から複合キー対応らしいけどね。
0286nobodyさん
2014/04/17(木) 23:16:01.90ID:???親カテゴリから子カテゴリまで何階層あるか調べる方法って無いですかね?
無限にカテゴリを作れるのではなく、ある程度階層指定したいと思います。
簡単に表示する方法があるなら、エラー判定しやすいのですが
0287nobodyさん
2014/04/17(木) 23:45:58.91ID:???lft がより小さく且つrghtがより大きいので
子エンティティを $child、モデルのエイリアスを Foo 、階層を $depth とする場合
こんな風にしたら取れるはず
$childLft = $child['Foo']['lft'];
$childRght = $child['Foo']['rght'];
$conditions = array('Foo.lft <' => $childLft, 'Foo.rght >' => $childRght);
$depth = $Foo->find('count', compact('conditions')); // 親の階層数
0289286
2014/04/18(金) 10:55:29.76ID:???以下の様な階層だとして
テスト→子テスト→孫カテゴリ
287さんの方法では、「子テスト」を選ぶと1と表示され、
「孫テスト」を選ぶと2が表示されるなど、1つ上の階層番号しか表示されません。
0290286
2014/04/18(金) 10:56:34.64ID:???テスト→子テスト→孫カテゴリ
ではなく
テスト→子テスト→孫テスト
でした。
0291nobodyさん
2014/04/18(金) 13:04:19.06ID:N7yuefiZ0292nobodyさん
2014/04/18(金) 13:22:10.90ID:???0293nobodyさん
2014/04/18(金) 13:39:34.12ID:N7yuefiZ0295nobodyさん
2014/04/19(土) 16:38:03.71ID:2kVxcvEHとうとうCakePHP bake なんたら でぐぐると食べ物のケーキの記事ばかり出てくるようになってしまった
0296nobodyさん
2014/04/19(土) 17:11:08.54ID:???0297nobodyさん
2014/04/19(土) 20:27:05.90ID:???0298nobodyさん
2014/04/19(土) 20:37:49.07ID:???0299nobodyさん
2014/04/19(土) 20:39:03.09ID:???0300nobodyさん
2014/04/19(土) 20:57:23.19ID:2kVxcvEH0301nobodyさん
2014/04/19(土) 21:42:49.70ID:???どこの検索エンジンだよそれw
0302nobodyさん
2014/04/20(日) 01:46:02.06ID:???よく叩かれてる
0303nobodyさん
2014/04/20(日) 09:30:13.88ID:???やっぱり、Ruby、Perlの使われ方度合いに比べると
全然使われてないことになる
0304nobodyさん
2014/04/20(日) 09:57:55.62ID:???最終的には好みの問題みたい。
0305nobodyさん
2014/04/20(日) 10:42:30.47ID:???RailsとCakeの今が、いい意味でも悪い意味でもRubyとPHPの差の一つ
0306nobodyさん
2014/04/20(日) 11:18:10.27ID:???FWは型を提供するものだから、その型が気に入らなければ別のを使うしか無い。
無ければ作るか自分を合わせるしか無い。
明確な問題点があるんだったら、コミュニティに参加して改善を提案してみたことはあるのかな?
他を調査してより良い解決策があるんなら、具体的にその利点をここの読者に教えてあげようとしないのかな?
まぁ、自分一人で決めることも出来ないから、愚痴を言いたくなる気持ちもわかる。
0307nobodyさん
2014/04/20(日) 11:24:53.22ID:???え?
Perlは人口減って、昔から使ってた一部の会社が使ってるばかりだし、
Rubyは最近ようやく増えてきたかなって程度だろ。
0309nobodyさん
2014/04/20(日) 12:34:02.33ID:???0310nobodyさん
2014/04/20(日) 12:38:12.89ID:???Perl,Ruby
ガラパゴスFW
CakePHP
って言いたいのか
実際そうだけどな
0311nobodyさん
2014/04/20(日) 14:23:15.37ID:???(シェアじゃなくてGitHubの人気だったか?)
あと、YiiとかCIもCakePHPよりは上なんだよな確か。
でもオープンソースだからといってもシェアに関してはプロプライエタリと同じで、
必ずしも良い物が普及するとは限らないよな。
たとえばWordPressみたいに、酷いシロモノでも
マーケティングが勝利するオープンソースもあるし。
0312nobodyさん
2014/04/20(日) 15:51:49.84ID:???0313nobodyさん
2014/04/20(日) 17:08:13.64ID:???0315nobodyさん
2014/04/21(月) 09:50:09.63ID:???多いと錯覚しているだけだろ?
そら、PHPみたいに成熟された言語より
Rubyのような比較的新しくてそれほど一般化していない
技術のほうが注目を浴びるに決まってるわw
それと混同して「PHPは人気なくなった」とか目論見が甘すぎ
0316nobodyさん
2014/04/21(月) 15:57:26.42ID:???0317nobodyさん
2014/04/21(月) 18:53:01.40ID:???0318nobodyさん
2014/04/25(金) 10:49:57.10ID:???$this->referer()だと普通にリファラが表示されるだkです。
0319nobodyさん
2014/04/25(金) 13:39:29.24ID:s6GwqSqm0320nobodyさん
2014/04/25(金) 15:10:13.57ID:???何を作ろうとしてるのか知らないけど、
リファラを使って何かをする機能ってだけで、ちょっと不穏な空気を感じてしまう。
0321318
2014/04/25(金) 16:51:30.47ID:???管理画面なのですが、例えば削除(delete)する場所って
一覧(index)と詳細(detail)で出来るとします。
削除した後に全部一覧に戻せば良いだけかもしれませんが、
改ページした後に削除した場合、リファラで前の画面に戻したいのです。
つまり、要件として
・一覧から削除 → 前のページにリダイレクト
・詳細から削除 → 一覧にリダイレクト
となります。これをするために、リファラを分析して
「どこのページからのアクセスか?」がわかれば簡単と思い、質問しました。
0322nobodyさん
2014/04/25(金) 17:39:22.10ID:???その場合なら引数にリダイレクト変数をセットできる。
コントローラ側で汎用的な処理をしたいんならやっぱりリファラでやったほうが良いのかも。
URLの解析は >>320 の言ってる通りRouter::parse()メソッドがある。
ただ、リファラをそのまま渡してもダメで、
アプリケーションのルートからのパスにする必要があったかもしれない。
0323nobodyさん
2014/04/27(日) 13:54:25.75ID:???PHPばっかりの日本はガラパゴスなんかな
0324nobodyさん
2014/04/27(日) 15:43:07.45ID:???phpのほうがrubyよりは一応多いでしょ
rubyの9割以上の求人がrailsってのがすごいよな
railsだとpostgresql求人増えてるし
cakephp+mysqlのスペックだとガラパゴスになりそうだな
0325nobodyさん
2014/04/27(日) 16:13:12.62ID:???0326nobodyさん
2014/04/27(日) 17:19:21.88ID:???0327nobodyさん
2014/04/27(日) 18:49:35.25ID:???Djangoとはえらい違いだ。
0329nobodyさん
2014/04/27(日) 21:32:10.25ID:???0331nobodyさん
2014/04/27(日) 23:09:38.66ID:9dL9KMPJ結局またMySQLだよな
0332nobodyさん
2014/04/28(月) 00:46:19.25ID:???ま、CakeもRailsのパクリなんであれだが
0333nobodyさん
2014/04/29(火) 10:06:00.47ID:uHAmZpKN業務で使っている人は早めに当てておけよー。
1.3.x と 2.4.x 両方。
0334nobodyさん
2014/04/29(火) 10:12:45.43ID:???公式からしてやられてしまったのか?w
http://cakephp.org/
502 Bad Gateway
0335nobodyさん
2014/04/29(火) 10:46:44.84ID:uHAmZpKNちなみにこの脆弱性報告したのは実は俺。
0336nobodyさん
2014/04/29(火) 11:06:47.62ID:???0337nobodyさん
2014/04/29(火) 11:19:04.21ID:???0338336
2014/04/29(火) 11:26:35.82ID:???0340nobodyさん
2014/04/29(火) 11:35:24.45ID:uHAmZpKNSecurityComponent のフォーム改竄防止機能に穴があった。
作りにもよるけど hidden で受け取る id とかを改竄されると、任意のレコードを更新可能。
Model::save() を呼ぶ時に第一引数の $data に更新したいデータだけを渡すか
第三引数の $fieldList を明示的に指定するかしてれば平気。
>>338
別のアクションでも平気。
FormHelper が作る action をセキュリティトークンに入れてるから。
ただ、JavaScript で動的に action を変更している場合はブラックホールに飲まれるかと。
0341nobodyさん
2014/04/29(火) 11:38:39.55ID:uHAmZpKNどういたしまして
0342nobodyさん
2014/04/29(火) 11:44:15.83ID:???俺が触ってたのは1.3の頃だけど使いたくないと思った
0343nobodyさん
2014/04/29(火) 11:46:59.01ID:???0345nobodyさん
2014/04/29(火) 16:06:25.97ID:???Cake純正のもの使った方が楽なんかな
0346nobodyさん
2014/04/29(火) 17:12:05.84ID:???0347nobodyさん
2014/04/29(火) 19:09:18.76ID:???それでメジャーなのかなぁと思って、手を出した
結構色々これで作っちゃったから、以後ずるずる
0348nobodyさん
2014/04/29(火) 20:08:51.90ID:???0349nobodyさん
2014/04/29(火) 22:33:23.36ID:???0350nobodyさん
2014/04/30(水) 08:44:08.14ID:???環境によっては増えたと思い、環境によっては減ったと思う
0351nobodyさん
2014/04/30(水) 13:45:58.87ID:???0352nobodyさん
2014/04/30(水) 15:08:14.56ID:???0353nobodyさん
2014/05/01(木) 00:53:29.70ID:???0354nobodyさん
2014/05/01(木) 02:19:18.51ID:???文言考えるの面倒くさいんだろうな
0355nobodyさん
2014/05/02(金) 00:08:32.26ID:???これ本当?diffをちょっとみただけだけど、post先のURLを改竄されても通ってたのが、通らなくなってよりセキュアだねってだけで、hiddenの改ざん検知とか関係なくない?
0356nobodyさん
2014/05/02(金) 00:25:59.26ID:???0357340
2014/05/02(金) 00:35:18.90ID:???本当だよ。
俺が Mark Story 氏に実際の攻撃手順を書いて送ったのが26日。
アップデートが 2.5.0-RC2 に脆弱性のアナウンスなしで反映されたのが27日。
1.3.18 と 2.4.8 にアナウンスありで反映されたのが29日。
かなり深刻な脆弱性だったからこういう日程になったんだけど、
結果的にはミスがあって 2.4.9 が出ることになった。
必ず攻撃が成功するかはサイトの作り次第だけれど、
仕事で使ってるならアップデートした方がいいよ。
0358nobodyさん
2014/05/02(金) 00:43:14.81ID:???今回の問題は、field改ざん検知のハッシュ値が、別のurlでも使えてしまう問題。
例えばForm->textでfield1,filed2を生成しPOSTされた値を保存するaction1、
Form->textでfield1のみ生成しPOSTされた値を保存するaction2があるとする。
action2でform改ざんを行って手動でfield2を追加しPOSTする場合を考える。
一緒にPOSTされるhash値の不一致でエラーとなるのが本来の仕様。
ただし以前のバージョンだと、form改ざんと併せてhash値をaction1のものを引用すると、
エラーにならずにfiled2を上書きできてしまう。
今回の修正で他のアクションのhash値を引用することができなくなり、本来の仕様を
回避する穴がふさがった。
ちなみにhiddenの改ざんの話は、どういう意図で言ったのか俺もよく関連はわからん。
0359nobodyさん
2014/05/02(金) 00:55:27.39ID:???0361nobodyさん
2014/05/02(金) 15:48:57.61ID:???階層が増えるとビューに余計なコードを書く機会が増える
だからコントローラと独自ヘルパーで何とかしているけど、
手間がかかって仕方がない。
0362nobodyさん
2014/05/02(金) 18:24:19.36ID:???ビューで表示するときはヘルパーか何か作らないといけないのでしょうか?
以下のようにしたいのですが、generateTreeListでは無理です。
・My Categories
・Fun
・Sport
・Surfing
0363nobodyさん
2014/05/02(金) 19:10:49.13ID:???Treeビヘイビアは不要
Model::find('threaded');
か、
Model::find('all');
したでーたを Hash::nest() で入れ子にする。
0364nobodyさん
2014/05/02(金) 20:12:03.57ID:???すみません、そういう事ではなくて、ビューでの表示です。
ビューで>>362みたいなリスト化して出力するには、
独自のヘルパーを作らなければいけないのか?
他に方法があれば教えてくださいっと言った質問になります。
0365nobodyさん
2014/05/02(金) 20:40:21.50ID:???なんでかって言うと、再帰処理したら簡単に表現できるからなぁ。
で、再帰処理するためには入れ子構造に組み直す必要があって、
そのためには >>363 に書いた通りって意味なんだが?
0366nobodyさん
2014/05/02(金) 20:42:16.77ID:???よく考えてみ。
0367nobodyさん
2014/05/02(金) 21:05:59.69ID:???0368367
2014/05/02(金) 21:46:37.32ID:???HtmlHelper::nestedList() に渡すには TreeBehavior だと自力で整形しないと駄目なんだね。
CakeDC の Utils プラグインにある TreeHelper::generate() なら >>362 の要求を満たせる。
0369nobodyさん
2014/05/02(金) 21:48:33.85ID:???HtmlHelper::nestedList() に渡すには
単純な入れ子構造にしておかないとだめ。
Model::find('threaded'); で取得したのはそのまま使えないと思う。
いったん Model::find('all'); で取得したデータを
Hash::extract() で階層を浅くして、それを
Hash::nest(); を使って組み直すなどの手間を掛けないと使えないんじゃないかな。
0370nobodyさん
2014/05/02(金) 21:49:26.87ID:???TreeHelper なんてあるの知らなかった。
一度見てみるわ。
0371nobodyさん
2014/05/02(金) 22:02:34.68ID:???実は俺もわりと最近知った。
0373nobodyさん
2014/05/08(木) 16:22:29.68ID:???サンプルコード漁ったらさらっと書いてあるけど動かない…
■ このスレッドは過去ログ倉庫に格納されています