{"id":1145,"date":"2025-06-12T14:10:36","date_gmt":"2025-06-12T06:10:36","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1145.html"},"modified":"2025-06-12T14:10:36","modified_gmt":"2025-06-12T06:10:36","slug":"symfony%ef%bc%9a%e5%a6%82%e4%bd%95%e4%bb%8etwig%e6%a8%a1%e6%9d%bf%e8%b0%83%e7%94%a8php%e5%87%bd%e6%95%b0","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1145.html","title":{"rendered":"Symfony\uff1a\u5982\u4f55\u4eceTwig\u6a21\u677f\u8c03\u7528PHP\u51fd\u6570"},"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&#26694;&#26550;&#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#27493;&#39588;&#20174;Twig&#27169;&#26495;&#20013;&#35843;&#29992;PHP&#20989;&#25968;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#21019;&#24314;PHP&#20989;&#25968;<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#22312;&#20320;&#30340;&#39033;&#30446;&#20013;&#23450;&#20041;&#19968;&#20010;PHP&#20989;&#25968;&#12290;&#20551;&#35774;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026;<code>myFunction.php<\/code>&#30340;&#25991;&#20214;&#65292;&#24182;&#19988;&#23427;&#20301;&#20110;<code>app\/Controller<\/code>&#30446;&#24405;&#19979;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ app\/Controller\/myFunction.php\n&lt;?php\n\nfunction myFunction() {\n   return 'Hello from PHP!';\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#27880;&#20876;PHP&#20989;&#25968;&#21040;Twig&#29615;&#22659;<\/strong>&#65306;\n&#22312;&#20320;&#30340;&#25511;&#21046;&#22120;&#20013;&#65292;&#20320;&#38656;&#35201;&#23558;&#36825;&#20010;PHP&#20989;&#25968;&#27880;&#20876;&#21040;Twig&#29615;&#22659;&#20013;&#12290;&#36825;&#21487;&#20197;&#36890;&#36807;&#22312;&#25511;&#21046;&#22120;&#30340;&#26041;&#27861;&#20013;&#20351;&#29992;<code>$this-&gt;get('twig')-&gt;addGlobalFunction<\/code>&#26041;&#27861;&#26469;&#23454;&#29616;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ src\/AppBundle\/Controller\/DefaultController.php\nnamespace AppBundleController;\n\nuse SymfonyBundleFrameworkBundleControllerController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass DefaultController extends Controller\n{\n   public function indexAction()\n   {\n       $this-&gt;get('twig')-&gt;addGlobalFunction('myFunction', 'myFunction');\n\n       return $this-&gt;render('default\/index.html.twig');\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#22312;Twig&#27169;&#26495;&#20013;&#35843;&#29992;PHP&#20989;&#25968;<\/strong>&#65306;\n&#29616;&#22312;&#65292;&#20320;&#22312;Twig&#27169;&#26495;&#20013;&#23601;&#21487;&#20197;&#35843;&#29992;&#36825;&#20010;PHP&#20989;&#25968;&#20102;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#26377;&#19968;&#20010;&#21517;&#20026;<code>index.html.twig<\/code>&#30340;&#27169;&#26495;&#25991;&#20214;&#65292;&#20854;&#20013;&#21253;&#21547;&#20197;&#19979;&#20195;&#30721;&#65306;<\/p>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n   &lt;title&gt;Twig Function Example&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n   {{ myFunction() }}\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#24403;&#35775;&#38382;&#35813;&#39029;&#38754;&#26102;&#65292;&#23601;&#20250;&#26174;&#31034;<code>Hello from PHP!<\/code>&#12290;<\/p>\n<\/li>\n<\/ol>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<pre><code class=\"language-php\">\/\/ app\/Controller\/myFunction.php\n&lt;?php\n\nfunction myFunction() {\n    return 'Hello from PHP!';\n}\n\n\/\/ src\/AppBundle\/Controller\/DefaultController.php\nnamespace AppBundleController;\n\nuse SymfonyBundleFrameworkBundleControllerController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass DefaultController extends Controller\n{\n    public function indexAction()\n    {\n        $this-&gt;get('twig')-&gt;addGlobalFunction('myFunction', 'myFunction');\n\n        return $this-&gt;render('default\/index.html.twig');\n    }\n}<\/code><\/pre>\n<pre><code class=\"language-twig\">&lt;!-- app\/Resources\/views\/default\/index.html.twig --&gt;\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Twig Function Example&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    {{ myFunction() }}\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#36890;&#36807;&#36825;&#20123;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312;Symfony&#24212;&#29992;&#20013;&#25104;&#21151;&#22320;&#20174;Twig&#27169;&#26495;&#20013;&#35843;&#29992;PHP&#20989;&#25968;&#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>Symfony&#30340;Twig&#27169;&#26495;&#25552;&#20379;&#20102;&#19968;&#20010;&#24378;&#22823;&#30340;&#31995;&#32479;&#26469;&#20445;&#25345;&#28165;&#26224;&#30340;&#32844;&#36131;&#20998;&#31163;&#65292;&#26126;&#30830;&#21306;&#20998;&#36923;&#36753;&#23618;&#21644;&#34920;&#29616;&#23618;&#12290;&#28982;&#32780;&#65292;&#22312;&#26576;&#20123;&#26102;&#20505;&#65292;&#30452;&#25509;&#22312;Twig&#27169;&#26495;&#20013;&#35843;&#29992;PHP&#20989;&#25968;&#21487;&#33021;&#26159;&#24517;&#35201;&#30340;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#36890;&#36807;&#22522;&#26412;&#20351;&#29992;&#21040;&#26356;&#39640;&#32423;&#22330;&#26223;&#30340;&#36807;&#31243;&#65292;&#26292;&#38706;PHP&#20989;&#25968;&#21040;Twig&#12290;<\/p><p>&#22312;&#32487;&#32493;&#20043;&#21069;&#65292;&#24378;&#28872;&#24314;&#35758;&#36991;&#20813;&#22312;Twig&#27169;&#26495;&#20013;&#35843;&#29992;PHP&#20989;&#25968;&#65292;&#32780;&#24212;&#20248;&#20808;&#20351;&#29992;&#20869;&#32622;&#30340;Twig&#25193;&#23637;&#25110;&#36807;&#28388;&#22120;&#12290;&#36825;&#26679;&#20570;&#26377;&#21161;&#20110;&#20445;&#25345;&#24212;&#29992;&#30340;&#25972;&#27905;&#21644;&#21487;&#32500;&#25252;&#24615;&#12290;Symfony&#25552;&#20379;&#20102;&#19968;&#20010;&#21517;&#20026;&ldquo;Twig&#25193;&#23637;&rdquo;&#30340;&#35774;&#35745;&#27169;&#24335;&#65292;&#20801;&#35768;&#24744;&#25193;&#23637;Twig&#24182;&#21019;&#24314;&#33258;&#23450;&#20041;&#36807;&#28388;&#22120;&#21644;&#20989;&#25968;&#12290;<\/p><h2>&#21019;&#24314;&#19968;&#20010;&#22522;&#26412;&#30340;Twig&#25193;&#23637;<\/h2><p>&#26368;&#31616;&#21333;&#30340;&#26041;&#27861;&#26159;&#22312;Twig&#27169;&#26495;&#20013;&#35843;&#29992;PHP&#20989;&#25968;&#26159;&#21019;&#24314;&#19968;&#20010;Twig&#25193;&#23637;&#26469;&#23553;&#35013;&#35813;&#20989;&#25968;&#12290;&#20197;&#19979;&#26159;&#20351;&#29992;Symfony&#21019;&#24314;&#22522;&#26412;&#30340;Twig&#25193;&#23637;&#30340;&#31034;&#20363;&#65306;<\/p><pre><code>\/\/ src\/Twig\/AppExtension.php\nnamespace AppTwig;\n\nuse TwigExtensionAbstractExtension;\nuse TwigTwigFunction;\n\nclass AppExtension extends AbstractExtension\n{\n    public function getFunctions()\n    {\n        return [\n            new TwigFunction('my_function', [this, 'myFunction']),\n        ];\n    }\n\n    public function myFunction($value)\n    {\n        \/\/ Your PHP function code here\n        return 'Processed: '.$value;\n    }\n}\n<\/code><\/pre><p>&#22312;&#21019;&#24314;Twig&#25193;&#23637;&#21518;&#65292;&#23558;&#20854;&#27880;&#20876;&#20026;&#26381;&#21153;&#12290;<code>config\/services.yaml<\/code>&#65306;<\/p><pre><code>services:\n    AppTwigAppExtension:\n        tags:\n            - { name: 'twig.extension' }\n<\/code><\/pre><p>&#35201;&#22312;Twig&#27169;&#26495;&#20013;&#20351;&#29992;&#24744;&#30340;&#26032;&#21151;&#33021;&#65292;&#35831;&#20687;&#20351;&#29992;&#20219;&#20309;&#20854;&#20182;Twig&#20989;&#25968;&#19968;&#26679;&#35843;&#29992;&#23427;&#65306;<\/p><pre><code>{{ my_function('input') }}\n<\/code><\/pre><p>&#35813;&#34892;&#21160;&#30340;&#32467;&#26524;&#23558;&#26159;<code>Processed: input<\/code>&#22312;&#27169;&#26495;&#20013;&#26174;&#31034;&#12290;<\/p><h2>&#26292;&#38706;&#20869;&#32622;&#30340;PHP&#20989;&#25968;<\/h2><p>&#26377;&#26102;&#65292;&#24744;&#21487;&#33021;&#24076;&#26395;&#30452;&#25509;&#26292;&#38706;&#20869;&#32622;&#30340;PHP&#20989;&#25968;&#12290;Symfony&#20801;&#35768;&#24744;&#27880;&#20876;&#21487;&#20197;&#22312;&#20219;&#20309;Twig&#27169;&#26495;&#20013;&#35843;&#29992;&#30340;&#20840;&#23616;PHP&#20989;&#25968;&#12290;&#35201;&#20026;&#20840;&#23616;Twig&#20989;&#25968;&#28155;&#21152;&#21151;&#33021;&#65292;&#35831;&#22312;&#12290;<code>twig<\/code>&#20351;&#29992;&#37197;&#32622;<code>globals<\/code>: &#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code># config\/packages\/twig.yaml\ntwig:\n    globals:\n        my_strtolower: '@=function(\"strtolower\")'\n<\/code><\/pre><p>&#22312;&#20320;&#30340;Twig&#27169;&#26495;&#20013;&#65292;&#35813;&#20989;&#25968;&#21487;&#20197;&#20687;&#20219;&#20309;&#20840;&#23616;&#21464;&#37327;&#25110;&#20989;&#25968;&#19968;&#26679;&#20351;&#29992;&#65306;<\/p><pre><code>{{ my_strtolower('UPPERCASE') }}\n<\/code><\/pre><p>&#36825;&#23558;&#22312;&#27169;&#26495;&#20013;&#36755;&#20986;&ldquo;&#22823;&#20889;&rdquo;&#12290;<\/p><h2>&#20351;&#29992;PHP&#20989;&#25968;&#20316;&#20026;&#36807;&#28388;&#22120;<\/h2><p>&#24403;&#28982;&#65292;&#20320;&#21487;&#20197;&#23558;PHP&#20989;&#25968;&#26292;&#38706;&#20026;Twig&#36807;&#28388;&#22120;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#24819;&#25552;&#20379;&#19968;&#20010;&#21517;&#20026;foo&#30340;&#36807;&#28388;&#22120;&#65292;&#21487;&#20197;&#36825;&#26679;&#20889;&#65306;\n{% set my_var = &#8216;Hello, World!&#8217; %}\n{{ my_var | foo }}\n&#36825;&#23558;&#22312;&#27169;&#26495;&#20013;&#20351;&#29992;foo()&#20989;&#25968;&#26469;&#22788;&#29702;&#21464;&#37327;my_var&#20013;&#30340;&#20540;&#12290;<code>strip_tags<\/code>&#22312;Twig&#25193;&#23637;&#20869;&#37096;&#23450;&#20041;PHP&#20989;&#25968;&#20316;&#20026;&#36807;&#28388;&#22120;&#65292;&#21487;&#20197;&#25353;&#29031;&#20197;&#19979;&#26041;&#24335;&#23454;&#29616;&#65306;<\/p><pre><code>\/\/ src\/Twig\/AppExtension.php\n \/\/ ... existing code ...\n\nclass AppExtension extends AbstractExtension\n{\n    \/\/ ... existing code ...\n\n    public function getFilters()\n    {\n        return [\n            new TwigFilter('strip_tags', 'strip_tags'),\n        ];\n    }\n}\n<\/code><\/pre><p>&#22312;&#27169;&#26495;&#20013;&#24212;&#29992;&#27492;&#36807;&#28388;&#22120;&#65292;&#20320;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p><pre><code>{{ 'Some &lt;strong&gt;content&lt;\/strong&gt;'|strip_tags }}\n<\/code><\/pre><p>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<code>Some content<\/code>&#26080;&#26631;&#31614;&#12290;<\/p><h2>&#39640;&#32423;&#29992;&#20363;<\/h2><p>&#22312;&#26356;&#39640;&#32423;&#30340;&#22330;&#26223;&#19979;&#65292;&#24744;&#21487;&#33021;&#20250;&#26377;&#19968;&#20010;&#38656;&#35201;&#35775;&#38382;&#26381;&#21153;&#23481;&#22120;&#30340;PHP&#20989;&#25968;&#12290;&#20026;&#20102;&#23454;&#29616;&#36825;&#19968;&#28857;&#65292;&#24744;&#23558;&#22312;Twig&#25193;&#23637;&#20013;&#27880;&#20837;&#24517;&#35201;&#30340;&#26381;&#21153;&#12290;<\/p><pre><code>\/\/ src\/Twig\/AppExtension.php\n\/\/ ... existing code ...\n\nuse PsrContainerContainerInterface;\n\nclass AppExtension extends AbstractExtension\n{\n    private $container;\n    public function __construct(ContainerInterface $container)\n    {\n        $this-&gt;container = $container;\n    }\n\n    public function getFunctions()\n    {\n        return [\n            new TwigFunction('service_function', [this, 'serviceFunction']),\n        ];\n    }\n\n    public function serviceFunction(...$args)\n    {\n        $service = $this-&gt;container-&gt;get('my_service');\n        return $service-&gt;doSomething(...$args);\n    }\n}\n<\/code><\/pre><p>&#25105;&#20204;&#20063;&#38656;&#35201;&#35843;&#25972;&#26381;&#21153;&#22768;&#26126;&#65292;&#20197;&#20415;&#22312;&#25105;&#20204;&#30340;&#25193;&#23637;&#20013;&#27880;&#20837;&#23481;&#22120;&#65306;<\/p><pre><code># config\/services.yaml\nservices:\n    AppTwigAppExtension:\n        arguments: ['@service_container']\n        tags:\n            - { name: 'twig.extension' }\n<\/code><\/pre><p>&#22312;&#24744;&#30340;Twig&#27169;&#26495;&#20013;&#65292;&#21487;&#20197;&#20687;&#36825;&#26679;&#35843;&#29992;&#36825;&#20010;&#26032;&#20989;&#25968;&#65306;<\/p><pre><code>{{ service_function('param') }}<\/code><\/pre><p>&#36825;&#20250;&#23548;&#33268;&#36755;&#20986;&#30001;&hellip;&hellip;&#20915;&#23450;&#30340;&#12290;<code>'my_service'<\/code>&#26381;&#21153;&#24050;&#32463;&#23433;&#25490;&#22909;&#20102;&#12290;<code>doSomething<\/code>&#26041;&#27861;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#23613;&#31649;PHP&#20989;&#25968;&#21487;&#20197;&#20174;Symfony&#30340;Twig&#27169;&#26495;&#20013;&#35843;&#29992;&#65292;&#20294;&#36825;&#31181;&#20570;&#27861;&#22312;&#22823;&#22810;&#25968;&#24773;&#20917;&#19979;&#26368;&#20026;&#21512;&#36866;&#65292;&#21363;&#36825;&#20123;&#20989;&#25968;&#33021;&#22815;&#22686;&#24378;&#27169;&#26495;&#32780;&#19981;&#36829;&#21453;&#20854;&#32844;&#36131;&#12290;&#33258;&#23450;&#20041;&#30340;Twig&#25193;&#23637;&#12289;&#36807;&#28388;&#22120;&#21644;&#20840;&#23616;&#20989;&#25968;&#19981;&#20165;&#31616;&#21270;&#20102;&#27169;&#26495;&#65292;&#36824;&#32500;&#25252;&#20102;&#25972;&#27905;&#20195;&#30721;&#26550;&#26500;&#30340;&#26680;&#24515;&#35774;&#35745;&#21407;&#21017;&#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>&#35201;&#22312; Symfony &#20013;&#20351;&#29992; Twig &#27169;&#26495;&#24182;&#20174; PHP &#20989;&#25968;&#35843;&#29992;&#65292;&#20320;&#38656;&#35201;&#36981;&#24490;&#20197;&#19979;&#27493;&#39588;&#65306;<\/p>\n<h3>1. &#21019;&#24314;&#19968;&#20010; PHP &#25991;&#20214;<\/h3>\n<p>&#39318;&#20808;&#65292;&#21019;&#24314;&#19968;&#20010; PHP &#25991;&#20214;&#26469;&#22788;&#29702; twig &#27169;&#26495;&#20013;&#30340;&#25968;&#25454;&#21644;&#36923;&#36753;&#12290;&#20363;&#22914;&#65292;&#20551;&#35774;&#20320;&#24819;&#22312;&#27169;&#26495;&#20013;&#26174;&#31034;&#29992;&#25143;&#30340;&#20449;&#24687;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>show_user.php<\/code> &#30340;&#25991;&#20214;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\/\/ show_user.php\nfunction get_user($id) {\n    \/\/ &#22312;&#36825;&#37324;&#23454;&#29616;&#33719;&#21462;&#29992;&#25143;&#30340;&#36923;&#36753;\n}\n?&gt;<\/code><\/pre>\n<h3>2. &#20351;&#29992; Twig &#27169;&#26495;&#28210;&#26579; PHP &#25968;&#25454;<\/h3>\n<p>&#22312;&#20320;&#30340; Twig &#27169;&#26495;&#25991;&#20214;&#65288;&#22914; <code>app\/Resources\/views\/layout.html.twig<\/code>&#65289;&#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; <code>{{ }}<\/code> &#26631;&#31614;&#26469;&#28210;&#26579; PHP &#20989;&#25968;&#30340;&#32467;&#26524;&#12290;<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html xmlns=\"http:\/\/www.w3.org\/1999\/xhtml\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"utf-8\" \/&gt;\n    &lt;!-- Add any other HTML head elements you need --&gt;\n    &lt;title&gt;Page Title&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    {% for user in users %}\n        &lt;div class=\"user\"&gt;\n            &lt;h2&gt;{{ user.name }}&lt;\/h2&gt;\n            &lt;p&gt;{{ user.email }}&lt;\/p&gt;\n            &lt;a href=\"{{ user.profile_url }}\"&gt;Profile&lt;\/a&gt;\n        &lt;\/div&gt;\n    {% endfor %}\n    &lt;script src=\"\/path\/to\/js\/app.js\"&gt;&lt;\/script&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#20351;&#29992;&#20102; <code>{% for %}<\/code> &#21644; <code>{% endfor %}<\/code> &#26469;&#36941;&#21382;&#25968;&#32452;&#65292;&#24182;&#36890;&#36807; <code>{{ user.name }}<\/code> &#21644; <code>{{ user.email }}<\/code> &#26174;&#31034;&#29992;&#25143;&#30340;&#21517;&#23383;&#21644;&#30005;&#23376;&#37038;&#20214;&#12290;<\/p>\n<h3>3. &#32534;&#35793; PHP &#33050;&#26412;&#20026; HTML<\/h3>\n<p>&#20026;&#20102;&#30830;&#20445;&#22312;&#29983;&#20135;&#29615;&#22659;&#20013;&#21487;&#20197;&#27491;&#30830;&#22320;&#36816;&#34892;&#33050;&#26412;&#65292;&#38656;&#35201;&#23558; PHP &#33050;&#26412;&#32534;&#35793;&#25104; HTML&#12290;<\/p>\n<h4>&#20351;&#29992; PHP-FPM &#36816;&#34892; PHP &#33050;&#26412;<\/h4>\n<p>&#22914;&#26524;&#20320;&#30340;&#26381;&#21153;&#22120;&#25903;&#25345; PHP-FPM (FastCGI Process Manager)&#65292;&#37027;&#20040;&#20320;&#21487;&#20197;&#20351;&#29992;&#20197;&#19979;&#21629;&#20196;&#32534;&#35793; PHP &#33050;&#26412;&#20026; HTML&#12290;<\/p>\n<pre><code class=\"language-bash\">php-fpm -s \/path\/to\/php\/fpm\/php.ini -c \/path\/to\/php\/fpm\/php-fpm.conf<\/code><\/pre>\n<p>&#36825;&#23558;&#22312; <code>\/var\/www\/html<\/code> &#30446;&#24405;&#19979;&#29983;&#25104;&#30456;&#24212;&#30340; HTML &#25991;&#20214;&#12290;<\/p>\n<h3>4. &#20351;&#29992; Composer &#23433;&#35013; Symfony<\/h3>\n<p>&#30830;&#20445;&#20320;&#30340;&#39033;&#30446;&#24050;&#32463;&#23433;&#35013;&#20102; Symfony&#12290;&#22914;&#26524;&#26410;&#23433;&#35013;&#65292;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#21629;&#20196;&#36827;&#34892;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer require symfony\/symfony<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#28155;&#21152;&#25152;&#38656;&#30340;&#20381;&#36182;&#39033;&#21040; <code>composer.json<\/code> &#25991;&#20214;&#20013;&#12290;<\/p>\n<pre><code class=\"language-json\">{\n    \"require\": {\n        \"symfony\/framework-standard-edition\": \"^5.0\"\n    }\n}<\/code><\/pre>\n<h3>5. &#23558; PHP &#33050;&#26412;&#25918;&#32622;&#22312;&#27491;&#30830;&#30340;&#30446;&#24405;&#32467;&#26500;&#20013;<\/h3>\n<p>&#30830;&#20445;&#20320;&#30340; PHP &#33050;&#26412;&#20301;&#20110;&#24212;&#29992;&#31243;&#24207;&#30340;&#26681;&#30446;&#24405;&#19979;&#30340; <code>app\/<\/code> &#19979;&#12290;&#36825;&#26679;&#65292;&#23427;&#20204;&#23601;&#21487;&#20197;&#34987; Symfony &#35302;&#21457;&#24182;&#25191;&#34892;&#12290;<\/p>\n<h3>&#32467;&#35770;<\/h3>\n<p>&#20197;&#19978;&#23601;&#26159;&#22312; Symfony &#20013;&#20351;&#29992; Twig &#27169;&#26495;&#35843;&#29992; PHP &#20989;&#25968;&#30340;&#22522;&#26412;&#27493;&#39588;&#12290;&#36890;&#36807;&#36825;&#31181;&#26041;&#24335;&#65292;&#20320;&#21487;&#20197;&#21033;&#29992; PHP &#30340;&#28789;&#27963;&#24615;&#21644; Symfony &#30340;&#26131;&#29992;&#24615;&#26469;&#26500;&#24314;&#22797;&#26434;&#30340; Web &#24212;&#29992;&#31243;&#24207;&#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&#26694;&#26550;&#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#27493;&#39588;&#20174;Twig&#038;..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1145","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\/1145","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=1145"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1145"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1145"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1145"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}