所以我一直在使用Valitron图书馆来验证发布的表单,并且遇到了一些问题。
构造函数接受要验证的数据,当您将库作为与Pimple或其他容器的依赖项注入时,这会导致问题。 如果要验证多个内容,它也会导致问题,因为每次要使用它时基本上都必须实例化库。
有什么方法吗?
最终我希望能够将库定义为服务并将其注入Pimple,如下所示:
$container['Valitron'] = function(){
return new \Valitron\Validator();
};
任何需要验证某些东西的控制器/类都会在它们的构造函数中初始化它,如下所示:
public function __construct($valitron)
{
$this->valitron = $valitron;
}
任何时候我需要验证一些我可以说的东西:
// First use
$this->valitron->setData($_POST);
$this->valitron->rule('required', 'name')->message('Im required')->label('Name');
$this->valitron->validate();
// Second use
$this->valitron->setData($_GET);
$this->valitron->rule('required', 'test')->message('Im also required')->label('Test');
$this->valitron->validate();
但似乎没有setData函数,或者在使用之间重置库的任何方法。
问题: 如何将Valitron与Pimple一起使用并重复使用它来一次验证多个事物?
请注意:必须注射。它也不需要在每次使用之前初始化。请不要告诉我,我必须扩展库或破解它才能使其正常工作!
答案 0 :(得分:2)
在我搜索的时候遇到了你的问题,我在Valitron的回购中遇到了以下Github问题,请参阅https://github.com/vlucas/valitron/issues/108
vlucas写道:Valitron目前被设计为一次性使用的实例,因此它可能导致奇怪的事情,如自定义标签和错误消息没有在验证之间重置(因为它从来没有意味着这样使用)。 / p>