Php Symfony FOSUserBundle密码重置-找不到该文件
我正在使用Php Symfony FOSUserBundle密码重置-找不到该文件,php,symfony,fosuserbundle,symfony-3.3,Php,Symfony,Fosuserbundle,Symfony 3.3,我正在使用FOSUserBundle 我定义了以下特征: trait标志 { /** *@Assert\Image() *@ORM\Column(type=“string”,nullable=true) */ 私人$logo; /** *@返回混合 */ 公共函数getLogo() { 返回$this->logo; } /** *@param混合$logo */ 公共功能setLogo($logo) { $this->logo=$logo; } } 然后我将其应用于我的用户类: 使用FOS\U
FOSUserBundle
我定义了以下特征:
trait标志
{
/**
*@Assert\Image()
*@ORM\Column(type=“string”,nullable=true)
*/
私人$logo;
/**
*@返回混合
*/
公共函数getLogo()
{
返回$this->logo;
}
/**
*@param混合$logo
*/
公共功能setLogo($logo)
{
$this->logo=$logo;
}
}
然后我将其应用于我的用户类:
使用FOS\UserBundle\Model\User作为基本用户;
使用条令\ORM\Mapping作为ORM;
/**
*@ORM\Entity()
*@ORM\Table(name=“fos\u user”)
*/
类用户扩展了BaseUser
{
使用标识;
...
这一切都非常有效,并为能够将图像关联到我的用户提供了基础
问题是,这会中断FOS密码重置-在我提交表单后,我会收到以下消息,显示为表单错误:
找不到该文件
Symfony Profiler进一步详细说明如下:
ConstraintViolation {#1368
root: Form {#879 …}
path: "data.logo"
value: "553d1f015637bf5d97b9eb66f71e6587.jpeg"
}
这是由于logo属性上的@Assert\Image()
造成的,仅当我尝试重置密码的帐户已关联图像时才会出现。如果记录没有图像,则不会导致任何问题
这就是我最终迷失的地方。我明白:
我对Symfony比较陌生,因此,如果这个问题有一个明显的答案,但我看不到,我深表歉意。为密码重置创建一个验证组 之后,重写ResettingFormType并定义要使用的验证组 这里的目标是图像的断言检查不应该在这个表单中进行,但是由于整个用户对象将作为数据注入表单本身,所以所有断言都将进行,直到表单被告知不这样做为止
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => array('my_resetting'),
));
}
覆盖FormType的示例如下:
# AppBundle\Form\Type\ProfileFormType.php
class ProfileFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
# example -> disable change of username in profile_edit
$builder
->add('username', TextType::class, array(
'disabled' => true,
'label' => 'form.username',
'translation_domain' => 'FOSUserBundle'
))
;
}
public function getParent()
{
return 'FOS\UserBundle\Form\Type\ProfileFormType';
}
public function getBlockPrefix()
{
return 'app_user_profile';
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'validation_groups' => array('my_resetting'),
));
}
}
在config.yml中
fos_user:
profile:
form:
type: AppBundle\Form\Type\ProfileFormType
当您提交表单时,它将调用
setLogo
,并将其设置为null
。然后验证程序将查找当然不存在的图像(因为它是null)
快速修复方法是将约束添加到表单类型而不是实体。在什么阶段出现此错误?加载重置表单时还是提交表单时?@KhorneHoly-在将表单作为表单错误提交后-我将更新我的问题以澄清这一点。