因此,我一直在使用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函数,也没有任何方法在使用之间重置库。
问:我如何在Pimple中使用Valitron,并将其用于一次验证多个事物?
请注意:必须注射。它也不应该在每次使用之前被初始化。请不要告诉我,我必须扩展图书馆或黑它使它正常工作!
发布于 2016-03-16 08:19:15
当我在寻找和你一样的问题时遇到了你的问题,我在Valitron的回购中也遇到了下面的Github问题,请参阅https://github.com/vlucas/valitron/issues/108
vlucas写道: Valitron目前被设计成一个单一使用的实例,因此它可能导致诸如自定义标签和错误消息等奇怪的事情,而不会在验证之间重新设置(因为它从未打算以这种方式使用)。
https://stackoverflow.com/questions/32580879
复制相似问题