0

我正在使用 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:“缓存键“myuser.email@address.com”包含保留字符 {}()/\@:" at /Sites/project/vendor/symfony /symfony/src/Symfony/Component/Cache/CacheItem.php line 162 {"exception":"[object] (Symfony\Component\Cache\Exception\InvalidArgumentException(code: 0): Cache key \"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。

4

2 回答 2

0

你应该看这里:https ://github.com/php-cache/issues/issues/49

适用于 0.4.3 的缓存/缓存包。0.4.4 坏了。您可以更改缓存捆绑版本。

于 2018-02-07T13:17:46.253 回答
0

所以问题出在稍微不同的地方。在我的User实体中,我的email属性设置如下:

/**
 * @var string
 * 
 * @Assert\Valid
 */
protected $email;

并且有一个问题@Assert\Valid,只是不知道为什么(尽管我不知道为什么只是Valid使用,而不是Email()等等,但现在没关系)。解决方案很简单,去掉这个断言或者用@Assert\Email().

正如我所写,我不知道为什么会导致这样的错误。您可以在此处查看和阅读问题 - https://github.com/symfony/symfony/issues/26313

于 2018-03-02T15:58:54.870 回答