{"id":1072,"date":"2025-06-12T12:02:56","date_gmt":"2025-06-12T04:02:56","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1072.html"},"modified":"2025-06-12T12:02:56","modified_gmt":"2025-06-12T04:02:56","slug":"symfony%ef%bc%9a%e5%9c%a8-twig-%e6%a8%a1%e6%9d%bf%e4%b8%ad%e4%bd%bf%e7%94%a8%e5%85%a8%e5%b1%80%e5%8f%98%e9%87%8f%ef%bc%884-%e7%a7%8d%e6%96%b9%e6%b3%95%ef%bc%89","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1072.html","title":{"rendered":"Symfony\uff1a\u5728 Twig \u6a21\u677f\u4e2d\u4f7f\u7528\u5168\u5c40\u53d8\u91cf\uff084 \u79cd\u65b9\u6cd5\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>&#22909;&#30340;&#65292;&#19979;&#38754;&#25105;&#23558;&#35814;&#32454;&#20171;&#32461;&#22914;&#20309;&#22312; Symfony &#20013;&#20351;&#29992; Twig &#27169;&#26495;&#20013;&#30340;&#20840;&#23616;&#21464;&#37327;&#12290;<\/p>\n<h3>1. &#20351;&#29992; <code>config.yaml<\/code> &#25991;&#20214;<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#22312; <code>config.yaml<\/code> &#25991;&#20214;&#20013;&#23450;&#20041;&#19968;&#20010;&#20840;&#23616;&#21464;&#37327;&#12290;&#20551;&#35774;&#20320;&#24819;&#22312;&#25152;&#26377;&#30340;&#27169;&#26495;&#20013;&#37117;&#20351;&#29992;&#19968;&#20010;&#21517;&#20026; <code>app_name<\/code> &#30340;&#20840;&#23616;&#21464;&#37327;&#12290;<\/p>\n<pre><code class=\"language-yaml\"># config\/packages\/framework.yaml\nframework:\n    parameters:\n        app_name: \"My Application\"<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#22312;&#20219;&#20309; Twig &#27169;&#26495;&#20013;&#37117;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#26041;&#24335;&#35775;&#38382;&#36825;&#20010;&#20840;&#23616;&#21464;&#37327;&#65306;<\/p>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{{ app_name }}&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Welcome to {{ app_name }}&lt;\/h1&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>2. &#22312;&#25511;&#21046;&#22120;&#20013;&#35774;&#32622;&#20840;&#23616;&#21464;&#37327;<\/h3>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#22312;&#25511;&#21046;&#22120;&#20013;&#35774;&#32622;&#20840;&#23616;&#21464;&#37327;&#65292;&#21487;&#20197;&#22312;&#25511;&#21046;&#22120;&#30340;&#26041;&#27861;&#20013;&#30452;&#25509;&#27880;&#20837;&#21442;&#25968;&#12290;<\/p>\n<pre><code class=\"language-php\">use SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass HomeController extends AbstractController\n{\n    public function index(): Response\n    {\n        $this-&gt;get('request_stack')-&gt;getSession()-&gt;set('app_name', 'My Application');\n\n        return $this-&gt;render('home\/index.html.twig');\n    }\n}<\/code><\/pre>\n<p>&#28982;&#21518;&#22312;&#27169;&#26495;&#20013;&#35775;&#38382;&#36825;&#20010;&#20840;&#23616;&#21464;&#37327;&#65306;<\/p>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{{ session.get('app_name') }}&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Welcome to {{ session.get('app_name') }}&lt;\/h1&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>3. &#22312;&#26381;&#21153;&#23481;&#22120;&#20013;&#27880;&#20876;&#20840;&#23616;&#21464;&#37327;<\/h3>\n<p>&#20320;&#20063;&#21487;&#20197;&#22312;&#26381;&#21153;&#23481;&#22120;&#20013;&#27880;&#20876;&#19968;&#20010;&#26381;&#21153;&#26469;&#25552;&#20379;&#20840;&#23616;&#21464;&#37327;&#12290;<\/p>\n<pre><code class=\"language-yaml\"># services.yaml\nservices:\n    my_app.global_variable:\n        class: AppServiceGlobalVariableService<\/code><\/pre>\n<p>&#28982;&#21518;&#22312;&#25511;&#21046;&#22120;&#20013;&#27880;&#20837;&#36825;&#20010;&#26381;&#21153;&#24182;&#35774;&#32622;&#20840;&#23616;&#21464;&#37327;&#65306;<\/p>\n<pre><code class=\"language-php\">use SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass HomeController extends AbstractController\n{\n    private $globalVariableService;\n\n    public function __construct(GlobalVariableService $globalVariableService)\n    {\n        $this-&gt;globalVariableService = $globalVariableService;\n    }\n\n    public function index(): Response\n    {\n        $this-&gt;globalVariableService-&gt;setAppName('My Application');\n\n        return $this-&gt;render('home\/index.html.twig');\n    }\n}<\/code><\/pre>\n<p>&#26368;&#21518;&#22312;&#27169;&#26495;&#20013;&#35775;&#38382;&#36825;&#20010;&#20840;&#23616;&#21464;&#37327;&#65306;<\/p>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{{ globalVariableService-&gt;getAppName() }}&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Welcome to {{ globalVariableService-&gt;getAppName() }}&lt;\/h1&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>4. &#22312;&#29615;&#22659;&#37197;&#32622;&#25991;&#20214;&#20013;&#35774;&#32622;&#20840;&#23616;&#21464;&#37327;<\/h3>\n<p>&#20320;&#36824;&#21487;&#20197;&#22312;&#29615;&#22659;&#37197;&#32622;&#25991;&#20214;&#65288;&#22914; <code>.env<\/code> &#25110; <code>.env.dist<\/code>&#65289;&#20013;&#35774;&#32622;&#20840;&#23616;&#21464;&#37327;&#12290;<\/p>\n<pre><code class=\"language-dotenv\">APP_NAME=My Application<\/code><\/pre>\n<p>&#28982;&#21518;&#22312;&#25511;&#21046;&#22120;&#20013;&#35835;&#21462;&#36825;&#20010;&#29615;&#22659;&#21464;&#37327;&#65306;<\/p>\n<pre><code class=\"language-php\">use SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass HomeController extends AbstractController\n{\n    public function index(): Response\n    {\n        $appName = $_ENV['APP_NAME'];\n\n        return $this-&gt;render('home\/index.html.twig', ['app_name' =&gt; $appName]);\n    }\n}<\/code><\/pre>\n<p>&#26368;&#21518;&#22312;&#27169;&#26495;&#20013;&#35775;&#38382;&#36825;&#20010;&#20840;&#23616;&#21464;&#37327;&#65306;<\/p>\n<pre><code class=\"language-twig\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;{{ app_name }}&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Welcome to {{ app_name }}&lt;\/h1&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#20197;&#19978;&#23601;&#26159;&#20351;&#29992; Symfony &#20013; Twig &#27169;&#26495;&#20013;&#30340;&#20840;&#23616;&#21464;&#37327;&#30340;&#20960;&#31181;&#26041;&#27861;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#20855;&#20307;&#38656;&#27714;&#36873;&#25321;&#21512;&#36866;&#30340;&#26041;&#27861;&#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>&#22312;&#20351;&#29992;Symfony&#21644;Twig&#24320;&#21457;Web&#24212;&#29992;&#26102;&#65292;&#20320;&#21487;&#33021;&#20250;&#21457;&#29616;&#38656;&#35201;&#22312;&#25152;&#26377;&#27169;&#26495;&#20043;&#38388;&#35775;&#38382;&#26576;&#20123;&#25968;&#25454;&#25110;&#21464;&#37327;&#12290;Symfony&#30340;Twig&#27169;&#26495;&#25552;&#20379;&#20102;&#19968;&#31181;&#20248;&#38597;&#30340;&#26041;&#24335;&#26469;&#35774;&#32622;&#21644;&#20351;&#29992;&#20840;&#23616;&#21464;&#37327;&#65292;&#36825;&#21487;&#20197;&#25552;&#39640;&#20195;&#30721;&#30340;&#21487;&#37325;&#29992;&#24615;&#21644;&#20943;&#23569;&#20887;&#20313;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#35752;&#22312;Symfony&#39033;&#30446;&#20013;&#22914;&#20309;&#22312;Twig&#27169;&#26495;&#20013;&#36890;&#36807;&#19981;&#21516;&#26041;&#27861;&#20351;&#20840;&#23616;&#21464;&#37327;&#21464;&#24471;&#21487;&#29992;&#12290;<\/p><h3>&#29702;&#35299;&#20840;&#23616;&#21464;&#37327;&#12290;<\/h3><p>&#22312;Twig&#20013;&#65292;&#20840;&#23616;&#21464;&#37327;&#26159;&#25351;&#37027;&#20123;&#21487;&#20197;&#22312;&#25152;&#26377;Twig&#27169;&#26495;&#20013;&#20351;&#29992;&#32780;&#19981;&#24517;&#22312;&#28210;&#26579;&#36807;&#31243;&#20013;&#26174;&#24335;&#20256;&#36882;&#32473;&#27599;&#20010;&#27169;&#26495;&#30340;&#21464;&#37327;&#12290;&#36825;&#23545;&#20110;&#38656;&#35201;&#22312;&#25972;&#20010;&#24212;&#29992;&#31243;&#24207;&#20013;&#39057;&#32321;&#20351;&#29992;&#30340;&#25968;&#25454;&#29305;&#21035;&#26377;&#24110;&#21161;&#65292;&#27604;&#22914;&#29992;&#25143;&#20250;&#35805;&#20449;&#24687;&#12289;&#24212;&#29992;&#35774;&#32622;&#21644;&#24120;&#35265;&#30340;&#25968;&#25454;&#38656;&#27714;&#31561;&#12290;<\/p><h2>&#22312;Twig&#20013;&#20351;&#29992;&#20840;&#23616;&#21464;&#37327;<\/h2><h3>&#26041;&#27861; 1&#65306;&#22312; twig.yaml &#25991;&#20214;&#20013;&#37197;&#32622;&#20840;&#23616;&#21464;&#37327;<\/h3><p>&#26368;&#31616;&#21333;&#30340;&#26041;&#24335;&#26469;&#23450;&#20041;&#20840;&#23616;&#21464;&#37327;&#30340;&#26041;&#27861;&#23601;&#26159;&#20351;&#29992;&#20840;&#23616;&#21464;&#37327;&#12290;<code>twig.yaml<\/code>&#37197;&#32622;&#25991;&#20214;&#12290;&#36825;&#31181;&#26041;&#27861;&#36866;&#29992;&#20110;&#38745;&#24577;&#20540;&#25110;&#19981;&#32463;&#24120;&#21464;&#21270;&#30340;&#21442;&#25968;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65306;<\/p><pre><code>twig:\n    globals:\n        site_name: 'MyWebsite'\n<\/code><\/pre><p>&#19968;&#26086;&#23450;&#20041;&#22909;&#65292;&#20320;&#21487;&#20197;&#35775;&#38382;&#12290;<code>site_name<\/code>&#22312;&#20219;&#20309;Twig&#27169;&#26495;&#20013;&#65292;&#21464;&#37327;&#21487;&#20197;&#36825;&#26679;&#23450;&#20041;&#65306;<\/p><pre><code>&lt;h1&gt;Welcome to {{ site_name }}&lt;\/h1&gt;<\/code><\/pre><h3>&#26041;&#27861;2&#65306;&#22312;&#26381;&#21153;&#20013;&#21019;&#24314;&#20840;&#23616;&#21464;&#37327;<\/h3><p>&#22914;&#26524;&#38656;&#35201;&#19968;&#20010;&#26082;&#21160;&#24577;&#21448;&#20840;&#23616;&#30340;&#20840;&#23616;&#21464;&#37327;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#19968;&#20010;&#26381;&#21153;&#26469;&#23450;&#20041;&#36825;&#20010;&#20840;&#23616;&#21464;&#37327;&#12290;&#39318;&#20808;&#23450;&#20041;&#26381;&#21153;&#65306;<\/p><pre><code>\/\/ src\/Service\/GlobalVariables.php\n\nnamespace AppService;\n\nuse DoctrineORMEntityManagerInterface;\nuse AppEntityUser;\n\nclass GlobalVariables\n{\n    private $entityManager;\n\n    public function __construct(EntityManagerInterface $entityManager)\n    {\n        $this-&gt;entityManager = $entityManager;\n    }\n\n    public function getGlobalData()\n    {\n        \/\/ Fetch global data from the database\n        return [\n            'user_count' =&gt; $this-&gt;entityManager-&gt;getRepository(User::class)-&gt;count([]),\n        ];\n    }\n}\n<\/code><\/pre><p>&#25509;&#19979;&#26469;&#65292;&#20026;&#27599;&#27425;&#35831;&#27714;&#35843;&#29992;&#30456;&#24212;&#30340;&#26381;&#21153;&#65306;<\/p><pre><code>services:\n    AppServiceGlobalVariables:\n        arguments: ['@doctrine.orm.entity_manager']\n        tags:\n            - { name: 'twig.global' }\n<\/code><\/pre><p>&#22312;&#20320;&#30340;Twig&#27169;&#26495;&#20013;&#65292;&#29616;&#22312;&#21487;&#20197;&#35775;&#38382;<code>user_count<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>There are currently {{ global_var.getGlobalData()['user_count'] }} users.\n<\/code><\/pre><h3>&#26041;&#27861;3&#65306;&#25193;&#23637;Twig&#20197;&#21019;&#24314;&#20840;&#23616;&#20989;&#25968;<\/h3><p>&#23545;&#20110;&#26356;&#22797;&#26434;&#30340;&#38656;&#27714;&#25110;&#22686;&#24378;&#21487;&#35835;&#24615;&#65292;&#21487;&#20197;&#22312;Twig&#25193;&#23637;&#20013;&#23450;&#20041;&#33258;&#23450;&#20041;&#30340;Twig&#20989;&#25968;&#65292;&#36825;&#20123;&#20989;&#25968;&#20855;&#26377;&#35775;&#38382;&#20840;&#23616;&#21464;&#37327;&#30340;&#26435;&#38480;&#65306;<\/p><pre><code>\/\/ src\/Twig\/AppExtension.php\n\nnamespace AppTwig;\n\nuse TwigExtensionAbstractExtension;\nuse TwigTwigFunction;\n\nclass AppExtension extends AbstractExtension\n{\n    public function getFunctions()\n    {\n        return [\n            new TwigFunction('user_count', [$this, 'getUserCount']),\n        ];\n    }\n\n    public function getUserCount()\n    {\n        \/\/ Access the userRepository and return the user count\n    }\n}\n<\/code><\/pre><p>&#22312;&#20320;&#30340;Twig&#27169;&#26495;&#20013;&#65292;&#21482;&#38656;&#20351;&#29992;&#65306;<\/p><pre><code>&lt;div&gt;The number of registered users is {{ user_count() }}.&lt;\/div&gt;\n<\/code><\/pre><h3>&#26041;&#27861; 4&#65306;&#30417;&#21548;&#20869;&#26680;&#20107;&#20214;<\/h3><p>&#21478;&#19968;&#31181;&#20351;&#20840;&#23616;&#21464;&#37327;&#21487;&#29992;&#30340;&#26041;&#27861;&#26159;&#22312;&#30417;&#21548;Symfony&#30340;kernel&#20107;&#20214;&#26102;&#65292;&#20174;&#20107;&#20214;&#30417;&#21548;&#22120;&#25110;&#35746;&#38405;&#32773;&#22788;&#35774;&#32622;&#19968;&#20010;Twig&#20840;&#23616;&#12290;&#22914;&#26524;&#36825;&#20010;&#21464;&#37327;&#20381;&#36182;&#20110;&#35831;&#27714;&#25968;&#25454;&#30340;&#35805;&#65292;&#36825;&#26159;&#19968;&#20010;&#26041;&#20415;&#30340;&#26041;&#27861;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65306;<\/p><pre><code>\/\/ src\/EventListener\/BeforeControllerListener.php\n\nnamespace AppEventListener;\n\nuse SymfonyComponentHttpKernelEventControllerEvent;\nuse SymfonyComponentHttpKernelKernelEvents;\nuse SymfonyComponentEventDispatcherEventSubscriberInterface;\nuse TwigEnvironment;\n\nclass BeforeControllerListener implements EventSubscriberInterface\n{\n    private $twig;\n\n    public function __construct(Environment $twig)\n    {\n        $this-&gt;twig = $twig;\n    }\n\n    public function onKernelController(ControllerEvent $event)\n    {\n        $controller = $event-&gt;getController();\n        \/\/ Only act on some controllers...\n        $this-&gt;twig-&gt;addGlobal('controller_name', get_class($controller[0]));\n    }\n\n    public static function getSubscribedEvents()\n    {\n        return [KernelEvents::CONTROLLER =&gt; 'onKernelController'];\n    }\n}\n<\/code><\/pre><p>&#22312;Twig&#65306;<\/p><pre><code>&lt;p&gt;Current controller: {{ controller_name }}&lt;\/p&gt;<\/code><\/pre><h2>&#26368;&#20339;&#23454;&#36341;&#21644;&#32771;&#34385;&#22240;&#32032;<\/h2><p>&#34429;&#28982;&#20840;&#23616;&#21464;&#37327;&#21487;&#20197;&#38750;&#24120;&#26377;&#29992;&#65292;&#20294;&#23427;&#20204;&#24212;&#35813;&#35880;&#24910;&#20351;&#29992;&#20197;&#20445;&#25345;&#20851;&#27880;&#28857;&#28165;&#26224;&#65292;&#24182;&#36991;&#20813;&#19994;&#21153;&#36923;&#36753;&#19982;&#27169;&#26495;&#23618;&#20043;&#38388;&#30340;&#19981;&#24517;&#35201;&#30340;&#20381;&#36182;&#12290;&#27492;&#22806;&#65292;&#35831;&#35760;&#20303;&#20462;&#25913;&#20840;&#23616;&#21464;&#37327;&#34987;&#35270;&#20026;&#19981;&#33391;&#23454;&#36341;&#65292;&#22240;&#20026;&#23427;&#21487;&#33021;&#20250;&#24341;&#20837;&#38590;&#20197;&#36861;&#36394;&#30340;&#21103;&#20316;&#29992;&#24182;&#38477;&#20302;&#24212;&#29992;&#31243;&#24207;&#30340;&#21487;&#39044;&#27979;&#24615;&#12290;<\/p><p>&#24635;&#20043;&#65292;Symfony&#21644;Twig&#25552;&#20379;&#20102;&#23450;&#20041;&#21644;&#35775;&#38382;&#20840;&#23616;&#21464;&#37327;&#30340;&#22810;&#31181;&#26041;&#27861;&#65292;&#20351;&#24320;&#21457;&#20154;&#21592;&#21487;&#20197;&#26681;&#25454;&#38656;&#27714;&#36873;&#25321;&#26368;&#21512;&#36866;&#30340;&#23454;&#29616;&#26041;&#24335;&#12290;&#26080;&#35770;&#37319;&#29992;&#20309;&#31181;&#26041;&#27861;&#65292;&#22987;&#32456;&#35201;&#21162;&#21147;&#20445;&#25345;&#20195;&#30721;&#32467;&#26500;&#30340;&#25972;&#27905;&#21644;&#21487;&#32500;&#25252;&#24615;&#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>&#20320;&#22909;&#65281;&#24456;&#39640;&#20852;&#20026;&#20320;&#25552;&#20379;&#20851;&#20110;&#22914;&#20309;&#22312;Twig&#27169;&#26495;&#20013;&#20351;&#29992;&#20840;&#23616;&#21464;&#37327;&#30340;&#35814;&#32454;&#20449;&#24687;&#12290;&#22312;&#35768;&#22810;&#26694;&#26550;&#22914;Symfony&#21644;Laravel&#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#22810;&#31181;&#26041;&#24335;&#23450;&#20041;&#21644;&#20351;&#29992;&#20840;&#23616;&#21464;&#37327;&#12290;<\/p>\n<h3>&#26041;&#27861;&#19968;&#65306;&#20351;&#29992; $this<\/h3>\n<p>&#22312;&#22823;&#22810;&#25968;PHP&#29615;&#22659;&#20013;&#65292;&#21253;&#25324;Symforyn&#21644;Laravel&#65292;&#20320;&#21487;&#20197;&#30452;&#25509;&#20351;&#29992; <code>$this<\/code> &#20851;&#38190;&#23383;&#26469;&#35775;&#38382;&#24403;&#21069;&#23545;&#35937;&#12290;&#36825;&#31181;&#26041;&#27861;&#31616;&#21333;&#30452;&#35266;&#19988;&#26131;&#20110;&#29702;&#35299;&#12290;<\/p>\n<pre><code class=\"language-twig\">{% set myVar = 'Hello, World!' %}\n{{ myVar }}<\/code><\/pre>\n<h3>&#26041;&#27861;&#20108;&#65306;&#20351;&#29992; $_SESSION<\/h3>\n<p>&#22914;&#26524;&#20320;&#38656;&#35201;&#23558;&#25968;&#25454;&#23384;&#20648;&#22312;&#19968;&#20010;&#25345;&#20037;&#21270;&#30340;&#29615;&#22659;&#20013;&#65292;&#24182;&#19988;&#24076;&#26395;&#35813;&#25968;&#25454;&#21487;&#20197;&#22312;&#25972;&#20010;&#24212;&#29992;&#31243;&#24207;&#29983;&#21629;&#21608;&#26399;&#20869;&#34987;&#35775;&#38382;&#65292;&#37027;&#20040;&#21487;&#20197;&#32771;&#34385;&#20351;&#29992; <code>$_SESSION<\/code>&#12290;<\/p>\n<pre><code class=\"language-twig\">{% set sessionVar = 'Hello, from PHP!' %}\n{{ sessionVar }}<\/code><\/pre>\n<p>&#27880;&#24847;&#65306;<code>$_SESSION<\/code> &#20165;&#36866;&#29992;&#20110;PHP&#29615;&#22659;&#12290;<\/p>\n<h3>&#26041;&#27861;&#19977;&#65306;&#20351;&#29992; request &#25110; response<\/h3>\n<p>&#22914;&#26524;&#20320;&#30340;&#24212;&#29992;&#26159;&#22522;&#20110;HTTP&#30340;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; <code>request()<\/code> &#21644; <code>response()<\/code> &#26469;&#33719;&#21462;&#35831;&#27714;&#25110;&#21709;&#24212;&#25968;&#25454;&#12290;<\/p>\n<pre><code class=\"language-twig\">{% set reqVar = request('myVariable') %} \/\/ &#33719;&#21462;GET&#21442;&#25968;\n{% set respVar = response('myResponse') %} \/\/ &#33719;&#21462;&#21709;&#24212;&#22836;&#37096;<\/code><\/pre>\n<h3>&#26041;&#27861;&#22235;&#65306;&#20351;&#29992; Application Class<\/h3>\n<p>&#22914;&#26524;&#24212;&#29992;&#26159;&#19968;&#20010;&#31867;&#65292;&#32780;&#19981;&#26159;&#20989;&#25968;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; <code>get<\/code> &#26041;&#27861;&#26469;&#35775;&#38382;&#23454;&#20363;&#23646;&#24615;&#65306;<\/p>\n<pre><code class=\"language-twig\">{% set appVar = application()-&gt;get('myVariable') %}<\/code><\/pre>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>AppController.php<\/code> &#30340;&#25511;&#21046;&#22120;&#25991;&#20214;&#65292;&#23427;&#20855;&#26377;&#20197;&#19979;&#32467;&#26500;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass AppController extends AbstractController\n{\n    public function indexAction(Request $request): Response\n    {\n        \/\/ &#22312;&#36825;&#37324;&#20351;&#29992; $this &#25110; $_SESSION, request, or response\n        return new Response('Hello, World!');\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>indexAction<\/code> &#26159;&#25511;&#21046;&#22120;&#20013;&#30340;&#21807;&#19968;&#34892;&#20026;&#12290;&#24403;&#29992;&#25143;&#35775;&#38382; <code>\/app\/index<\/code> &#26102;&#65292;&#25511;&#21046;&#22120;&#20250;&#35302;&#21457;&#36825;&#20010;&#34892;&#20026;&#24182;&#36820;&#22238; &#8220;Hello, World!&#8221;&#12290;<\/p>\n<p>&#20197;&#19978;&#23601;&#26159;&#22312;Twig&#27169;&#26495;&#20013;&#20351;&#29992;&#20840;&#23616;&#21464;&#37327;&#30340;&#26041;&#27861;&#12290;&#24076;&#26395;&#36825;&#23545;&#20320;&#26377;&#25152;&#24110;&#21161;&#65281;&#22914;&#26524;&#26377;&#20219;&#20309;&#30097;&#38382;&#65292;&#35831;&#38543;&#26102;&#25552;&#38382;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22909;&#30340;&#65292;&#19979;&#38754;&#25105;&#23558;&#35814;&#32454;&#20171;&#32461;&#22914;&#20309;&#22312; Symfony &#20013;&#038;#2..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1072","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\/1072","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=1072"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1072"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1072"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1072"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}