我想从数据库中获取数据并将其显示在模板中.我通常会在控制器内执行此操作并将该数据作为变量传递,但是我想使用相同的方法获取不同数量的数据,具体取决于调用该方法的模板.我看过嵌入式控制器,但我只想要数据,而不是渲染HTML http://symfony.com/doc/2.0/book/templating.html#embedding-controllers
例
{# views/template1.html.twig #}
{% for item in FetchDBdata('someParam', 20) %}
{{ item.name }}
{{ item.title }}
{% endfor %}
{# views/template2.html.twig #}
{% for item in FetchDBdata('someOtherParam', 40) %}
{{ item.name }}
{{ item.title }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
FetchDBdata('someParam', 40)应用程序中的服务类位于何处
要添加到我上面的评论中:
您有一个控制器,其中包含一个获取数据的操作:
ACME\SomeBundle \控制器\ DataController.php
/**
* @Template
*/
public function fetchDataAction($someParam, $quantity) {
$data = doSomethingWithDatabase();
return array('data' => $data);
}
Run Code Online (Sandbox Code Playgroud)
ACME\SomeBundle \资源\图\ DATA\fetchData.html.twig
{% for item in data %}
{{ item.name }}
{{ item.title }}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
然后在你的template1和template2你可以硬编码您的值,如果适合,或使用分别传递给这些模板的值.
{% render 'AcmeSomeBundle:Data:fetchData' with {'someParam': 'something', 'quantity': 20} %}
Run Code Online (Sandbox Code Playgroud)