トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS

CakePHP2.x関係 の変更点

Top / CakePHP2.x関係

#contents

*HASH関数 - これ使えないと配列地獄、使えると天国に近づける [#v6f8c6b7]
-[[【cakePHP】配列を組み替える便利なHashクラス:http://www.mikame.net/pr/archives/834]]
--正直公式マニュアル読んでも意味不明だったのでここで救われた
-[[【CakePHP】Hashクラスの絞り込みで正規表現を使ってみる。:http://bashalog.c-brains.jp/15/04/24-201752.php]]
-[[Hash ― CakePHP Cookbook 2.x ドキュメント:http://book.cakephp.org/2.0/ja/core-utility-libraries/hash.html]]
--公式マニュアルはある程度分かってから読めばなんとかなる。
-[[CakePHP2のHash::filterを使って空っぽな多次元配列を判別する:http://kanonji.info/blog/2013/02/12/cakephp2%E3%81%AEhashfilter%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%A9%BA%E3%81%A3%E3%81%BD%E3%81%AA%E5%A4%9A%E6%AC%A1%E5%85%83%E9%85%8D%E5%88%97%E3%82%92%E5%88%A4%E5%88%A5%E3%81%99%E3%82%8B/]]
--コールバック関数を指定しなければ空の変数を削除、コールバック関数を指定すると任意の条件で判定して削除できる。
-コールバック関数を使用出来るHashのメソッドはいくつかある
--[[Hash::filter:https://book.cakephp.org/2.0/ja/core-utility-libraries/hash.html#Hash::filter]]
---[[CakePHP2のHash::filterを使って空っぽな多次元配列を判別する:http://kanonji.info/blog/2013/02/12/cakephp2%E3%81%AEhashfilter%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E7%A9%BA%E3%81%A3%E3%81%BD%E3%81%AA%E5%A4%9A%E6%AC%A1%E5%85%83%E9%85%8D%E5%88%97%E3%82%92%E5%88%A4%E5%88%A5%E3%81%99%E3%82%8B/]]
--[[Hash::map:https://book.cakephp.org/2.0/ja/core-utility-libraries/hash.html#Hash::map]]
---抽出した各配列に対して一定の処理をして返す関数。例えば「姓」「名」データから「姓名」の値を追加して返すなど
---抽出した各配列に対して一定の処理をして返す関数。例えば「姓」「名」データから「姓名」の値を追加して返すなど。
---applyとの違いは未検証だが、基本的にmapを使えば良いと思われる。
---[[Hash::map を使って full_name キーを代入した配列を作ればよい:http://webinlet.com/2016/cakephp%E3%81%AEhash%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%A7all%E5%BD%A2%E5%BC%8F%E3%81%8B%E3%82%89list%E5%BD%A2%E5%BC%8F%E3%81%AE%E9%85%8D%E5%88%97%E3%82%92%E4%BD%9C%E3%82%8B]]
--[[Hash::reduce:https://book.cakephp.org/2.0/ja/core-utility-libraries/hash.html#Hash::reduce]]
---縮小(reduce)することでを単一の値を作ります。つまり配列をまとめて(例えば全部足す)一つの値にして返す関数
--[[Hash::apply:https://book.cakephp.org/2.0/en/core-utility-libraries/hash.html#Hash::apply]]
---抽出した値一つ一つを加工して、その結果を返す?今のところmapとの違いは理解していないので試す。
---抽出した値一つ一つを加工して、その結果を返す。返り値がコールバック関数から返されるリストの値になると思われる(未確認)。
---2.x日本語マニュアルには記載がない、指定された値に加工をして、配列を返す関数の模様
---[[Cakephp3のマニュアル:https://goo.gl/b3ukmH]]も参考のこと




*モデルのアソシエーションを動的に変更する [#c932d318]
-[[直接アソシエーションを生成、削除する:http://book.cakephp.org/2.0/ja/models/associations-linking-models-together.html#dynamic-associations]]
--[[【CakePHP】アソシエーションの一時的な解除(unbindModel) | CakePHP雑記帳:http://cakephp.popotoo.com/db/258/]]

*Searchプラグイン - かなり簡単に検索機能が追加できる [#c0c305b9]
-[[Searchプラグインを使ってCakePHPに検索を実装する:http://mawatari.jp/archives/introduction-of-cakedc-search-plugin-for-cakephp#section-2]]
--アソシエーション絡み以外はここでほぼ事足りる情報量
-[[CakePHP Searchプラグインで 複数Modelを検索:http://www.kaasan.info/archives/3385]]
--アソシエーション絡みでも非常にシンプルに実装可能、他サイトは古い情報ばかりだったのでありがたかった!
-SearchプラグインとPaginatorを併用すると、ページ数をそのまま別検索でも使ってしまうのでエラー画面となる。
--対策は下記のようにページ数もURLクエリにすることで解消できる。
 $this->Paginator->settings['paramType'] = 'querystring';
--実際の問題としてはpaginateの問題で例外でキャッチできる[[範囲外のページへのアクセス:http://book.cakephp.org/2.0/ja/core-libraries/components/pagination.html#id6]]

*Cakephpのフォームでoptgroup出力時にぶつかった問題 [#s86ab26c]
--[[selectのoptgroupのlabel表示と同じoptionが出ない問題:http://pnome.blog88.fc2.com/blog-entry-96.html]]
---全く出ない理由が分からなくて困った。 'showParents'=>true が必要
 $this->Form->select('id',$optAry,null,array('empty'=>'選んでください','showParents'=>true));


*Containableビヘイビア - いらないアソシエーションを自動で切り離してくれる [#k81c48ce]
**recursive でいいじゃんとか思った人は死んでも見るべきビヘイビア [#p2c8a4a8]
-[[Containableビヘイビア ― CakePHP公式:http://book.cakephp.org/2.0/ja/core-libraries/behaviors/containable.html]]
-[[CakePHP 2.5、Containable ビヘイビアチュートリアル♪ – oki2a24:http://oki2a24.com/2014/09/14/cakephp-containable-behavior-tutorial/]]
-[[CakePHP2 でシャカリキに効率よく contain する - Qiita:http://qiita.com/chinpei215/items/d8b1ba7e4b9088ee03e4]]
-[[CakePHP2 containableでrecursive=2のテーブルを取得する方法:http://qiita.com/kazu12344@github/items/933410bc220e42854097]]
-[[モデルでの便利な組み込みビヘイビア『ContainableBehavior』の使い方:http://yasigani-ni.com/cakephp/cakephp%E3%80%80%E4%BE%BF%E5%88%A9%E3%81%AA%E7%B5%84%E3%81%BF%E8%BE%BC%E3%81%BF%E3%83%93%E3%83%98%E3%82%A4%E3%83%93%E3%82%A2%E3%80%8Econtainablebehavior%E3%80%8F%E3%81%AE%E4%BD%BF%E3%81%84%E6%96%B9/]]

*コンソール(シェル)からコントローラのアクションを実行する方法! [#n8f3aa3d]
**コンソールのデバッグはしにくいので、普通のアクションを作成してから実行できるので便利。 [#n4ede109]
-[[CakePHP コントローラのメソッドをシェルで実行する方法 : アシアルブログ:http://blog.asial.co.jp/1209]]
-[[CakePHP2.xのコントローラ/アクションをcronで実行しする方法。 | Wataame Frog:http://wataame.sumomo.ne.jp/archives/5311]]


*CakePHP Upload プラグイン [#q6d07d27]
**設定は少し手間がかかるが多彩なアップロードとサムネイル作成が実装できる。 [#q8e4ae94]
-[[しっかり理解する CakePHP Upload プラグインの使い方 (1) 導入・DB, Model 変更 – アプリ徹底紹介:http://app-review.poox.xyz/archives/1280]]
-[[しっかり理解する CakePHP Upload プラグインの使い方 (2) View や Controller の修正 – アプリ徹底紹介:http://app-review.poox.xyz/archives/1289#2]]
-[[しっかり理解する CakePHP Upload プラグインの使い方 (3) Behavior の設定 – アプリ徹底紹介:http://app-review.poox.xyz/archives/1302#pathMethod]]
-[[しっかり理解する CakePHP Upload プラグインの使い方 (4) うまく動かない時にはこれをチェック! – アプリ徹底紹介:http://app-review.poox.xyz/archives/1324]]
-[[しっかり理解する CakePHP Upload プラグインの使い方 (5) アップロードされたファイルをリネームする方法 – アプリ徹底紹介:http://app-review.poox.xyz/archives/1327#comment-5388]]

*アクションの描画結果を文字列で取得する [#h6368307]
-[[【CakePHP2】任意のコントローラのアクションの描画されたビューを取得する:http://blog.livedoor.jp/spyder_5615/archives/29619782.html]]
-[[Controller::requestAction(公式マニュアル):http://book.cakephp.org/2.0/ja/controllers.html#Controller::requestAction]]

*[[【CakePHP2】saveALLでinsertしたidのリストを取得する:http://cakephp.popotoo.com/other/137/]] [#pbeb9a4b]

*[[CakePHP 静的コンテンツのURLについて | /app/webroot/ 以下のページで複数URLでのアクセスを  .htaccess で禁止する。 :http://blog.fusic.co.jp/archives/1459/]] [#i98cdef0]
 /app/webroot/test/index.html に配置すると
 example.com/test/index.html
 example.com/test/
 でアクセスできるが、
 example.com/test 
 でアクセスすると
 example.com/app/webroot/test/
 にアクセスしてしまう
 
 表示の実害はないが、SEOなど同じファイルに複数URLという問題が発生する。
-/app/webroot/.htaccess に末尾二行を追加
 <IfModule mod_rewrite.c>
 RewriteEngine On
 RewriteCond %{REQUEST_FILENAME} !-d
 RewriteCond %{REQUEST_FILENAME} !-f
 RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
 #以下の二行を追加
 RewriteCond %{THE_REQUEST} "^(.+?) (.*?)/app/webroot/(.*?) (.+?)$"
 RewriteRule ^(.*?)$ %2/%3 [R=301,L]
 </IfModule>

*[[CakePHP2で、リンク時、サブミット時に確認アラートを表示する方法。:http://wataame.sumomo.ne.jp/archives/5715]] [#p5947c8a]
-リンクやサブミットボタンに簡単に確認ボタンを追加できる。忘れがち