我使用Kendo UI作为Symfony2.3.4应用程序的前端库,并尝试建立使用Controllers和Twig模板引擎的最佳实践。我的问题特定于Kendo PHP包装器库,它允许轻松实例化Kendo对象。
问题是将这些对象传递给twig模板。例如:
// ItemController.php
public function addAction(){
$options = ['option1', 'option2', 'option3']
$dropdown = new \\Kendo\UI\DropDownList($options);
$select = $dropdown->render();
return $this->render('TestBundle:Titles:add.html.twig',
['options' = $options, 'dropdown' => $dropdown, 'select' => $select];
}
使用此控制器,我可以将Kendo对象($ dropdown)传递到模板中,但实际呈现的下拉列表($ select)会将数组抛出到字符串错误。现在我仍然可以使用$ options数组在模板中渲染对象:
// add.html.twig
<h1>Add Item</h1>
<!-- This renders the Kendo object -->
{{ dump(dropdown) }} <!-- object(Kendo\UI\DropDownList) (5) { etc -->
<!-- This throws an error -->
{{ dump(select) }}
<input id="dropdownlist" />
<script>
// this renders the dropdown
$("#dropdownlist").kendoDropDownList({
dataSource: {
data: [
{% for option in options %}
"{{ option }}",
{% endfor %}
]
}
});
</script>
似乎没有一种将html的字符串片段传递到Symfony2 / Twig系统中的模板的有效方法。我仍然可以在模板中渲染下拉列表(通过使用$ options数组)但是那么使用PHP Kendo对象有什么用呢?
另外,我说每个项目都有一个所有者,我想在ItemController的addAction中创建一个所有者选项的下拉列表?我可以在OwnerController中有一个selectAction,它返回所有者下拉列表或所有者数组的html吗?
这种类型的布局似乎是由Symfony 1的插槽处理的。* ...但是不清楚如何使用Symfony2和Twig。
在Symfony中处理formbuilding的“最佳实践”方式是什么?特别是当您通过一种形式从多个实体(物品和所有者)打电话时?
和/或是否有一种方法可以在标准Symfony2控制器中为JS对象正确使用PHP包装器,如Kendo UI中那样?