我使用Symfony 3.4.4,使用FOSUser捆绑包进行简单安装。我已经基于用户实体创建了简单的表单:
$editForm = $this->createForm('Company\AdminBundle\Form\UserEditType', $user);
$editForm->handleRequest($request);
表单只有两个输入:
$builder
->add('name', TextType::class, ['label' => 'name and surname'])
->add('department', TextType::class, ['label' => 'department']);
当我提交表单(我发送姓名,部门和令牌)时,$editForm->handleRequest($request)
我获得例外:
request.CRITICAL:未捕获的PHP异常Symfony \ Component \ Cache \ Exception \ InvalidArgumentException:" Cache key" myuser.email@address.com"包含保留字符{}()/ \ @:" at /Sites/project/vendor/symfony/symfony/src/Symfony/Component/Cache/CacheItem.php第162行{"例外":" [对象](Symfony \ Component \ Cache \ Exception \ InvalidArgumentException(代码:0):缓存密钥\" myuser.email@address.com \"包含保留字符{}()/ \ @:at / Sites / project / vendor / symfony / symfony / src / Symfony / Component / Cache / CacheItem.php:162)"} []
它只发生在prod env上,在dev上工作得很好。 我不知道,没有自定义缓存配置,没有额外的缓存包等。带有PHP 7.1的OSX localhost apache。
答案 0 :(得分:0)
你应该看一下:https://github.com/php-cache/issues/issues/49
使用0.4.3的缓存/缓存包。 0.4.4破了。您可以更改缓存包版本。
答案 1 :(得分:0)
所以问题出现在略有不同的地方。在我的User
实体中,我设置了email
属性:
/**
* @var string
*
* @Assert\Valid
*/
protected $email;
@Assert\Valid
出现了问题,只是不知道为什么(尽管事实上我不知道为什么只使用Valid
,而不是Email()
等,但是现在没关系)。
解决方案很简单,摆脱这个断言或者只用@Assert\Email()
替换它。
正如我所写,我不知道为什么会导致这样的错误。您可以在此处查看和阅读问题 - https://github.com/symfony/symfony/issues/26313