2011-02-03 8 views
0

URLの前後にある空白文字の許容度を高めるために、標準のURL検証ルールをオーバーライドしたいと思います。基本的には、標準URL検証ハンドラに渡す前にurlでtrim()関数を使用してください。URLの末尾にある空白を許容するためのURL検証ルールを無効にする

私はそのルールを上書きする必要があると知っていますが、私はどこで、どうすればいいのか正確には分かりません。

(プラス、CakePHPのAPIと書籍のドキュメントは現在オフラインですアップグレード、私が知っている...。)

答えて

1

なぜあなたはそれをしたいですか? 投稿されたすべてのデータが常に切り詰められていることを確認してください。とにかく、よりクリーンでより安全なのが です。

私はのbeforeFilterであることをやってコンポーネントを持っている:

/** DATA PREPARATION **/ 
if (!empty($controller->data) && !Configure::read('DataPreparation.notrim')) { 
    $controller->data = $this->trimDeep($controller->data); 
} 

trimDeep方法:

/** 
* @static 
*/ 
function trimDeep($value) { 
    $value = is_array($value) ? array_map(array(&$this, 'trimDeep'), $value) : trim($value); 
    return $value; 
} 
+0

ちょうどあなたの解決策を正しく理解していることを確認するために、これらは両方ともapp_controller.phpファイルに入っていますよね?次に、 "$ controller-> data"を "$ this-> data"に変更して動作させる必要がありました。あなたは "$ controller"を使って別の何かを意味しましたか、これはちょうど例として使用したメタ変数ですか? –

3

あなたのモデルクラス、あなたの行動のクラスで、またはのAppModelクラスにカスタム検証ルールを追加することができます。

http://book.cakephp.org/view/150/Custom-Validation-Rules#Adding-your-own-Validation-Methods-152

既存のメソッドをオーバーライドしたいので、ちょうどそれをオリジナルと同じ名前とシグネチャを与えます。このようなものは、このトリックを行うかもしれません:

function url($check, $strict = false) { 
    return Validation::url(trim($check), $strict); 
} 
+0

+1をクリーンケーキコード – dogmatic69

+0

のためにこれは確かに最も簡単でまっすぐ進む溶液でした。しかし、私は本当にそれがすべての着信フィールドのためにどこでもそれを修正するので、以下のマークのソリューションが本当に好きです。それは、私はさらに好きです。 –

+0

私はマークのソリューションが手元にある大きな問題に取り組んでいることを完全に理解することができます。 :) –

関連する問題