使用带有Symfony2 Twig模板的Kendo UI PHP包装器

时间:2013-12-17 02:38:58

标签: symfony kendo-ui twig php-5.4

我使用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中那样?

0 个答案:

没有答案