CakePHP

CakePHPのSearch pluginでタグの絞込み検索を作る(AND検索)

一昨日にOR検索のほうは修正したばかりですが、CakeDCのsearch pluginの記事が少ないので1個置いときますね。CakePHP Advent Calendar 2010 8日目 - kanonjiの日記のコードに機能追加しました。色々な検索の方法の中に、HABTMの検索が書いてありますが、これ…

CakePHPのsearch pluginのサンプルコードと記事をちょっと修正。Containableは必要でした

CakeDCのsearch pluginの記事が少ないので1個置いときますね。CakePHP Advent Calendar 2010 8日目 - kanonjiの日記のコードをちょっとだけ直しました。タグ検索などを実装するHABTMの検索で、プラグインのReadme.mdにはあったContainableビヘイビアを使わな…

CakePHPのDboSource::expression()を調べてみた。conditions等にSQLを書くためのものかな?

DboSource::expression() というメソッドを見かけて、ちょっと気になったので調べてみました。自分としてはもっと魔法のメソッド的な便利なのだったらいいなーとか思ってたんですが、残念ながらそうでは無いみたい。でも折角調べたのでエントリーにしておき…

CakePHPでjQueryをそのまま書く際に使えるパス補完メソッドをjQueryオブジェクトに追加する。

CakePHPではHtmlHelper::script()を使いJavaScriptファイルを読み込むscriptタグを生成します。これはこれで使うんですが、jQueryプラグインを使う場合は、ロード完了のコールバックで動かしたいところです。また、内部に置いてあるJSONとか画像とかを読み込…

CakePHPのl10nとphpのsetlocale()がかみ合わない件

setlocale()でロケールを設定する必要が出たので、CakePHPのl10nと連動させようとしてます。ただ、残念な事にl10nとsetlocale()が上手くかみ合わず行き詰まりました。 とりあえずの結論 l10nからは'ja'か'jpn'が取得できます。setlocale()でロケールを日本語…

CakePHPのバグ報告ってどういう手順を踏めばいいんだろう?l10n::get()について。

CakePHPの l10n のソースを読んでたら、もしかしたらこれってバグ?ってのがありました。バグなら報告したいところなんですが、いざしようと思ったらどういう手順を踏めば良いのかわからず。もしかしたらそういう仕様なのかもしれない、曖昧なものという事も…

CakePHPでbake projectする際、tmp/logsやlibsなど空ディレクトリにemptyを入れておく方法

./cake -app /path/to/app/to/put bake [project]新しくCakePHPアプリを作る際、appディレクトリをコピーせずに、bakeで作成しています。app_controller.php や app_model.php などを作成してくれますし、APP/config/core.php の Security.salt と Security.…

MAMPで開発中のCakePHPベースのアプリ。どこかでキャッシュされてる?

MAMP上で開発してるCakePHPベースのアプリで、リロードすると読み込みが早くなる場合がありました。CakePHPのキャッシュの仕組みをちゃんと把握してなかったので、デフォルトで何か動いてるのかとか、もしくはMySQL側の方かとちょっと調べてみました。特に最…

CakePHPのHtmlHelper->scriptBlock()やscriptStart()は$scripts_for_layoutで出力されない

CakePHP 1.2の事は分かりませんが、1.3系ではHtmlHelperでJavaScriptをViewテンプレートに書いていきます。scriptタグを書いても良いのかもしれませんが、HtmlHelperを使って書いたらスクリプトをバッファに貯めておいて にまとめて出力してくれます。まぁ折…

CakeDCのsearch pluginの記事が少ないので1個置いときますね。CakePHP Advent Calendar 2010 8日目

CakePHP Advent Calendar 2010 8日目 http://cakephp.jp/modules/newbb/viewtopic.php?viewmode=flat&topic_id=2510&forum=16CakePHP Advent Calendar 2010の順番が回ってきました。8日目のkanonjiです。最近立て込んでいたので、実はみんなの記事を今日読み…

CakePHPのコアライブラリ、Sanitize::clean()のodd_spacesオプションの謎

CakePHPのバリデーションは、基本的にデータベースへ格納する直前にするもので、コントローラーに処理が入るところでのチェックが気になっていました。 ブラウザから受け取った値をバイナリセーフじゃない関数で処理すれば、NULLバイトアタックを受けたりす…

Prefix routing毎にセッションCookieのセッション名を切り替える。CakePHP1.3

CakePHP 1.3.0から少し変わった Prefix Routing で、管理画面や携帯サイトなど、ディレクトリで分けた別サイトっぽく出来ます。 ただ、同じController/Modelクラスを使うし、config系も共有しています。 実態としては同じサイトの一部という感じです。 そこ…

現在開いてるページへのリンクを判別できるHtmlHelperを作る。CakePHP1.3

CakePHP の HtmlHelper は、名前の通り html を生成します。 Baker暦の浅い自分は、何で html を普通に書かずわざわざHelperを介するのか、よく分からなかったりします。 でも、組み込みだし、どうも CakePHP 関連の情報を調べてると、HtmlHelper は使うのが…

CakePHPのプラグイン、cakeplus pluginの機能と使い方

プラグインを拡張する方法(how to extend a plugin) - cakephperの日記(CakePHP, Laravel, PHP) の @cakephper さんの cakeplus plugin です。 CakePHPでの開発で良く使う機能をいくつかまとめたプラグインの様で、ちょっと具体的に何が出来るのか分からなか…

CakePHP1.3.xで複数のPrefix Routingを設定してる時のBakeの動き

CakePHP 1.3.0からPrefix Routingの設定方法が若干変わりました。 CakePHP 1.2系は使ったことが無いので良く知りませんが、1行で複数のPrefixを設定できるようになったようです。 さて、Bake で View や Controller を焼こうとすると「Would you like to cre…

CakePHP1.3.xのHtmlHelperでGoogle AJAX Libraries APIのjQueryを読み込む

CakePHP 1.3.0から、AjaxHelperとJavascriptHelperが非推奨になり、JsHelperとHtmlHelperを使うように変更になりました。 ライブラリの.jsファイルの読み込みは HtmlHelper->script() を使いますが、Google AJAX Libraries APIから読み込む方法がCookbookに…

CakePHPのFormHelperのGETメソッドとPOSTメソッドの違いではまった件

プルダウンやラジオボタン、チェックボックスと、テキスト入力を組み合わせた、ちょっと複雑な検索画面を作っている時にはまりました。 ほとんど、フォームの入力値をAND検索するだけだったのでpostConditions()を使って作ってました。 検索画面なのでGETメ…

CakePHPでRDB以外のデータソースを使う時のBakeのエラーと回避

CSVをデータソースとして扱えるようにする CsvSource というプラグインがあります。 コントローラーの $uses にCSVを使うモデルを設定したら、Bake で View を焼く際にエラーが出るようになってしまいました。 CsvSource とは http://github.com/cakephp/dat…

cakeコンソールのBakeを使ったアプリケーションのセットアップ

CakePHP 1.3.0 での Bake の動きを調べてみました。 Cookbook って cake コンソールや Bake について、あんまり書いてないんですよね。 Bakeは色々と機能があるようなので、まずは最初のアプリケーションのセットアップと、データベース設定について、 bake …

CakePHPのController->__mergeVars()でcomponentsがマージされてない?

CakePHP 1.3.0 を学習中に、もしかしたらバグかも?というのにはまったので、ブログに書いて誰かのアドバイスを期待しようという記事です。 バグっぽいなぁと思いつつも、CakePHPは最近はじめたばかりで、これがバグなのか、自分が何かを間違えてるのか*1ち…