{"id":1073,"date":"2025-06-12T12:04:39","date_gmt":"2025-06-12T04:04:39","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1073.html"},"modified":"2025-06-12T12:04:39","modified_gmt":"2025-06-12T04:04:39","slug":"symfony%e5%92%8ctwig%ef%bc%9a%e5%a6%82%e4%bd%95%e9%93%be%e6%8e%a5%e5%88%b0%e8%b5%84%e4%ba%a7%e6%96%87%e4%bb%b6%ef%bc%88css%e3%80%81js%e3%80%81%e5%9b%be%e7%89%87%e7%ad%89%ef%bc%89","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1073.html","title":{"rendered":"Symfony\u548cTwig\uff1a\u5982\u4f55\u94fe\u63a5\u5230\u8d44\u4ea7\u6587\u4ef6\uff08CSS\u3001JS\u3001\u56fe\u7247\u7b49\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>&#22312;Symfony&#21644;Twig&#20013;&#65292;&#38142;&#25509;&#21040;&#36164;&#20135;&#25991;&#20214;&#65288;&#22914;CSS&#12289;JavaScript&#12289;&#22270;&#29255;&#31561;&#65289;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#23454;&#29616;&#12290;&#20197;&#19979;&#26159;&#20004;&#31181;&#24120;&#35265;&#30340;&#26041;&#27861;&#65306;<\/p>\n<h3>&#26041;&#27861;&#19968;&#65306;&#20351;&#29992; Twig&#30340;<code>asset()<\/code>&#20989;&#25968;<\/h3>\n<p><code>asset()<\/code>&#20989;&#25968;&#26159;Twig&#25552;&#20379;&#30340;&#19968;&#20010;&#38750;&#24120;&#26041;&#20415;&#30340;&#26041;&#27861;&#26469;&#29983;&#25104;&#32477;&#23545;&#36335;&#24452;&#30340;URL&#65292;&#20197;&#20415;&#22312;HTML&#20013;&#24341;&#29992;&#36825;&#20123;&#36164;&#28304;&#12290;<\/p>\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;My Symfony App&lt;\/title&gt;\n    &lt;!-- &#20351;&#29992;asset()&#20989;&#25968;&#24341;&#29992;CSS&#25991;&#20214; --&gt;\n    {{ asset('css\/styles.css') }}\n    &lt;!-- &#20351;&#29992;asset()&#20989;&#25968;&#24341;&#29992;JavaScript&#25991;&#20214; --&gt;\n    {{ asset('js\/app.js') }}\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;!-- &#20320;&#30340;&#39029;&#38754;&#20869;&#23481; --&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>&#26041;&#27861;&#20108;&#65306;&#20351;&#29992;Composer&#33258;&#21160;&#21152;&#36733;<\/h3>\n<p>&#22914;&#26524;&#20320;&#20351;&#29992;&#30340;&#26159;Composer&#31649;&#29702;&#20320;&#30340;&#20381;&#36182;&#39033;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;Composer&#33258;&#21160;&#29983;&#25104;&#33258;&#21160;&#21152;&#36733;&#37197;&#32622;&#65292;&#24182;&#19988;&#21487;&#20197;&#20351;&#29992;Composer&#30340;<code>require-dev<\/code>&#37096;&#20998;&#26469;&#23433;&#35013;&#19968;&#20123;&#29992;&#20110;&#22788;&#29702;&#38745;&#24577;&#25991;&#20214;&#30340;&#26381;&#21153;&#12290;<\/p>\n<ol>\n<li>\n<p><strong>&#21019;&#24314;&#19968;&#20010;<code>public\/index.php<\/code>&#25991;&#20214;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\nrequire_once __DIR__.'\/vendor\/autoload.php';\n\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\n\n$request = Request::createFromGlobals();\n$response = new Response();\n\n\/\/ &#22788;&#29702;&#35831;&#27714;&#36923;&#36753;\n\nreturn $response;<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#37197;&#32622;Composer&#20197;&#33258;&#21160;&#21152;&#36733;<\/strong>&#65306;\n&#22312;<code>composer.json<\/code>&#20013;&#28155;&#21152;&#20197;&#19979;&#20869;&#23481;&#65306;<\/p>\n<pre><code class=\"language-json\">\"autoload\": {\n   \"psr-4\": {\n       \"App\\\": \"src\/\"\n   }\n},\n\"scripts\": {\n   \"assets:install\": [\n       \"@php bin\/console assets:install\"\n   ]\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#36816;&#34892;Composer&#21629;&#20196;<\/strong>&#65306;<\/p>\n<pre><code class=\"language-sh\">composer dump-autoload<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#22312;Twig&#27169;&#26495;&#20013;&#20351;&#29992;<code>asset()<\/code>&#20989;&#25968;<\/strong>&#65306;<\/p>\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;My Symfony App&lt;\/title&gt;\n   &lt;!-- &#20351;&#29992;asset()&#20989;&#25968;&#24341;&#29992;CSS&#25991;&#20214; --&gt;\n   {{ asset('css\/styles.css') }}\n   &lt;!-- &#20351;&#29992;asset()&#20989;&#25968;&#24341;&#29992;JavaScript&#25991;&#20214; --&gt;\n   {{ asset('js\/app.js') }}\n&lt;\/head&gt;\n&lt;body&gt;\n   &lt;!-- &#20320;&#30340;&#39029;&#38754;&#20869;&#23481; --&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<\/li>\n<\/ol>\n<p>&#36825;&#20004;&#31181;&#26041;&#27861;&#37117;&#21487;&#20197;&#24110;&#21161;&#20320;&#22312;Symfony&#39033;&#30446;&#20013;&#27491;&#30830;&#22320;&#38142;&#25509;&#21040;&#36164;&#20135;&#25991;&#20214;&#12290;&#36873;&#25321;&#21738;&#31181;&#26041;&#27861;&#21462;&#20915;&#20110;&#20320;&#30340;&#39033;&#30446;&#32467;&#26500;&#21644;&#38656;&#27714;&#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>&#20171;&#32461;<\/h2><p>&#31649;&#29702;&#19982;CSS&#12289;JavaScript&#21644;&#22270;&#20687;&#31561;&#31867;&#20284;&#30340;&#36164;&#20135;&#23545;&#20110;Web&#24320;&#21457;&#33267;&#20851;&#37325;&#35201;&#12290;Symfony&#65292;&#19968;&#20010;&#28789;&#27963;&#19988;&#24378;&#22823;&#30340;PHP&#26694;&#26550;&#65292;&#25645;&#37197;&#20854;&#27169;&#26495;&#24341;&#25806;Twig&#65292;&#20026;&#22788;&#29702;&#36164;&#20135;&#25552;&#20379;&#20102;&#19968;&#31181;&#31616;&#27905;&#39640;&#25928;&#30340;&#36884;&#24452;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#22914;&#20309;&#20351;&#29992;Twig&#22312;Symfony&#20013;&#38142;&#25509;&#21040;&#36164;&#20135;&#65292;&#20197;&#25552;&#21319;&#24744;&#30340;Web&#24212;&#29992;&#31243;&#24207;&#24615;&#33021;&#24182;&#22686;&#24378;&#21487;&#32500;&#25252;&#24615;&#12290;<\/p><h2>&#29702;&#35299;Symfony&#30340;Assets<\/h2><p>Symfony&#30340;Asset&#32452;&#20214;&#24110;&#21161;&#20320;&#31649;&#29702;&#32593;&#31449;&#36164;&#20135;&#30340;URL&#29983;&#25104;&#12290;&#23427;&#37197;&#32622;&#20026;&#22788;&#29702;&#39033;&#30446;&#29305;&#23450;&#38656;&#27714;&#65292;&#36824;&#21487;&#20197;&#19982;&#29992;&#20110;&#36164;&#20135;&#20248;&#21270;&#65288;&#22914;Webpack Encore&#65289;&#30340;&#20854;&#20182;&#24037;&#20855;&#38598;&#25104;&#12290;<\/p><p>&#36164;&#20135;&#36890;&#24120;&#20648;&#23384;&#22312;&#37027;&#37324;&#12290;<code>public\/<\/code>&#22312;&#24744;&#30340;Symfony&#24212;&#29992;&#20013;&#65292;&#30446;&#24405;&#32467;&#26500;&#36890;&#24120;&#22914;&#19979;&#25152;&#31034;&#65306;<\/p><pre><code>public\/\n    css\/\n    js\/\n    images\/\n<\/code><\/pre><h2>&#23433;&#35013;&#36164;&#20135;&#32452;&#20214;<\/h2><p>&#22312;&#38142;&#25509;&#36164;&#28304;&#20043;&#21069;&#65292;&#35831;&#30830;&#20445;&#24050;&#23433;&#35013;&#20102;Asset&#32452;&#20214;&#12290;&#22914;&#26524;&#38656;&#35201;&#65292;&#21487;&#20197;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p><pre><code>composer require symfony\/asset<\/code><\/pre><p>&#36825;&#23558;&#20250;&#23433;&#35013;&#36164;&#20135;&#21253;&#24182;&#20351;&#20854;&#22312;&#24744;&#30340;Symfony&#24212;&#29992;&#20013;&#21551;&#29992;&#12290;<\/p><h2>&#20351;&#29992;Twig&#20989;&#25968;<\/h2><p>Twig &#25552;&#20379;&#20102;&#22914;&#19979;&#30340;&#20989;&#25968;&#65306;<code>asset()<\/code>&#20026;&#20102;&#29983;&#25104;&#25351;&#21521;&#24744;&#36164;&#20135;&#30340;&#27491;&#30830;&#36335;&#24452;&#12290;<\/p><h3>&#38142;&#25509;&#21040;CSS&#25991;&#20214;<\/h3><p>&#35201;&#22312;&#24744;&#30340;Twig&#27169;&#26495;&#20013;&#21253;&#21547;&#19968;&#20010;CSS&#25991;&#20214;&#65306;<\/p><pre><code>&lt;link href=\"{{ asset('css\/style.css') }}\" rel=\"stylesheet\"&gt;<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#24744;&#30340;&#28040;&#24687;&#19981;&#23436;&#25972;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#35201;&#34920;&#36798;&#30340;&#20869;&#23481;&#12290;<code>asset()<\/code>&#20989;&#25968;&#25509;&#21463;&#19968;&#20010;&#30456;&#23545;&#20110;&#24403;&#21069;&#24037;&#20316;&#30446;&#24405;&#30340;&#36335;&#24452;&#12290;<code>public\/<\/code>&#30446;&#24405;&#12290;&#22312;&#36825;&#37324;&#65292;&#23427;&#29983;&#25104;&#29992;&#20110;&#35775;&#38382;&#30340;URL&#12290;<code>style.css<\/code>&#25991;&#20214;&#20301;&#20110;<code>public\/css\/<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><h3>&#38142;&#25509;&#21040;JavaScript&#25991;&#20214;<\/h3><p>&#23545;&#20110;JavaScript&#65292;&#27969;&#31243;&#20063;&#26159;&#31867;&#20284;&#30340;&#12290;<\/p><pre><code>&lt;script src=\"{{ asset('js\/app.js') }}\"&gt;&lt;\/script&gt;<\/code><\/pre><p>&#36825;&#26159;&#38142;&#25509;&#21040;&#12290;<code>app.js<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#24744;&#24819;&#34920;&#36798;&#30340;&#20869;&#23481;&#12290;<code>public\/js\/<\/code>&#30446;&#24405;&#12290;<\/p><h3>&#38142;&#25509;&#21040;&#22270;&#29255;&#12290;<\/h3><p>&#23545;&#20110;&#22270;&#29255;&#65306;<\/p><pre><code>&lt;img src=\"{{ asset('images\/logo.png') }}\" alt=\"MyLogo\"&gt;<\/code><\/pre><p>&#23427;&#23558;&#24341;&#29992;&#12290;<code>logo.png<\/code>&#20301;&#20110;<code>public\/images\/<\/code>&#30446;&#24405;&#12290;&#24744;&#36824;&#21487;&#20197;&#22788;&#29702;&#20854;&#20182;&#25991;&#20214;&#31867;&#22411;&#65292;&#20363;&#22914;&#23383;&#20307;&#25110;&#19979;&#36733;&#12290;<\/p><h2>&#36164;&#20135;&#29256;&#26412;&#25511;&#21046;&#21644;&#32531;&#23384;&#30772;&#38500;<\/h2><p>&#32531;&#23384;&#21047;&#26032;&#26377;&#21161;&#20110;&#27983;&#35272;&#22120;&#21152;&#36733;&#26368;&#26032;&#30340;&#25991;&#20214;&#65292;&#36890;&#36807;&#20462;&#25913;&#36164;&#20135;URL&#26469;&#24212;&#23545;&#25991;&#20214;&#30340;&#26356;&#25913;&#12290;Symfony &#20351;&#24471;&#36825;&#19968;&#28857;&#21464;&#24471;&#31616;&#21333;&#12290;<code>version_strategy<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#26410;&#33021;&#29702;&#35299;&#24744;&#30340;&#38382;&#39064;&#12290;&#22914;&#26524;&#24744;&#26377;&#20854;&#20182;&#38656;&#35201;&#24110;&#21161;&#30340;&#20869;&#23481;&#65292;&#35831;&#35814;&#32454;&#35828;&#26126;&#65292;&#25105;&#20250;&#23613;&#21147;&#20026;&#24744;&#25552;&#20379;&#20934;&#30830;&#30340;&#32763;&#35793;&#21644;&#35299;&#31572;&#12290;<\/p><h3>&#35774;&#32622;&#29256;&#26412;&#31574;&#30053;<\/h3><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#24744;&#30340;&#38382;&#39064;&#25110;&#32773;&#38656;&#27714;&#65292;&#25105;&#20250;&#23613;&#21147;&#20026;&#24744;&#26381;&#21153;&#30340;&#12290;<code>config\/packages\/assets.yaml<\/code>&#37197;&#32622;&#36164;&#20135;&#29256;&#26412;&#31649;&#29702;&#65306;<\/p><pre><code>framework:\n    assets:\n        json_manifest_path: '%kernel.project_dir%\/public\/build\/manifest.json'<\/code><\/pre><p>&#36825;&#20551;&#35774;&#20320;&#26159;&#20351;&#29992;&#20687; Webpack &#36825;&#26679;&#30340;&#24037;&#20855;&#36755;&#20986;&#30340;&#12290;<code>manifest.json<\/code>&#21253;&#21547;&#29256;&#26412;&#21270;&#36164;&#20135;&#21517;&#31216;&#30340;&#25991;&#20214;&#12290;&#22312;&#36825;&#31181;&#35774;&#32622;&#19979;&#65292;&#21487;&#20197;&#20351;&#29992;&#23427;&#12290;<code>asset()<\/code>&#35813;&#21151;&#33021;&#20250;&#33258;&#21160;&#22312;&#36164;&#20135;URL&#21518;&#38754;&#36861;&#21152;&#29256;&#26412;&#21495;&#25110;&#20462;&#35746;&#29256;&#21495;&#12290;<\/p><h2>&#20351;&#29992; Webpack Encore<\/h2><p>Webpack Encore &#26159;&#19968;&#20010;&#31616;&#21270;&#29256;&#30340; Webpack&#65292;&#29305;&#21035;&#38024;&#23545; Symfony &#39033;&#30446;&#36827;&#34892;&#35774;&#35745;&#12290;&#22914;&#26524;&#20320;&#27491;&#22312;&#20351;&#29992; Encore &#26469;&#31649;&#29702;&#36164;&#20135;&#65306;<\/p><h3>&#23433;&#35013;Encore<\/h3><p>&#39318;&#20808;&#65292;&#23433;&#35013; Encore&#65306;<\/p><pre><code>composer require symfony\/webpack-encore-bundle<\/code><\/pre><p>&#28982;&#21518;&#65292;&#25353;&#29031;Webpack Encore&#30340;&#35828;&#26126;&#36827;&#34892;&#35774;&#32622;&#12290;&#23436;&#25104;&#21518;&#65292;&#22312;Twig&#27169;&#26495;&#20013;&#20351;&#29992;Encore&#30340;&#21151;&#33021;&#12290;<\/p><h3>&#38142;&#25509;&#36164;&#20135;&#19982;Encore<\/h3><p>&#35201;&#38142;&#25509;&#21040;&#32534;&#35793;&#30340;CSS&#25110;JS&#25991;&#20214;&#65306;<\/p><pre><code>{{ encore_entry_link_tags('entry-point-name') }}\n{{ encore_entry_script_tags('entry-point-name') }}<\/code><\/pre><p>&#26367;&#25442;<code>'entry-point-name'<\/code>&#20197;&#24744;&#20026;&#36164;&#20135;&#35760;&#24405;&#25152;&#32473;&#20986;&#30340;&#21517;&#23383;&#12290;<code>webpack.config.js<\/code>&#24050;&#32463;&#25910;&#21040;&#65292;&#31245;&#21518;&#22788;&#29702;&#12290;<\/p><h2>&#32452;&#32455;&#36164;&#20135;<\/h2><p>&#32771;&#34385;&#36827;&#19968;&#27493;&#32452;&#32455;&#36164;&#20135;&#65292;&#20197;&#20415;&#22788;&#29702;&#19981;&#21516;&#30340;CDN URL&#25110;&#38024;&#23545;&#19981;&#21516;&#31867;&#22411;&#36164;&#20135;&#30340;&#19981;&#21516;&#29256;&#26412;&#31574;&#30053;&#12290;<\/p><h3>&#36164;&#20135;&#21253;&#30340;&#23450;&#20041;<\/h3><p>&#22312;&#24744;&#30340;&#37197;&#32622;&#20013;&#65306;<\/p><pre><code>framework:\n    assets:\n        packages:\n            cdn_package:\n                base_urls: ['https:\/\/cdn.example.com']\n                version: '1.0'<\/code><\/pre><p>&#29616;&#22312;&#65292;&#35201;&#22312;Twig&#20013;&#20351;&#29992;&#36825;&#20010;&#21253;&#65306;<\/p><pre><code>&lt;img src=\"{{ asset('images\/logo.png', 'cdn_package') }}\" alt=\"MyLogo\"&gt;<\/code><\/pre><p>&#36825;&#20010;&#22270;&#20687;&#23558;&#22312;&#25351;&#23450;&#30340;&#21253;&#20013;&#21253;&#21547;&#30340;&#22522;URL&#21644;&#29256;&#26412;&#19979;&#21152;&#36733;&#12290;<\/p><h2>&#32467;&#35770;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#24744;&#24050;&#23398;&#20064;&#20102;&#22914;&#20309;&#22312;&#20351;&#29992;Symfony&#21644;Twig&#24320;&#21457;Web&#24212;&#29992;&#26102;&#38142;&#25509;&#21040;&#36164;&#20135;&#12290;&#25105;&#20204;&#24050;&#32463;&#28085;&#30422;&#20102;&#23433;&#35013;Asset&#32452;&#20214;&#20197;&#21450;&#20351;&#29992;&#23427;&#12290;<code>asset()<\/code>&#21151;&#33021;&#21253;&#25324;&#29256;&#26412;&#25511;&#21046;&#12289;&#32531;&#23384;&#30772;&#38500;&#20197;&#21450;&#25972;&#21512;Webpack Encore&#21644;&#32452;&#32455;&#36164;&#20135;&#20026;&#21253;&#12290;<\/p><p>&#29702;&#35299;&#24182;&#26377;&#25928;&#22320;&#23454;&#26045;&#36164;&#20135;&#31649;&#29702;&#23545;&#20110;&#20248;&#21270;Web&#24212;&#29992;&#33267;&#20851;&#37325;&#35201;&#12290;&#36890;&#36807;&#36825;&#20123;&#27493;&#39588;&#65292;&#24744;&#29616;&#22312;&#21487;&#20197;&#36731;&#26494;&#19988;&#20248;&#38597;&#22320;&#22312;Symfony&#39033;&#30446;&#20013;&#21253;&#25324;&#21644;&#31649;&#29702;&#36164;&#20135;&#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 &#21644; Twig &#26159;&#20004;&#31181;&#27969;&#34892;&#30340; PHP &#26694;&#26550;&#65292;&#29992;&#20110;&#26500;&#24314; Web &#24212;&#29992;&#31243;&#24207;&#12290;&#22312;&#36825;&#20123;&#26694;&#26550;&#20043;&#38388;&#36827;&#34892;&#25968;&#25454;&#20132;&#25442;&#26102;&#65292;&#25105;&#20204;&#38656;&#35201;&#30830;&#20445;&#21487;&#20197;&#35775;&#38382;&#21644;&#24341;&#29992;&#20854;&#20182;&#25991;&#20214;&#36164;&#28304;&#65288;&#22914; CSS &#25991;&#20214;&#12289;JavaScript &#25991;&#20214;&#12289;&#22270;&#20687;&#31561;&#65289;&#12290;&#19979;&#38754;&#26159;&#36890;&#36807; Symfony &#20013;&#30340; Assetic &#26381;&#21153;&#21644; Twig &#20013;&#30340; <code>@yield<\/code> &#26631;&#31614;&#26469;&#38142;&#25509;&#21040;&#36825;&#20123;&#36164;&#28304;&#30340;&#19968;&#33324;&#36807;&#31243;&#12290;<\/p>\n<h3>&#20351;&#29992; Assetic &#26381;&#21153;<\/h3>\n<ol>\n<li>\n<p><strong>&#23433;&#35013; Assetic<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#22312;&#39033;&#30446;&#20013;&#23433;&#35013; Assetic&#12290;&#20320;&#21487;&#20197;&#20351;&#29992; Composer &#26469;&#33258;&#21160;&#23436;&#25104;&#36825;&#19968;&#25805;&#20316;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require symfony\/assetic<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#37197;&#32622; Assetic<\/strong>&#65306;\n&#22312;&#39033;&#30446;&#30340; <code>config\/services.yaml<\/code> &#25991;&#20214;&#20013;&#37197;&#32622; Assetic &#26381;&#21153;&#65292;&#22914;&#19979;&#25152;&#31034;&#65306;<\/p>\n<pre><code class=\"language-yaml\">assetic:\n  bootstrap: ['@symfony\/assetic\/bootstrap']\n  version_path: '%kernel.root_dir%\/..\/var\/cache\/symfony\/assets\/'\n  cache: true\n  debug: false\n  strict_types: true\n  url_prefix: '\/assets'\n  css_directory: '%kernel.project_dir%\/Resources\/views\/assets\/css\/'\n  js_directory: '%kernel.project_dir%\/Resources\/views\/assets\/js\/'\n  images_directory: '%kernel.project_dir%\/Resources\/views\/assets\/images\/'\n  fonts_directory: '%kernel.project_dir%\/Resources\/views\/assets\/fonts\/'\n  public_url: 'http:\/\/your-server.com\/static\/assets\/'\n  debug_mode: true\n  max_files: 500\n  minify_css: true\n  minify_js: true\n  minify_images: true\n  minify_fonts: true<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992; Assetic<\/strong>&#65306;\n&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>views<\/code> &#30340;&#35270;&#22270;&#30446;&#24405;&#65292;&#24182;&#22312;&#20854;&#20013;&#21019;&#24314; <code>.css<\/code>, <code>.js<\/code>, <code>.png<\/code>, <code>.svg<\/code>, <code>.ttf<\/code> &#31561;&#31867;&#22411;&#30340;&#25991;&#20214;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026; <code>styles.css<\/code> &#30340;&#25991;&#20214;&#65292;&#21487;&#20197;&#22312;&#35270;&#22270;&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>styles.scss<\/code> &#30340;&#25991;&#20214;&#65292;&#28982;&#21518;&#23558; <code>styles.css<\/code> &#20869;&#23481;&#23548;&#20837; <code>styles.scss<\/code>&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#20351;&#29992; Assetic &#36755;&#20986;&#21040; Twig<\/strong>&#65306;\n&#22312;&#27169;&#26495;&#25991;&#20214;&#20013;&#20351;&#29992; <code>@yield<\/code> &#26631;&#31614;&#24341;&#29992; Assetic &#29983;&#25104;&#30340;&#36164;&#28304;&#25991;&#20214;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#35201;&#22312;&#27169;&#26495;&#20013;&#26174;&#31034;&#19968;&#20010; CSS &#25991;&#20214;&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#32534;&#20889;&#27169;&#26495;&#65306;<\/p>\n<pre><code class=\"language-html\">@yield('stylesheets')\n&lt;link rel=\"stylesheet\" href=\"{{ asset('\/stylesheets\/styles.css') }}\"&gt;<\/code><\/pre>\n<p>&#36825;&#37324;&#65292;<code>{{ asset('\/stylesheets\/styles.css') }}<\/code> &#34920;&#31034; Assetic &#20026;&#27169;&#26495;&#29983;&#25104;&#30340; CSS &#25991;&#20214;&#36335;&#24452;&#12290;<\/p>\n<\/li>\n<\/ol>\n<h3>&#20351;&#29992; Twig &#30340; @yield &#32467;&#26500;<\/h3>\n<ol>\n<li>\n<p><strong>&#23450;&#20041; @yield &#32467;&#26500;<\/strong>&#65306;\n&#22312;&#27169;&#26495;&#25991;&#20214;&#20013;&#65292;&#21487;&#20197;&#23450;&#20041;&#19968;&#20010;&#21464;&#37327;&#25110;&#34920;&#36798;&#24335;&#26469;&#33719;&#21462;&#29305;&#23450;&#30340;&#36164;&#28304;&#25991;&#20214;&#12290;&#20363;&#22914;&#65292;&#20551;&#35774;&#25105;&#20204;&#24076;&#26395;&#22312;&#27169;&#26495;&#20013;&#26174;&#31034;&#19968;&#20010;&#21517;&#20026; <code>styles.scss<\/code> &#30340;&#25991;&#20214;&#65292;&#25105;&#20204;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p>\n<pre><code class=\"language-html\">@yield('stylesheets', 'styles.scss')\n&lt;style&gt;\n   @import '~styles.scss';\n&lt;\/style&gt;<\/code><\/pre>\n<p>&#36825;&#37324;&#65292;<code>'styles.scss'<\/code> &#26159;&#35201;&#28210;&#26579;&#30340;&#26679;&#24335;&#34920;&#25991;&#20214;&#21517;&#65292;<code>~styles.scss<\/code> &#26159;&#19968;&#20010;&#30456;&#23545;&#36335;&#24452;&#65292;&#34920;&#31034;&#20174;&#24403;&#21069;&#27169;&#26495;&#24320;&#22987;&#26597;&#25214;&#26679;&#24335;&#34920;&#25991;&#20214;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#36755;&#20986;&#21040; twig<\/strong>&#65306;\n&#22312;&#27169;&#26495;&#25991;&#20214;&#20013;&#20351;&#29992; <code>@yield<\/code> &#26631;&#31614;&#36755;&#20986;&#21040; Twig&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#24819;&#35201;&#22312;&#27169;&#26495;&#20013;&#26174;&#31034;&#19968;&#20010; CSS &#25991;&#20214;&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#32534;&#20889;&#27169;&#26495;&#65306;<\/p>\n<pre><code class=\"language-html\">@yield('stylesheets', 'styles.scss')\n&lt;style&gt;\n   @import '@stylesheets\/styles.scss';\n&lt;\/style&gt;<\/code><\/pre>\n<p>&#36825;&#37324;&#65292;<code>'styles.scss'<\/code> &#26159;&#35201;&#28210;&#26579;&#30340;&#26679;&#24335;&#34920;&#25991;&#20214;&#21517;&#65292;<code>@stylesheets\/styles.scss<\/code> &#26159;&#19968;&#20010;&#32477;&#23545;&#36335;&#24452;&#65292;&#34920;&#31034;&#20174;&#24403;&#21069;&#27169;&#26495;&#24320;&#22987;&#26597;&#25214;&#26679;&#24335;&#34920;&#25991;&#20214;&#12290;<\/p>\n<\/li>\n<\/ol>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppViews;\n\nuse SymfonyComponentRoutingAnnotationRoute;\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\n\nclass MyController extends AbstractController\n{\n    \/**\n     * @Route(\"\/styles\", name=\"styles\")\n     *\/\n    public function styles()\n    {\n        return $this-&gt;render('@myapp\/MyView.html.twig');\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>styles()<\/code> &#20989;&#25968;&#36820;&#22238;&#20102;&#19968;&#20010;&#27169;&#26495;&#25991;&#20214; <code>MyView.html.twig<\/code>&#65292;&#35813;&#27169;&#26495;&#23558;&#22312;&#27169;&#26495;&#24341;&#25806;&#20013;&#28210;&#26579;&#20986;&#23545;&#24212;&#30340; HTML &#32467;&#26524;&#12290;<\/p>\n<p>&#20197;&#19978;&#23601;&#26159;&#22312; Symfony &#20013;&#20351;&#29992; Assetic &#21644; Twig &#26469;&#38142;&#25509;&#21040;&#36164;&#20135;&#25991;&#20214;&#30340;&#26041;&#27861;&#12290;&#36825;&#31181;&#26041;&#27861;&#20801;&#35768;&#20320;&#22312;&#24212;&#29992;&#31243;&#24207;&#30340;&#19981;&#21516;&#37096;&#20998;&#20849;&#20139;&#21644;&#37325;&#29992;&#26679;&#24335;&#34920;&#12289;&#33050;&#26412;&#21644;&#20854;&#20182;&#36164;&#28304;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312;Symfony&#21644;Twig&#20013;&#65292;&#38142;&#25509;&#21040;&#36164;&#20135;&#25991;&#20214;&#65288;&#22914;CSS&#12289;JavaSc..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1073","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\/1073","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=1073"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1073"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1073"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1073"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}