【问题标题】:Symfony2 include form on error page (404)Symfony2 在错误页面上包含表单(404)
【发布时间】:2014-02-01 11:18:43
【问题描述】:

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

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

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

用于开发以将布局更改为我想要的。这工作正常。但是,只要我使用

添加表单(例如我的搜索或联系表单)

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

或直接输入代码,它会显示ResourceNotFoundExceptionNotFoundHttpException,而不是404 页面。

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

【问题讨论】:

    标签: forms symfony error-handling http-status-code-404 symfony-2.4


    【解决方案1】:

    使用embedded controller 怎么样?

    这是取自 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() 方法,您可以在该方法中从数据存储中获取结果并将结果显示给最终用户。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-13
      • 1970-01-01
      • 2017-01-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多