使用嵌入式控制器怎么样?
这是取自 Symfony 文档页面的简短示例。
你有一个控制器,它返回并呈现一些输出:
// src/Acme/ArticleBundle/Controller/ArticleController.php
class ArticleController extends Controller
{
public function recentArticlesAction($max = 3)
{
// make a database call or other logic
// to get the "$max" most recent articles
$articles = ...;
return $this->render(
'AcmeArticleBundle:Article:recentList.html.twig',
array('articles' => $articles)
);
}
}
在此示例中,它呈现一个视图:
{# src/Acme/ArticleBundle/Resources/views/Article/recentList.html.twig #}
{% for article in articles %}
<a href="/article/{{ article.slug }}">
{{ article.title }}
</a>
{% endfor %}
并在您想嵌入控制器操作的视图中:
{# app/Resources/views/base.html.twig #}
{# ... #}
<div id="sidebar">
{{ render(controller('AcmeArticleBundle:Article:recentArticles', {
'max': 3
})) }}
</div>
文档页面还说,当您需要模板中无权访问的数据时,您应该使用嵌入式控制器。从我的角度来看,它非常适合创建小部件、一些统计数据等。
希望这可以帮助。
编辑
为了使这个答案更准确地解决您的问题,这是我将使用的解决方案:
- 你需要一个控制器,让我们称之为
SearchController
- 在控制器的
renderForm()
方法中,您需要创建一个表单并将其传递给视图
- 表单的 action 属性应该指向
resultAction()
可以从数据存储中获取结果并将结果显示给最终用户的方法。