2014-10-08 115 views
1

真棒Respect Validation library附帶了許多內置的驗證器,如string(),alpha()等等。我想自定義的驗證器添加到庫中,例如,我希望能夠做到這一點。如何添加自定義驗證器以尊重驗證庫

Validator::myCustomValidator()->assert($input); 

我才發現,原來是它不是很複雜,但我不得不看庫的源代碼找出,所以我在這裏發佈這個自我回答的問題,以備將來參考。

回答

2

定義的驗證類,並在正確的命名空間伴隨異常類,以及驗證庫它將自動使用它們來驗證你的數據,因爲這樣的:

myCustomValidator.php:

<?php 

namespace Respect\Validation\Rules; 

class myCustomValidator extends AbstractRule 
{ 
    public function validate($input) 
    { 
     return true; // Implement actual check here; eg: return is_string($input); 
    } 
} 

myCustomValidatorException.php:

<?php 

namespace Respect\Validation\Exceptions; 

class myCustomValidatorException extends ValidationException 
{ 
    public static $defaultTemplates = array(
     self::MODE_DEFAULT => array(
      self::STANDARD => '{{name}} must ... ', // eg: must be string 
     ), 
     self::MODE_NEGATIVE => array(
      self::STANDARD => '{{name}} must not ... ', // eg: must not be string 
     ) 
    ); 
} 

只要這些文件包含在您的項目中,現在就可以使用Validator::myCustomValidator()->assert($input);

這顯然依賴於命名約定,所以一定要使用類名來調用自定義驗證器,並且應該設置。