プログラミングメモ

主にWeb(PHP, JavaScript, etc.)関連のプログラミングメモをしていきます。

2013-03-15から1日間の記事一覧

テキストボックスへの貼り付けを禁止するjQueryプラグイン

(function($) { $.fn.noPaste = function() { this.bind('paste contextmenu', function() { return false; }).bind('keydown', function(event) { if ((event.keyCode == 86 && event.ctrlKey) || (event.keyCode == 45 && event.shiftKey)) { return false…

多言語化時の検索結果を表示中の言語のノードのみにする

hook_query_alter()でがんばる。 hasTag('node_access') && $query->hasTag('pager')) { global $language; $tables = $query->getTables(); foreach ($tables as $table) { if ($table['table'] == 'node') { $query->condition('n.language…

hookの実行順を変更する

hook_module_implements_alter()を実装する。 下記はhook_cron()を最後に実行させる場合の例。

イベントハンドラを使う

下記はViewのbeforeRenderで何かしたい場合の例。 イベント発生前にハンドラを追加すればいいので、beforeRender()でなくても可。 getEventManager()->attach(array($this, 'beforeRenderView'), 'View.beforeRender', array()); } /** * @param CakeEvent $…

全角スペースもtrim()する

trim()ではできないので、正規表現で。 UTF-8の場合、uフラグをつけないと文字化けする。下記は先頭・末尾の全角半角スペースとタブを取り除く例。

render()後のHTMLを取得して変更する

Controllerのrender()をオーバーライドする。 全体のHTMLに対してやるならこれが一番かなと。下記は全角英数字を半角に一括変換する例。 public function render($view = null, $layout = null) { $response = parent::render($view, $layout); $content = $…

Eclipseのコード補完をより便利に

テンプレートファイルで $this-> から自前Helperのコード補完を使えるようにする。Eclipseプロジェクト配下の適当な場所に下記の内容でファイルを作成する。 クラス外での補完全部に反映されてしまうが、テンプレート以外で$this->を書くことは基本無いので…

DBのMaster-Slave対応

https://github.com/primeminister/cake-master-slave-setup こちらをCakePHP 2.xに対応させたものです。 ついでに色々いじったのでオリジナルとは使い方が違います。app/Model/Datasource/Database/MysqlMasterSlave.php

キャッシュをクリアする

foreach (Cache::configured() as $config) { Cache::clear(false, $config); } exit;

指定されたアソシエーション以外を削除するunbindModelExcept()

下記をapp/Model/AppModel.phpに追加。 public function unbindModelExcept($params, $reset = true) { $unbind = array(); $assocs = $this->associations(); foreach ($assocs as $assoc) { if (in_array($assoc, $params, true)) { continue; } foreach (…