繁体   English   中英

添加不在实体中的自定义表单字段-Sonata管理员

[英]Add custom form field that is not in entity - Sonata admin

我在项目中使用Sonata Admin。 我需要渲染一个不属于实体的字段。

考虑使用字段usernamepassword的实体User 但是我还需要一个额外的字段作为表单的爱好 ,但在User实体中则不需要。

    $formMapper
       ->add('username')
       ->add('password')
       ->add('hobby');

但是我遇到了symfony错误,

属性“ hobby”或方法“ getHobby()”,“ hobby()”,“ isHobby()”,“ hasHobby()”和“ __get()”都不存在,并且在类“ App \\实体\\用户”。

我该如何解决? 提前致谢!!

如果我没有记错的话,Symfony2的答案应该仍然适用: 如何在Symfony2中的实体表单中添加其他非实体字段

在symfony 2.1+中,使用maped:

 $form = $this->createFormBuilder($promo) ->add('code', 'text') ->add('image', 'file', array( "mapped" => false, )) ->getForm(); 

https://symfony.com/doc/current/reference/forms/types/entity.html#mapped

类型boolean 默认值true

如果希望在读取或写入对象时忽略该字段,可以将mapped选项设置为false

因此,对于您的情况,应为:

$formMapper
    ->add('username')
    ->add('password')
    ->add('hobby', null, [
        'mapped' => false
    ]);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM