2

我创建了一个自定义错误模板

app/Resources/TwigBundle/views/Exception/error404.html.twig

app/Resources/TwigBundle/views/Exception/exception_full.html.twig

用于开发以将布局更改为我想要的。这工作正常。但是,只要我添加一个表格(例如我的搜索或联系表格),使用

{{ include ('MyCoreBundle:Default/forms:myCustomForm.html.twig' ) }}

或者直接输入代码它显示aResourceNotFoundException和aNotFoundHttpException而不是404页面。

有没有办法在错误模板上显示表单?

4

1 回答 1

5

使用嵌入式控制器怎么样?

这是取自 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>

文档页面还说,当您需要模板中无权访问的数据时,您应该使用嵌入式控制器。从我的角度来看,它非常适合创建小部件、一些统计数据等。

希望这可以帮助。

编辑

为了使这个答案更准确地解决您的问题,这是我将使用的解决方案:

  1. 你需要一个控制器,让我们称之为SearchController
  2. 在控制器的renderForm()方法中,您需要创建一个表单并将其传递给视图
  3. 表单的 action 属性应该指向resultAction()可以从数据存储中获取结果并将结果显示给最终用户的方法。
于 2014-02-01T13:06:07.983 回答