{"id":1077,"date":"2025-06-12T12:14:42","date_gmt":"2025-06-12T04:14:42","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1077.html"},"modified":"2025-06-12T12:14:42","modified_gmt":"2025-06-12T04:14:42","slug":"symfony%ef%bc%9a%e5%b0%86twig%e6%a8%a1%e6%9d%bf%e5%88%86%e8%a7%a3%e4%b8%ba%e5%8f%af%e9%87%8d%e7%94%a8%e5%9d%97%ef%bc%88%e5%90%ab%e7%a4%ba%e4%be%8b%ef%bc%89","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1077.html","title":{"rendered":"Symfony\uff1a\u5c06Twig\u6a21\u677f\u5206\u89e3\u4e3a\u53ef\u91cd\u7528\u5757\uff08\u542b\u793a\u4f8b\uff09"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#26631;&#39064;&#65306;&#20351;&#29992;Symfony&#30340;Twig&#27169;&#26495;&#20998;&#35299;&#20026;&#21487;&#37325;&#29992;&#22359;<\/p>\n<p>&#22312;Web&#24320;&#21457;&#20013;&#65292;&#33391;&#22909;&#30340;&#20195;&#30721;&#32452;&#32455;&#21644;&#27169;&#22359;&#21270;&#26159;&#25552;&#39640;&#21487;&#32500;&#25252;&#24615;&#21644;&#25928;&#29575;&#30340;&#20851;&#38190;&#12290;Twig&#26159;&#19968;&#31181;&#27969;&#34892;&#30340;PHP&#27169;&#26495;&#24341;&#25806;&#65292;&#21487;&#20197;&#29992;&#20110;&#29983;&#25104;HTML&#12289;XML&#25110;&#20854;&#20182;&#26684;&#24335;&#30340;&#25991;&#26723;&#12290;&#20026;&#20102;&#20351;&#20195;&#30721;&#26356;&#21152;&#27169;&#22359;&#21270;&#21644;&#26131;&#20110;&#37325;&#29992;&#65292;&#25105;&#20204;&#21487;&#20197;&#23558;Twig&#27169;&#26495;&#20998;&#35299;&#25104;&#21487;&#37325;&#29992;&#30340;&#22359;&#12290;<\/p>\n<p>&#20197;&#19979;&#26159;&#22914;&#20309;&#20351;&#29992;Symfony&#30340;Twig&#27169;&#26495;&#20998;&#35299;&#20026;&#21487;&#37325;&#29992;&#22359;&#30340;&#31034;&#20363;&#65306;<\/p>\n<h3>1. &#23450;&#20041;&#21487;&#37325;&#29992;&#22359;<\/h3>\n<p>&#39318;&#20808;&#65292;&#25105;&#20204;&#38656;&#35201;&#23450;&#20041;&#19968;&#20123;&#21487;&#37325;&#29992;&#30340;Twig&#22359;&#12290;&#36825;&#20123;&#22359;&#21487;&#20197;&#22312;&#19981;&#21516;&#30340;&#27169;&#26495;&#20013;&#34987;&#35843;&#29992;&#12290;&#20551;&#35774;&#25105;&#20204;&#26377;&#20004;&#20010;&#22359;&#65306;<code>header.html.twig<\/code> &#21644; <code>footer.html.twig<\/code>&#12290;<\/p>\n<h4>header.html.twig<\/h4>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;{{ title }}&lt;\/title&gt;\n    {% block stylesheets %}{% endblock %}\n&lt;\/head&gt;\n&lt;body&gt;\n    {% block body %}\n        &lt;!-- &#20027;&#20307;&#20869;&#23481; --&gt;\n    {% endblock %}\n    {% block scripts %}{% endblock %}\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h4>footer.html.twig<\/h4>\n<pre><code class=\"language-twig\">{% block stylesheets %}\n    &lt;!-- &#24341;&#20837;CSS&#25991;&#20214; --&gt;\n    &lt;link rel=\"stylesheet\" href=\"{{ asset('css\/style.css') }}\"&gt;\n{% endblock %}\n{% block scripts %}\n    &lt;!-- &#24341;&#20837;JavaScript&#25991;&#20214; --&gt;\n    &lt;script src=\"{{ asset('js\/script.js') }}\"&gt;&lt;\/script&gt;\n{% endblock %}<\/code><\/pre>\n<h3>2. &#22312;&#20027;&#27169;&#26495;&#20013;&#35843;&#29992;&#22359;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#22312;&#20027;&#27169;&#26495;&#20013;&#35843;&#29992;&#36825;&#20123;&#21487;&#37325;&#29992;&#22359;&#12290;&#20363;&#22914;&#65292;<code>index.html.twig<\/code> &#21487;&#20197;&#36825;&#26679;&#20889;&#65306;<\/p>\n<pre><code class=\"language-twig\">{% extends 'base.html.twig' %}\n\n{% block title %}&#39318;&#39029;{% endblock %}\n\n{% block body %}\n    {{ include('partials\/header.html.twig') }}\n    &lt;h1&gt;Welcome to our website&lt;\/h1&gt;\n    {{ include('partials\/footer.html.twig') }}\n{% endblock %}<\/code><\/pre>\n<h3>3. &#20351;&#29992;&#26465;&#20214;&#21644;&#24490;&#29615;<\/h3>\n<p>&#38500;&#20102;&#22522;&#26412;&#30340;&#22359;&#35843;&#29992;&#65292;&#36824;&#21487;&#20197;&#22312;&#22359;&#20013;&#20351;&#29992;&#26465;&#20214;&#21644;&#24490;&#29615;&#26469;&#21160;&#24577;&#29983;&#25104;&#20869;&#23481;&#12290;&#20363;&#22914;&#65306;<\/p>\n<h4>header.html.twig<\/h4>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;{{ title }}&lt;\/title&gt;\n    {% if is_granted('ROLE_ADMIN') %}\n        &lt;style&gt;\n            .admin-only {\n                display: block;\n            }\n        &lt;\/style&gt;\n    {% endif %}\n    {% block stylesheets %}{% endblock %}\n&lt;\/head&gt;\n&lt;body&gt;\n    {% block body %}\n        {{ include('partials\/header.html.twig') }}\n        &lt;h1&gt;Welcome to our website&lt;\/h1&gt;\n        {% if is_granted('ROLE_ADMIN') %}\n            &lt;div class=\"admin-only\"&gt;&#27426;&#36814;&#35775;&#38382;&#31649;&#29702;&#21592;&#39029;&#38754;&#65281;&lt;\/div&gt;\n        {% else %}\n            &lt;div&gt;&#27426;&#36814;&#35775;&#38382;&#26222;&#36890;&#29992;&#25143;&#39029;&#38754;&#12290;&lt;\/div&gt;\n        {% endif %}\n        {{ include('partials\/footer.html.twig') }}\n    {% endblock %}\n    {% block scripts %}{% endblock %}\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#20320;&#21487;&#20197;&#23558; Twig&#27169;&#26495;&#20998;&#35299;&#25104;&#21487;&#37325;&#29992;&#30340;&#22359;&#65292;&#24182;&#22312;&#19981;&#21516;&#27169;&#26495;&#20013;&#28789;&#27963;&#22320;&#35843;&#29992;&#23427;&#20204;&#12290;&#36825;&#19981;&#20165;&#25552;&#39640;&#20102;&#20195;&#30721;&#30340;&#21487;&#32500;&#25252;&#24615;&#65292;&#36824;&#20351;&#24471;&#27169;&#26495;&#26356;&#21152;&#27169;&#22359;&#21270;&#21644;&#26131;&#20110;&#25193;&#23637;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--2\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/zp-400x300.jpg\" alt=\"&#40657;&#26495;Bug&#35762;&#24072;\" class=\"wp-image-1849\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#40657;&#26495;Bug&#35762;&#24072;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<body><h2>&#27010;&#35272;<\/h2><p>&#22312;&#20351;&#29992;Symfony&#30340;&#40664;&#35748;&#27169;&#26495;&#24341;&#25806;Twig&#26500;&#24314;Web&#24212;&#29992;&#26102;&#65292;&#37319;&#29992;&#27169;&#22359;&#21270;&#30340;&#26041;&#27861;&#26469;&#22788;&#29702;&#27169;&#26495;&#33267;&#20851;&#37325;&#35201;&#12290;&#36825;&#19981;&#20165;&#20351;&#27169;&#26495;&#20445;&#25345;&#25972;&#27905;&#21644;&#26131;&#20110;&#38405;&#35835;&#65292;&#36824;&#33021;&#20419;&#36827;&#22312;&#25972;&#20010;&#24212;&#29992;&#31243;&#24207;&#20013;&#35270;&#22270;&#30340;&#21487;&#37325;&#29992;&#24615;&#21644;&#32500;&#25252;&#24615;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#35752;&#22914;&#20309;&#22312;Symfony&#20013;&#20998;&#31163;Twig&#27169;&#26495;&#20026;&#21487;&#37325;&#29992;&#22359;&#65292;&#36890;&#36807;&#31034;&#20363;&#26469;&#35828;&#26126;&#36825;&#20123;&#23454;&#36341;&#12290;<\/p><h3>&#27426;&#36814;&#20351;&#29992;Twig&#65281;&#36825;&#26159;&#19968;&#20010;&#27969;&#34892;&#30340;PHP&#27169;&#26495;&#24341;&#25806;&#65292;&#29992;&#20110;&#29983;&#25104;HTML&#21644;&#31867;&#20284;&#30340;&#20869;&#23481;&#12290;&#23427;&#20801;&#35768;&#24744;&#36731;&#26494;&#22320;&#21019;&#24314;&#21160;&#24577;&#21644;&#21487;&#25193;&#23637;&#30340;Web&#24212;&#29992;&#12290;Twig&#22522;&#20110;Silex&#26694;&#26550;&#65292;&#25552;&#20379;&#20102;&#19968;&#20010;&#31616;&#27905;&#19988;&#21151;&#33021;&#24378;&#22823;&#30340;API&#26469;&#22788;&#29702;&#27169;&#26495;&#12290;&#35201;&#24320;&#22987;&#20351;&#29992;Twig&#65292;&#35831;&#30830;&#20445;&#24744;&#30340;&#26381;&#21153;&#22120;&#19978;&#24050;&#23433;&#35013;&#20102;Silex&#25110;&#21478;&#19968;&#20010;&#25903;&#25345;Twig&#30340;PHP&#29615;&#22659;&#12290;<\/h3><p>&#22312;&#28145;&#20837;&#25506;&#35752;&#20351;&#29992;&#21487;&#22797;&#29992;&#22359;&#30340;&#20855;&#20307;&#26041;&#27861;&#20043;&#21069;&#65292;&#29702;&#35299;Twig&#30340;&#22522;&#26412;&#27010;&#24565;&#33267;&#20851;&#37325;&#35201;&#12290;Twig &#26159;&#19968;&#20010;&#28789;&#27963;&#12289;&#24555;&#36895;&#19988;&#23433;&#20840;&#30340;PHP&#27169;&#26495;&#24341;&#25806;&#12290;&#23427;&#20801;&#35768;&#24744;&#36731;&#26494;&#23450;&#20041;&#32593;&#31449;&#39029;&#38754;&#30340;&#32467;&#26500;&#24182;&#27880;&#20837;&#25968;&#25454;&#21040;&#23427;&#20204;&#20013;&#12290;&#20854;&#24378;&#22823;&#21151;&#33021;&#20043;&#19968;&#26159;&#32487;&#25215;&#65292;&#36825;&#20351;&#24471;&#19968;&#20010;&#27169;&#26495;&#21487;&#20197;&#25193;&#23637;&#21478;&#19968;&#20010;&#27169;&#26495;&#65292;&#24182;&#35206;&#30422;&#20854;&#20013;&#26576;&#20123;&#37096;&#20998;&#25110;&ldquo;&#22359;&rdquo;&#12290;<\/p><h2>&#32487;&#25215;&#27169;&#26495;<\/h2><p>&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>{% extends 'base.html.twig' %}\n\n{% block title %}Page Title{% endblock %}\n{% block body %}\n    &lt;!-- Page content goes here --&gt;\n{% endblock %}\n<\/code><\/pre><p>&#22312;&#36825;&#37324;&#65292;&#25105;&#20204;&#22768;&#26126;&#25105;&#20204;&#30340;&#27169;&#26495;&#32487;&#25215;&#20102;&#19968;&#20010;&#21517;&#20026; base.html.twig &#30340;&#22522;&#30784;&#27169;&#26495;&#65292;&#24182;&#37325;&#20889;&#20102; title &#21644; body &#26631;&#31614;&#22359;&#12290;&#22312; body &#26631;&#31614;&#22359;&#20869;&#25918;&#32622;&#30340;&#20219;&#20309;HTML&#26631;&#35760;&#25110;&#20854;&#20182;&#26631;&#31614;&#23558;&#20250;&#26159;&#24403;&#21069;&#27169;&#26495;&#29305;&#26377;&#30340;&#65292;&#32780;&#20854;&#20182;&#37096;&#20998;&#23558;&#20174;&#22522;&#30784;&#27169;&#26495;&#32487;&#25215;&#12290;<\/p><h2>&#21019;&#24314;&#21487;&#22797;&#29992;&#30340;&#22359;<\/h2><p>&#20026;&#20102;&#20419;&#36827;&#37325;&#29992;&#65292;&#20320;&#21487;&#20197;&#32771;&#34385;&#21019;&#24314;&#21487;&#20197;&#37325;&#22797;&#20351;&#29992;&#30340;&#22359;&#12290;&#20363;&#22914;&#65292;&#19968;&#20010;&#23548;&#33322;&#26639;&#25110;&#24213;&#37096;&#20449;&#24687;&#26639;&#21487;&#20197;&#22312;&#25152;&#26377;&#39029;&#38754;&#19978;&#20445;&#25345;&#19968;&#33268;&#12290;<\/p><pre><code>{% block navbar %}\n    &lt;nav&gt;\n        &lt;!-- Navbar content --&gt;\n    &lt;\/nav&gt;\n{% endblock %}\n\n{% block footer %}\n    &lt;footer&gt;\n        &lt;!-- Footer content --&gt;\n    &lt;\/footer&gt;\n{% endblock %}\n<\/code><\/pre><p>&#22312;&#24744;&#30340;&#22522;&#30784;&#27169;&#26495;&#20013;&#23450;&#20041;&#36825;&#20123;&#21518;&#65292;&#27599;&#20010;&#39029;&#38754;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#36827;&#34892;&#35206;&#30422;&#25110;&#20381;&#36182;&#20110;&#22522;&#30784;&#27169;&#26495;&#30340;&#23454;&#29616;&#12290;<\/p><h2>&#21253;&#25324;&#27169;&#26495;<\/h2><p>&#21478;&#19968;&#31181;&#37325;&#29992;&#20195;&#30721;&#30340;&#26041;&#27861;&#26159;&#36890;&#36807;&#22312;&#38656;&#35201;&#30340;&#22320;&#26041;&#20351;&#29992;&#36739;&#23567;&#12289;&#32858;&#28966;&#30340;&#27169;&#26495;&#26469;&#21253;&#21547;&#23427;&#20204;&#12290;<code>{% include %}<\/code>&#22768;&#26126;&#12290;&#36825;&#26159;&#20026;&#38750;&#22359;&#24335;&#32467;&#26500;&#30340;&#32452;&#20214;&#35774;&#35745;&#30340;&#29702;&#24819;&#26041;&#26696;&#65292;&#36825;&#20123;&#32452;&#20214;&#21487;&#20197;&#34987;&#37325;&#22797;&#20351;&#29992;&#20197;&#26500;&#24314;&#24744;&#30340;&#29992;&#25143;&#30028;&#38754;&#65288;UI&#65289;&#29255;&#27573;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>&lt;!-- product_card.html.twig --&gt;\n&lt;div class=\"product-card\"&gt;\n    &lt;h3&gt;{{ product.name }}&lt;\/h3&gt;\n    &lt;p&gt;{{ product.description }}&lt;\/p&gt;\n&lt;\/div&gt;\n\n&lt;!-- In another template --&gt;\n{% for product in products %}\n    {% include 'product_card.html.twig' with {'product': product} %}\n{% endfor %}\n<\/code><\/pre><p>&#25105;&#20204;&#27491;&#22312;&#36845;&#20195;&#19968;&#32452;&#20135;&#21697;&#65292;&#24182;&#20026;&#27599;&#20010;&#20135;&#21697;&#21253;&#21547;&ldquo;product_card.html.twig&rdquo;&#27169;&#26495;&#65292;&#23558;&#24403;&#21069;&#20135;&#21697;&#20256;&#36882;&#21040;&#23884;&#20837;&#30340;&#27169;&#26495;&#20013;&#12290;&#36825;&#26679;&#21487;&#20197;&#26041;&#20415;&#22320;&#23545;&#21333;&#20010;&#20135;&#21697;&#30340;&#21345;&#29255;&#36827;&#34892;&#35843;&#25972;&#21644;&#32500;&#25252;&#12290;<\/p><h2>&#20351;&#29992;&#23439;&#12290;<\/h2><p>&#22312;Twig&#20013;&#65292;&#23439;&#19982;&#20256;&#32479;&#32534;&#31243;&#35821;&#35328;&#20013;&#30340;&#20989;&#25968;&#31867;&#20284;&#65292;&#23427;&#20204;&#20063;&#26159;&#21019;&#24314;&#21487;&#37325;&#29992;&#21644;&#26131;&#20110;&#32500;&#25252;&#32452;&#20214;&#30340;&#21478;&#19968;&#31181;&#24037;&#20855;&#12290;<\/p><pre><code>{% macro input(name, value, type = 'text', required = false) %}\n&lt;label&amp;gt {{ name }}&lt;\/label&gt;\n&lt;input type=\"{{ type }}\" name=\"{{ name }}\" value=\"{{ value }}\" {% if required %}required{% endif %}&gt;\n{% endmacro %}\n\n{% import _self as forms %}\n\n&lt;!-- Use the macro like this --&gt;\n{{ forms.input('email', '', 'email', true) }}\n{{ forms.input('password', '', 'password', true) }}\n<\/code><\/pre><p>&#36825;&#20010;&#31034;&#20363;&#23450;&#20041;&#20102;&#19968;&#20010;&#21517;&#20026;&ldquo;&#36755;&#20837;&rdquo;&#30340;&#23439;&#65292;&#28982;&#21518;&#29992;&#21629;&#21517;&#31354;&#38388;&#65288;&#34920;&#21333;&#65289;&#23548;&#20837;&#23427;&#65292;&#24182;&#20351;&#29992;&#23427;&#21019;&#24314;&#20102;&#30005;&#23376;&#37038;&#20214;&#21644;&#23494;&#30721;&#25152;&#38656;&#30340;&#24517;&#22635;&#23383;&#27573;&#12290;<\/p><h2>&#21306;&#22359;&#21644;&#24067;&#23616;<\/h2><p>&#23545;&#20110;&#26356;&#22797;&#26434;&#30340;&#24212;&#29992;&#65292;&#21487;&#33021;&#38656;&#35201;&#19981;&#21516;&#30340;&#39029;&#38754;&#31867;&#22411;&#65292;&#36825;&#20123;&#39029;&#38754;&#38656;&#35201;&#29420;&#29305;&#30340;&#24067;&#23616;&#12290;&#36890;&#36807;&#26126;&#26234;&#22320;&#20351;&#29992;&#22359;&#65292;&#25105;&#20204;&#21487;&#20197;&#26500;&#24314;&#20986;&#36825;&#20123;&#24067;&#23616;&#65292;&#24182;&#26681;&#25454;&#25152;&#38656;&#30340;&#20869;&#23481;&#36827;&#34892;&#36866;&#24212;&#24615;&#35843;&#25972;&#12290;<\/p><p>&#32771;&#34385;&#19968;&#31181;&#20004;&#21015;&#24067;&#23616;&#65292;&#20854;&#20013;&#31532;&#20108;&#21015;&#21487;&#36873;&#65306;<\/p><pre><code>{% extends 'base.html.twig' %}\n\n{% block body %}\n    &lt;div class=\"content\"&gt;\n        {% block main_content %}{% endblock main_content %}\n    &lt;\/div&gt;\n    {% block sidebar %}\n        &lt;!-- Sidebar content only if required --&gt;\n    {% endblock sidebar %}\n{% endblock body %}\n<\/code><\/pre><p>&#22312;&#20799;&#31461;&#27169;&#26495;&#20013;&#65306;<\/p><pre><code>{% extends 'two_column_layout.html.twig' %}\n\n{% block main_content %}\n    &lt;p&gt;Main content goes here.&lt;\/p&gt;\n{% endblock main_content %}\n\n{% block sidebar %}\n    &lt;p&gt;Optional sidebar content.&lt;\/p&gt;\n{% endblock sidebar %}\n<\/code><\/pre><p>&#36890;&#36807;&#20351;&#29992;Twig&#30340;&#27169;&#26495;&#32487;&#25215;&#12289;&#22359;&#12289;&#21253;&#25324;&#21644;&#23439;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#20855;&#26377;&#21487;&#37325;&#29992;&#12289;&#26131;&#20110;&#32500;&#25252;&#32452;&#20214;&#30340;&#22797;&#26434;Web&#24212;&#29992;&#31243;&#24207;&#12290;&#32487;&#32493;&#25506;&#32034;&#36825;&#20123;&#20803;&#32032;&#20197;&#25214;&#21040;&#26368;&#36866;&#21512;&#24744;&#24212;&#29992;&#38656;&#27714;&#30340;&#32452;&#21512;&#65292;&#24182;&#20139;&#21463;&#26500;&#24314;&#24744;&#30340;&#24212;&#29992;&#31243;&#24207;&#29992;&#25143;&#30028;&#38754;&#30340;&#31616;&#21270;&#36807;&#31243;&#12290;<\/p><h2>&#26368;&#21518;&#30340;&#21457;&#35328;<\/h2><p>&#23454;&#26045;&#25552;&#21040;&#30340;&#25216;&#26415;&#21040;&#24744;&#30340;Symfony&#21644;Twig&#24320;&#21457;&#24037;&#20316;&#27969;&#31243;&#20013;&#21487;&#20197;&#26174;&#33879;&#25552;&#39640;&#24320;&#21457;&#36807;&#31243;&#30340;&#25928;&#29575;&#12290;&#36890;&#36807;&#29702;&#35299;&#24182;&#21033;&#29992;Twig&#27169;&#26495;&#21151;&#33021;&#30340;&#21147;&#37327;&#65292;&#24744;&#30830;&#20445;&#20102;&#19968;&#31181;&#28789;&#27963;&#19988;&#21487;&#32500;&#25252;&#30340;&#27169;&#26495;&#26550;&#26500;&#65292;&#35813;&#26550;&#26500;&#33021;&#22815;&#36866;&#24212;&#19981;&#26029;&#21464;&#21270;&#30340;web&#24320;&#21457;&#38656;&#27714;&#12290;<\/p><\/body>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div><div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--3\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/xygcfznnzczhsdmwydzhsmzzzmddnq-400x300.jpg\" alt=\"&#38271;&#24037;&#30721;&#22900;1523\" class=\"wp-image-2906\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">&#38271;&#24037;&#30721;&#22900;1523<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>Symfony &#26159;&#19968;&#20010;&#38750;&#24120;&#27969;&#34892;&#30340; PHP &#26694;&#26550;&#65292;&#29992;&#20110;&#26500;&#24314; Web &#24212;&#29992;&#31243;&#24207;&#12290;Twig &#26159; Symfony &#25552;&#20379;&#30340;&#19968;&#20010;&#27169;&#26495;&#24341;&#25806;&#65292;&#21487;&#20197;&#35753;&#20320;&#36731;&#26494;&#22320;&#20351;&#29992; PHP &#26469;&#29983;&#25104; HTML&#12290;<\/p>\n<p>&#35201;&#23558; Twig &#27169;&#26495;&#20998;&#35299;&#20026;&#21487;&#37325;&#29992;&#30340;&#22359;&#65292;&#20320;&#21487;&#20197;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<h3>&#27493;&#39588; 1: &#21019;&#24314;&#19968;&#20010;&#26032;&#30340; Twig &#32534;&#36753;&#22120;<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340; Twig &#32534;&#36753;&#22120;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#23433;&#35013; <code>twig-compiler<\/code> &#25193;&#23637;&#26469;&#23436;&#25104;&#12290;&#25171;&#24320;&#32456;&#31471;&#24182;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require symfony\/twig-bundle twig-compiler<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#36890;&#36807;&#28155;&#21152; <code>TwigCompiler<\/code> &#26381;&#21153;&#21040;&#24212;&#29992;&#31243;&#24207;&#37197;&#32622;&#20013;&#65292;&#21551;&#29992; Twig &#32534;&#35793;&#22120;&#65306;<\/p>\n<pre><code class=\"language-php\">services:\n    twig.compiler.twig_compiler:\n        class: SymfonyBundleTwigBundleTwigCompilerTwigCompiler<\/code><\/pre>\n<h3>&#27493;&#39588; 2: &#20998;&#35299;&#27169;&#26495;<\/h3>\n<p>&#29616;&#22312;&#65292;&#20320;&#38656;&#35201;&#23558;&#27169;&#26495;&#20998;&#35299;&#25104;&#21487;&#37325;&#29992;&#30340;&#22359;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992; <code>twig:twig<\/code> &#36716;&#25442;&#22120;&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026; <code>mytemplate.html.twig<\/code> &#30340;&#27169;&#26495;&#25991;&#20214;&#65292;&#20320;&#21487;&#20197;&#23558;&#20854;&#36716;&#25442;&#20026;&#19968;&#20010;&#21517;&#20026; <code>mytemplate_block.html.twig<\/code> &#30340;&#26032;&#27169;&#26495;&#25991;&#20214;&#12290;&#20197;&#19979;&#26159;&#20855;&#20307;&#30340;&#36716;&#25442;&#36807;&#31243;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#32534;&#36753; <code>app\/Resources\/views\/mytemplate_block.html.twig<\/code><\/strong>&#65306;<\/p>\n<pre><code class=\"language-bash\">php bin\/console twig:compile --no-debug app\/Resources\/views\/mytemplate_block.html.twig<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#26597;&#30475;&#29983;&#25104;&#30340;&#25991;&#20214;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#22312; <code>app\/Resources\/views<\/code> &#30446;&#24405;&#19979;&#65292;&#20320;&#24212;&#35813;&#20250;&#30475;&#21040;&#19968;&#20010;&#21517;&#20026; <code>mytemplate_block.html.twig<\/code> &#30340;&#26032;&#25991;&#20214;&#12290;<\/li>\n<li>&#36825;&#20010;&#25991;&#20214;&#21253;&#21547;&#20102;&#21407;&#27169;&#26495;&#20013;&#30340;&#25152;&#26377;&#26631;&#31614;&#21644;&#25351;&#20196;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992;&#26032;&#30340;&#27169;&#26495;<\/strong>&#65306;\n&#23558; <code>mytemplate_block.html.twig<\/code> &#26367;&#25442;&#21407;&#22987;&#30340; <code>mytemplate.html.twig<\/code> &#25991;&#20214;&#65292;&#28982;&#21518;&#37325;&#26032;&#32534;&#35793;&#25972;&#20010;&#24212;&#29992;&#65306;<\/p>\n<pre><code class=\"language-bash\">php bin\/console twig:compile --no-debug app<\/code><\/pre>\n<\/li>\n<\/ol>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026; <code>templates\/emails\/index.html.twig<\/code> &#30340;&#27169;&#26495;&#25991;&#20214;&#65292;&#23427;&#30475;&#36215;&#26469;&#20687;&#36825;&#26679;&#65306;<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;title&gt;Email Template&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;!-- &#23548;&#33322;&#26639; --&gt;\n    &lt;nav&gt;\n        &lt;ul&gt;\n            &lt;li&gt;&lt;a href=\"#\"&gt;Home&lt;\/a&gt;&lt;\/li&gt;\n            &lt;li&gt;&lt;a href=\"#\"&gt;About&lt;\/a&gt;&lt;\/li&gt;\n            &lt;li&gt;&lt;a href=\"#\"&gt;Contact&lt;\/a&gt;&lt;\/li&gt;\n        &lt;\/ul&gt;\n    &lt;\/nav&gt;\n\n    &lt;!-- &#20869;&#23481;&#21306;&#22495; --&gt;\n    &lt;div class=\"content\"&gt;\n        &lt;h1&gt;Welcome to the Email Template!&lt;\/h1&gt;\n        &lt;p&gt;This is a sample email template.&lt;\/p&gt;\n        &lt;p&gt;Feel free to customize this template with your own content and branding.&lt;\/p&gt;\n    &lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#20320;&#21487;&#20197;&#20351;&#29992; <code>TwigCompiler<\/code> &#26381;&#21153;&#23558;&#36825;&#20010;&#27169;&#26495;&#36716;&#25442;&#20026;&#22810;&#20010;&#29420;&#31435;&#30340;&#22359;&#65292;&#27599;&#20010;&#22359;&#37117;&#21253;&#21547;&#29305;&#23450;&#30340;&#20869;&#23481;&#12290;&#20363;&#22914;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>index.html.twig<\/code> &#30340;&#22359;&#65292;&#24182;&#23558; <code>nav<\/code>, <code>content<\/code>, &#21644; <code>footer<\/code> &#37096;&#20998;&#25918;&#20837;&#20854;&#20013;&#12290;&#20855;&#20307;&#27493;&#39588;&#22914;&#19979;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#32534;&#36753; <code>app\/Resources\/views\/templates\/emails\/index.html.twig<\/code><\/strong>&#65306;<\/p>\n<pre><code class=\"language-bash\">php bin\/console twig:compile --no-debug app\/Resources\/views\/templates\/emails\/index.html.twig<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#26597;&#30475;&#29983;&#25104;&#30340;&#25991;&#20214;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#22312; <code>app\/Resources\/views\/templates\/emails<\/code> &#30446;&#24405;&#19979;&#65292;&#20320;&#24212;&#35813;&#20250;&#30475;&#21040;&#19968;&#20010;&#21517;&#20026; <code>index.html.twig<\/code> &#30340;&#26032;&#25991;&#20214;&#12290;<\/li>\n<li>&#36825;&#20010;&#25991;&#20214;&#21253;&#21547;&#20102;&#21407;&#27169;&#26495;&#20013;&#30340;&#25152;&#26377;&#26631;&#31614;&#21644;&#25351;&#20196;&#65292;&#20294;&#34987;&#20998;&#21106;&#25104;&#20102;&#20960;&#20010;&#29420;&#31435;&#30340;&#22359;&#12290;<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992;&#26032;&#30340;&#27169;&#26495;<\/strong>&#65306;<\/p>\n<ul>\n<li>&#23558; <code>index.html.twig<\/code> &#26367;&#25442;&#21407;&#22987;&#30340; <code>index.html.twig<\/code> &#25991;&#20214;&#65292;&#28982;&#21518;&#37325;&#26032;&#32534;&#35793;&#25972;&#20010;&#24212;&#29992;&#65306;<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">php bin\/console twig:compile --no-debug app<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#26377;&#25928;&#22320;&#23558;&#27169;&#26495;&#20998;&#35299;&#20026;&#21487;&#37325;&#29992;&#30340;&#22359;&#65292;&#20197;&#20415;&#20110;&#31649;&#29702;&#21644;&#25193;&#23637;&#12290;&#36825;&#31181;&#26041;&#27861;&#23545;&#20110;&#22823;&#22411;&#39033;&#30446;&#23588;&#20854;&#26377;&#29992;&#65292;&#22240;&#20026;&#23427;&#20801;&#35768;&#20320;&#26356;&#28789;&#27963;&#22320;&#32452;&#32455;&#21644;&#31649;&#29702;&#27169;&#26495;&#65292;&#20174;&#32780;&#25552;&#39640;&#24320;&#21457;&#25928;&#29575;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#26631;&#39064;&#65306;&#20351;&#29992;Symfony&#30340;Twig&#27169;&#26495;&#20998;&#35299;&#20026;&#21487;&#37325;&#29992;&#22359; ..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1077","my1js","type-my1js","status-publish","hentry","my1js2nav-symfony"],"acf":{"qian_art_seotitle":"","qian_art_seotitle_source":{"label":"SEO\u6807\u9898","type":"text","formatted_value":""},"qian_art_seokws":"","qian_art_seokws_source":{"label":"SEO\u5173\u952e\u8bcd","type":"text","formatted_value":""},"qian_art_stzhong":"","qian_art_stzhong_source":{"label":"\u4e2d | \u77ed\u6807\u9898","type":"text","formatted_value":""}},"_links":{"self":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js\/1077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js"}],"about":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/types\/my1js"}],"author":[{"embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/users\/1"}],"wp:attachment":[{"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/media?parent=1077"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1077"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1077"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}