繁体   English   中英

如何在Symfony中使用错误模板创建作曲家捆绑包?

[英]How can I create a composer bundle with error templates in Symfony?

我们有一堆将在Symfony中创建的Web应用程序。 为了简化操作,我为模板创建了一个捆绑包。 因此,主文件(TemplateBundle.php)包含(删除了注释):

<?php
namespace company\TemplateBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class TemplateBundle extends Bundle
{
}

然后在Resources / views / template.html.twig中是主要的树枝模板,对标题,内容区域等使用代码块。

在应用程序中,我在base.html.twig(所有其他twig文件扩展)中所做的所有事情是:

{# app/Resources/views/base.html.twig #}

{% extends 'TemplateBundle::template.html.twig' %}

{% block title %}App Name{% endblock %}

{% block content %}
    <div class="container page-content">{% block body %}{% endblock %}</div>
{% endblock %}

{% block stylesheets %}
    <link rel="stylesheet" href="{{ asset('css/appspecific.css') }}">
{% endblock %}

在部署时,运行composer安装时,将安装此捆绑包,并且在更新模板时,所有应用程序都将更新到新版本并重新部署。 到现在为止还挺好。

我遇到问题的地方是当我想将错误页面添加到捆绑包中时。 因此,目前在应用程序中,它们位于/app/Resources/TwigBundle/views/Exception/errorxxx.html.twig中,例如error404.html.twig:

{% extends 'base.html.twig' %}

{% block body %}
    <h1>That Page Could Not Be Found</h1>
    <p>It seems that you are trying to access a page that doesn't exist. Please check your spelling and try again.</p>
{% endblock %}

这样,错误页面以标题等设置为基础扩展,然后使用主站点模板扩展模板。 因此,我不必将错误页面添加到每个项目(并在错误页面的内容更改时更新每个项目),而是将它们添加到捆绑包中。

是否有一种简便的方法(可以在模板包中创建,也可以创建另一个模板)以超越默认的细枝错误页面?

如果没有简便的方法,还有哪些其他选择?

所以看来答案是用我的捆绑包取代捆绑包。 为此,我所做的就是将TemplateBundle.php修改为

<?php
namespace company\TemplateBundle;
use Symfony\Component\HttpKernel\Bundle\Bundle;

class TemplateBundle extends Bundle
{
    public function getParent()
    {
        return 'TwigBundle';
    }
}

然后,我可以在需要时替换模板,控制器等,因此我只需将我的错误模板(例如error404.html.twig)放入Resources / views / Exception目录(与它们在/ vendor的TwigBundle捆绑包中的位置相同) / symfony / symfony / src / Symfony / Bundle / TwigBundle),由于它们扩展了base.html.twig,因此它们现在看起来像应用程序的其余部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM