簡體   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