Php Symfony未加载正确的验证服务
我使用的是Symfony framework 3.4。目前我正在开发一种验证方法,但突然Symfony验证停止工作,然后我的所有验证都停止工作,然后我运行:Php Symfony未加载正确的验证服务,php,symfony,validation,containers,Php,Symfony,Validation,Containers,我使用的是Symfony framework 3.4。目前我正在开发一种验证方法,但突然Symfony验证停止工作,然后我的所有验证都停止工作,然后我运行: php bin/console debug:container 我得到了验证程序服务的以下输出: Service ID ClassName validator alias for "liip_funct
php bin/console debug:container
我得到了验证程序服务的以下输出:
Service ID ClassName
validator alias for "liip_functional_test.validator"
我有以下问题:
这是验证程序服务的正确类名吗?
我会做错什么
我的全部代码如下:
namespace AppBundle\DataTransfer;
use Symfony\Component\Validator\Constraints as Assert;
class ProductFromApi
{
/**
* @Assert\IsTrue(message="Testing the validator")
*/
public function isTestCorrect() : Bool
{
return false;
}
}
它看起来确实像服务“
validator
”是默认symfony验证器之外的别名,不是吗?(特别是“liip\u功能测试验证程序”
”)
当我在Symfony项目上运行php-bin/console-debug:container-validator时,我知道该项目没有上面提供的liip包,下面是它为我返回的结果:
Information for Service "debug.validator"
=========================================
---------------- ----------------------------------------------------------
Option Value
---------------- ----------------------------------------------------------
Service ID debug.validator
Class Symfony\Component\Validator\Validator\TraceableValidator
Tags kernel.reset (method: reset)
Public no
Synthetic no
Lazy no
Shared yes
Abstract no
Autowired no
Autoconfigured no
---------------- ----------------------------------------------------------
如果要按名称从DI容器中获取服务,可能需要将其称为“debug.validator
”
也就是说,您可能不应该以这种方式调用验证器
您的config.yml
中有以下内容,是吗
framework:
validation: { enable_annotations: true }
是的,我的config.yml上有这个YAML。我从AppKernel中删除了liip_functional_test.validator捆绑包,然后我得到了与您相同的输出,但验证器不工作。我对这种覆盖非常困惑,但在快速搜索后,我发现了类似的问题:是,但问题是,即使我解决了最重要的问题,验证器仍然不能工作。当我运行:php-bin/console-debug:container-validator时,我得到了与答案相同的结果:Cameron-HurdI没有直接使用验证程序服务,我使用的是表单->isValid(),这个表单应该使用验证程序服务。你能分享更多的配置吗?可能是service.yml
,以及您认为可能相关的config.yml
摘录?如果控制器中的方法有任何不寻常的地方,那么也可以看到这一点!嗨,我停止了docker,再次编写了docker,现在它开始工作了,这很奇怪,因为我以前做过:php bin/console cache:clear。谢谢大家。