【发布时间】:2016-06-02 13:52:09
【问题描述】:
我想在 TWIG 视图中访问我附加到表单的实体的值。
表单是这样创建的:
$form = $this->createForm(new SuperForm(), $entity);
在树枝视图中,如果我显示 {{ dump(form.vars.value) }} 我有这个:
Zone {#1000 ▼
#name: "First book zone"
-book: Book {#538 ▶}
-location: "inside"
-priority: 5
-live: true
-BooksGroups: PersistentCollection {#1003 ▶}
-hasGroups: true
#slug: "sdds"
#id: 2
#createdAt: DateTime {#999 ▶}
#updatedAt: null
#owner: null
#updateUser: null
}
编辑:
但是,当我尝试通过这种方法访问该值时,我不能:
{{ form.vars.value.name }}
Impossible to access an attribute ("name") on a null variable
奇怪的是,当我使用 de default 方法时,我没有问题,并且显示了真实值:
{{ form.vars.value.name|default('Default name') }}
Displayed: 'First book zone'
这可能是字符串和整数的解决方法,但我该如何处理集合和数组?
【问题讨论】:
-
是的,名称在区域内。我试过了,我得到了同样的结果:Impossible to access an attribute ("Zone") on a null variable with this
dump(form.vars.value.Zone) -
还是一样的结果。我已经读到它可能来自属性是私有的事实,但我仍然如何访问它们?
-
私有|受保护不是问题,因为您永远不会将您的属性设置为公开(或在某些特殊情况下)。例如:
class Zone { private $name; getName(){ return $this->name; } }另外,我尝试将其公开,但没有任何改变。 -
您已经有权访问控制器中的实体,对吧?如果是,只需将它沿数组中的树枝视图传递,您就可以访问所有变量。
-
它在一个集合中的自定义表单类型中,它也在一个集合中,所以它并不那么容易。但我终于使用了 form.value.name|default('qwe') 解决方法......但是如果有人知道为什么正常的方法不起作用但这个方法起作用,我会很高兴听到!