[英]custom validator in InputFilter in Zend Framework 2
我編寫了一個自定義類來驗證荷蘭的BSN(美國的SSN)。 該代碼可獨立運行。 但是,我無法使其用作擴展InputFilter的驗證器。 我確實在User模塊的'module.config.php'中將其包含為可調用的類。
該類的代碼如下
<?php
namespace User\Validator;
use Zend\Validator\AbstractValidator;
class CheckBSN extends AbstractValidator {
//put your code here
const INVALID = 'BSNInvalid';
protected $messageTemplates = array(
self::INVALID => "'%value%' is an invalid BSN",
);
public function isValid($value) {
if (!ctype_digit($value))
{
$this->error(self::INVALID);
return false;
}
if (strlen($value) !== 9) {
$this->error(self::INVALID);
return false;
}
$pos = 8;
$checksum = -1 * $value[$pos];
$weight = 2;
for ($pos = 7; $pos >= 0; $pos--) {
$checksum += $weight++ * $value[$pos];
}
if (($checksum % 11) !== 0) {
$this->error(self::INVALID);
return false;
}
return true;
}
}
我想將此添加到UserFilter類的以下代碼中
$this->add(array(
'name' => 'bsn',
'required' => true,
'filters' => array(
array('name' => 'StringTrim'),
array('name' => 'StripTags'),
),
'validators' => array(
array('name' => 'StringLength',
'options' => array(
'encoding' => 'UTF-8',
'min' => 9,
'max' => 9,
),
),
)
));
當我將類添加為第二個驗證器時,它將被忽略。 當我替換第一類時,應用程序因servicenotfoundexception崩潰。
歡迎任何幫助,我正在尋找解決方案的日子。 是的,我確實嘗試過本網站上的建議,但這些建議似乎都不適合我的情況
我認為您需要使用完全合格的驗證器類名稱。 試試這個代碼:
$this->add(array(
'name' => 'bsn',
'required' => true,
'filters' => array(
array('name' => 'StringTrim'),
array('name' => 'StripTags'),
),
'validators' => array(
array('name' => '\User\Validator\CheckBSN',
'options' => array(
),
),
)
));
我還建議您閱讀其中一本有關ZF2的初學者 。 例如,我寫的“使用Zend Framework 2”一書中有一章專門介紹使用過濾器/驗證器和編寫自己的過濾器/驗證器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.