首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何向Valitron注入Pimple和重用

如何向Valitron注入Pimple和重用
EN

Stack Overflow用户
提问于 2015-09-15 08:07:49
回答 1查看 521关注 0票数 0

因此,我一直在使用Valitron库来验证发布的表单,并且遇到了一些问题。

构造函数接受要验证的数据,这会在将库作为依赖项注入Pimple或其他容器时引发问题。如果您想要验证多个东西,它也会导致问题,因为您每次想要使用它时,基本上都必须实例化库。

有办法绕过这件事吗?

最终,我希望能够将库定义为服务,并将其注入Pimple,如下所示:

代码语言:javascript
复制
$container['Valitron'] = function(){
    return new \Valitron\Validator();
};

任何需要验证某些内容的控制器/类都会在它们的构造函数中初始化它,如下所示:

代码语言:javascript
复制
public function __construct($valitron)
{
    $this->valitron = $valitron;
}

每当我需要验证某件事时,我都可以这样说:

代码语言:javascript
复制
// 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,并将其用于一次验证多个事物?

请注意:必须注射。它也不应该在每次使用之前被初始化。请不要告诉我,我必须扩展图书馆或黑它使它正常工作!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-16 08:19:15

当我在寻找和你一样的问题时遇到了你的问题,我在Valitron的回购中也遇到了下面的Github问题,请参阅https://github.com/vlucas/valitron/issues/108

vlucas写道: Valitron目前被设计成一个单一使用的实例,因此它可能导致诸如自定义标签和错误消息等奇怪的事情,而不会在验证之间重新设置(因为它从未打算以这种方式使用)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32580879

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档