douzhixun8393 2014-03-11 23:19
浏览 43
已采纳

Symfony实体注释:约束vs字段类型

The Symfony docs list a number of field types that can be used when rendering forms. However, the docs also specify constrains that can be used for form validation. Can these two concepts be combined so that my Entity annotations will cause Symfony to use the correct form field type instead of just guessing?

For example, I have a User entity with a password field, which has the following annotations:

/**
 * @ORM\Column(type="string", length=64)
 * @Assert\Type("password")
 */
private $password;

I then use the FormBuilderInterface to render the field:

$builder
  ->add('password')

As you can see, I've not passed any additional options. Symfony renders this as a textfield, and seems to flatout ignore the password annotation.

How can I get Symfony to display this as a password field? Do I have to pass additional options using the FormBuilderInterface like this?

$builder
  ->add('password', 'password')

Is there any other way of doing this? Using annotations in my User entity seems like the perfect place to hint at the form field type, but Symfony just doesn't seem to take them into account when rendering the field.

  • 写回答

1条回答 默认 最新

  • douyinglan2599 2014-03-12 00:52
    关注

    Entities assert annotations get parsed when you call isValid() not when you build their forms, forms will only take in ORM annotations (your string fieldtype). Adding optional fieldtype to your form builder is probably the best way to go about it, I haven't found a better one.

    And as @Alan pointed out defining a view component (html input) in an entity file wouldn't make much sense in any case. The best place for it is an entity's type file, especially if you have several fields it makes your code that much more maintanable as opposed to dumping everything in the controller.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 HFSS 中的 H 场图与 MATLAB 中绘制的 B1 场 部分对应不上
  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?