【发布时间】:2025-12-11 19:25:02
【问题描述】:
我编写了一个自定义类来验证荷兰 BSN(美国的 SSN)。 该代码独立工作。 但是我不能让它作为扩展 InputFilter 的验证器工作。 我确实在我的用户模块的“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。
欢迎任何帮助,我正在寻找几天的解决方案。是的,我确实尝试了这个网站上的建议,但似乎都不适用于我的情况
【问题讨论】:
-
是的,我确实尝试过这个网站上的建议,但似乎没有一个适用于我的情况你能编辑列出你所说的内容以及它是如何不适用的吗?不申请?这将确保没有人浪费时间建议您已经尝试过的事情。
标签: php validation zend-framework2