I love iPhone, Android, Cocos2d-x
[CakePHP] Sluggable Behavior で日本語を扱う方法
beforeFind メソッドを追加するコードが抜けていたので追記しました。(2009.6.2)
前回書いた[CakePHP] Sluggable Behavior の使い方の最後で少し書いた、スラグに日本語を使う方法です。
日本語を使うには slug.php を少々カスタマイズする必要があります。
beforeFind メソッドを追加
function beforeFind(&$Model, $queryData){ $slug_column = $Model->alias.".".$this->__settings[$Model->alias]['slug']; if (isset($queryData["conditions"][$slug_column])) { $queryData["conditions"][$slug_column] = urlencode($queryData["conditions"][$slug_column]); } return $queryData; }
slug.php 108行目付近
if (!empty($label)) { // Get the slug $slug = $this->__slug($label, $this->__settings[$Model->alias]);
の部分を下記のように urlencode を追加
if (!empty($label)) { // Get the slug $label = urlencode($label); $slug = $this->__slug($label, $this->__settings[$Model->alias]);
slug.php 384行目付近
$string = preg_replace('/[^a-z0-9_]/i', $settings['separator'], $string);
の preg_replace のパターンに “%” を追加
$string = preg_replace('/[^a-z0-9%_]/i', $settings['separator'], $string);
これでスラグに日本語が入る場合も使えるようになります。
関連する投稿
One comment
コメントをどうぞ
Additional comments powered by BackType
2compulsory…
…