如何从 Twig 中的 Symfony2 表单获取 Doctrine2 实体方法
我在 Twig 模板中,并且有一个代表 Doctrine2 实体表单的“form”变量。
该实体具有映射到表单中的属性,但该实体还有一些我想从我的 Twig 模板访问的方法。
我想做这样的事情:
{{ form.myMethod }}
或者也许这样的事情:
{{ form.getEntity.myMethod }}
但不幸的是它不起作用。
我怎样才能实现我所需要的?
I'm in a Twig template, and I have a "form" variable that represents a Doctrine2 Entity Form.
This Entity has properties that are mapped into the form, but the Entity has also some methods that I would like to access from my Twig template.
I would love to do something like this:
{{ form.myMethod }}
or maybe something like this:
{{ form.getEntity.myMethod }}
but unfortunately it doesn't work.
How could I achieve what I need?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
要从树枝模板中的 FormView 访问您的实体,您可以使用以下代码
,其中 form 是您的 FormView 对象。这将返回您的实体,您可以从那里调用它的任何方法。如果您在表单中嵌入了一组实体或单个实体,您可以以相同的方式访问它
或
To access your entity from your FormView in a twig template you can use the following code
Where form is your FormView object. This will return your entity and from there you can call any methods on it. If you embed a collection of entities or a single entity in your form you can access it the same way
or
获取底层实体的更方便的语法是
:
然后您可以像这样调用任何实体方法:
另请参阅 Symfony 文档中的表单章节。
An even more convenient syntax to get the underlying entity instead of:
is this:
Then you can call any entity method like this:
See also the Form chapter in the Symfony documentation.
只是为了更新主题:
自 symfony 2.1 起已弃用。从 Symfony\Component\Form\FormView 复制:
所以,我想
应该是要走的路。这对我来说很有效。
...这就是我的第一篇文章。希望有帮助!
Just in order to update the subject:
is deprecated since symfony 2.1. Copy from Symfony\Component\Form\FormView :
so, I guess
should be the way to go. It has worked form me.
... and there it goes my first post here. hope it helps!
花了几个小时试图弄清楚发生了什么以及为什么
是 NULL。
如果您有 form.element (不是表单对象本身)对象,例如,如果您要覆盖已传递 form.row 对象的 form_row 模板,您可以像这样获取实体:
希望对某人有帮助!
编辑:一年等以后 - 另一个有用的提示:
Lost few hours trying to figure out what's going on and why
is NULL.
If you have form.element (not the form object itself) object, for example if you are overriding a form_row template that has passed the form.row object, you can get the Entity like this:
hope that helps someone!
EDIT: Year and so later - another useful tip:
对象方法应该在树枝中工作,我知道我在一些项目中使用了它们。
尝试使用
()
像
{{ form.myMethod() }}
object methods should work in twig, I know I used them in some project.
try to use
()
like
{{ form.myMethod() }}
似乎在某些时候值实际上是null。所以可以
在SF v3.0.6中测试使用。
It seems that at some point the value is actually null. So you can use
tested in SF v3.0.6.
上述内容在版本 2.6.7 中都不适合我。我使用了自定义表单小部件 来实现这一点:
None of the above worked for me in version 2.6.7. I used customised form widgets to achieve this:
使用
{{ form.getData.myMethod }}
。use
{{ form.getData.myMethod }}
.