{"id":1049,"date":"2025-06-12T11:27:21","date_gmt":"2025-06-12T03:27:21","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1049.html"},"modified":"2025-06-12T11:27:21","modified_gmt":"2025-06-12T03:27:21","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8symfony%e4%b8%ad%e6%b7%bb%e5%8a%a0%e5%8f%af%e9%80%89%e7%9a%84%e8%b7%af%e7%94%b1%e5%8f%82%e6%95%b0","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1049.html","title":{"rendered":"\u5982\u4f55\u5728Symfony\u4e2d\u6dfb\u52a0\u53ef\u9009\u7684\u8def\u7531\u53c2\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 &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#37197;&#32622;&#36335;&#30001;&#26469;&#28155;&#21152;&#21487;&#36873;&#30340;&#36335;&#30001;&#21442;&#25968;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#23454;&#29616;&#36825;&#19968;&#28857;&#30340;&#35814;&#32454;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#21019;&#24314;&#25511;&#21046;&#22120;&#26041;&#27861;<\/strong>&#65306;\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#22312;&#19968;&#20010;&#25511;&#21046;&#22120;&#26041;&#27861;&#20013;&#22788;&#29702;&#24102;&#26377;&#21487;&#36873;&#36335;&#30001;&#21442;&#25968;&#30340;&#35831;&#27714;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ src\/Controller\/DefaultController.php\n\nnamespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentRoutingAnnotationRoute;\n\nclass DefaultController extends AbstractController\n{\n   \/**\n    * @Route(\"\/example\/{param?}\")\n    *\/\n   public function exampleAction(Request $request, string $param = 'default')\n   {\n       return $this-&gt;render('default\/example.html.twig', [\n           'param' =&gt; $param,\n       ]);\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#27169;&#26495;&#25991;&#20214;<\/strong>&#65306;\n&#28982;&#21518;&#65292;&#20320;&#38656;&#35201;&#20026;&#36825;&#20010;&#25511;&#21046;&#22120;&#26041;&#27861;&#21019;&#24314;&#19968;&#20010;&#27169;&#26495;&#25991;&#20214;&#12290;<\/p>\n<pre><code class=\"language-twig\">&lt;!-- templates\/default\/example.html.twig --&gt;\n\n&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n   &lt;title&gt;Example Page&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n   &lt;h1&gt;Welcome to the Example Page!&lt;\/h1&gt;\n   &lt;p&gt;The parameter you provided is: {{ param }}&lt;\/p&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#36816;&#34892;&#24212;&#29992;<\/strong>&#65306;\n&#26368;&#21518;&#65292;&#21551;&#21160;&#20320;&#30340; Symfony &#24212;&#29992;&#24182;&#35775;&#38382;&#30456;&#24212;&#30340; URL &#26469;&#27979;&#35797;&#21487;&#36873;&#36335;&#30001;&#21442;&#25968;&#30340;&#21151;&#33021;&#12290;<\/p>\n<pre><code class=\"language-bash\">php bin\/console server:run<\/code><\/pre>\n<p>&#35775;&#38382; <code>http:\/\/localhost:8000\/example<\/code> &#26102;&#65292;&#40664;&#35748;&#30340; <code>param<\/code> &#20540;&#26159; <code>'default'<\/code>&#12290;&#35775;&#38382; <code>http:\/\/localhost:8000\/example\/some-value<\/code> &#26102;&#65292;<code>param<\/code> &#30340;&#20540;&#23558;&#26159; <code>'some-value'<\/code>&#12290;<\/p>\n<\/li>\n<\/ol>\n<h3>&#31034;&#20363;&#20195;&#30721;&#30456;&#20851;&#27493;&#39588;<\/h3>\n<p>&#22914;&#26524;&#20320;&#24819;&#35201;&#26356;&#22797;&#26434;&#30340;&#36923;&#36753;&#22788;&#29702;&#21487;&#36873;&#36335;&#30001;&#21442;&#25968;&#65292;&#21487;&#20197;&#22312;&#25511;&#21046;&#22120;&#26041;&#27861;&#20013;&#20351;&#29992;&#26465;&#20214;&#35821;&#21477;&#25110;&#20381;&#36182;&#27880;&#20837;&#23481;&#22120;&#12290;<\/p>\n<pre><code class=\"language-php\">\/\/ src\/Controller\/DefaultController.php\n\nnamespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentRoutingAnnotationRoute;\n\nclass DefaultController extends AbstractController\n{\n    \/**\n     * @Route(\"\/example\/{param?}\")\n     *\/\n    public function exampleAction(Request $request, string $param = 'default')\n    {\n        if ($param === null) {\n            $param = 'default';\n        }\n\n        \/\/ &#22788;&#29702;&#21487;&#36873;&#21442;&#25968;&#30340;&#19994;&#21153;&#36923;&#36753;\n        $result = $this-&gt;handleParam($param);\n\n        return $this-&gt;render('default\/example.html.twig', [\n            'param' =&gt; $param,\n            'result' =&gt; $result,\n        ]);\n    }\n\n    private function handleParam(string $param)\n    {\n        \/\/ &#27169;&#25311;&#19968;&#20123;&#19994;&#21153;&#36923;&#36753;\n        if ($param === 'error') {\n            throw new Exception(\"Invalid parameter\");\n        } else {\n            return \"Processed value for param: $param\";\n        }\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#22914;&#26524; <code>param<\/code> &#26159; <code>null<\/code>&#65292;&#21017;&#40664;&#35748;&#35774;&#32622;&#20026; <code>'default'<\/code>&#12290;&#28982;&#21518;&#65292;&#25105;&#20204;&#35843;&#29992; <code>handleParam<\/code> &#26041;&#27861;&#36827;&#34892;&#23454;&#38469;&#30340;&#19994;&#21153;&#36923;&#36753;&#22788;&#29702;&#65292;&#24182;&#23558;&#32467;&#26524;&#20256;&#36882;&#21040;&#27169;&#26495;&#20013;&#12290;&#36825;&#26679;&#21487;&#20197;&#30830;&#20445;&#21363;&#20351;&#27809;&#26377;&#25552;&#20379;&#21442;&#25968;&#65292;&#20063;&#21487;&#20197;&#26377;&#40664;&#35748;&#34892;&#20026;&#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&#21019;&#24314;Web&#24212;&#29992;&#31243;&#24207;&#26102;&#65292;&#36335;&#30001;&#22312;&#23450;&#20041;HTTP&#35831;&#27714;&#22914;&#20309;&#22788;&#29702;&#26041;&#38754;&#36215;&#30528;&#33267;&#20851;&#37325;&#35201;&#30340;&#20316;&#29992;&#12290;Symfony&#25552;&#20379;&#20102;&#19968;&#20010;&#39640;&#24230;&#28789;&#27963;&#30340;&#36335;&#30001;&#31995;&#32479;&#65292;&#20801;&#35768;&#24320;&#21457;&#20154;&#21592;&#25351;&#23450;URL&#19982;&#25511;&#21046;&#22120;&#21160;&#20316;&#20043;&#38388;&#30340;&#26144;&#23556;&#26041;&#24335;&#12290;&#22312;&#36825;&#31687;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#35752;&#22914;&#20309;&#22312;Symfony&#20013;&#28155;&#21152;&#21487;&#36873;&#30340;&#36335;&#30001;&#21442;&#25968;&#65292;&#20805;&#20998;&#21033;&#29992;&#26694;&#26550;&#30340;&#33021;&#21147;&#26469;&#21019;&#24314;&#21160;&#24577;&#19988;&#28789;&#27963;&#30340;Web&#24212;&#29992;&#12290;<\/p><h3>&#29702;&#35299;&#21487;&#36873;&#30340;&#36335;&#30001;&#21442;&#25968;<\/h3><p>&#22312;Symfony&#20013;&#65292;&#36335;&#30001;&#21305;&#37197;&#29305;&#23450;&#30340;URL&#20197;&#25191;&#34892;&#30456;&#24212;&#30340;&#25511;&#21046;&#22120;&#21160;&#20316;&#12290;&#26631;&#20934;&#36335;&#30001;&#20855;&#26377;&#22266;&#23450;&#30340;&#27169;&#24335;&#65292;&#32780;&#21160;&#24577;&#36335;&#30001;&#21017;&#21487;&#20197;&#26681;&#25454;&#25552;&#20379;&#30340;&#21442;&#25968;&#36827;&#34892;&#26356;&#25913;&#12290;&#21487;&#36873;&#30340;&#36335;&#30001;&#21442;&#25968;&#23588;&#20854;&#26377;&#29992;&#65292;&#22240;&#20026;&#23427;&#20204;&#20801;&#35768;&#21333;&#20010;&#36335;&#30001;&#19982;&#22810;&#20010;URL&#27169;&#24335;&#21305;&#37197;&#65292;&#25110;&#32773;&#21363;&#20351;&#26576;&#20123;&#21442;&#25968;&#19981;&#23384;&#22312;&#20063;&#21487;&#20197;&#12290;<\/p><h2>&#23450;&#20041;&#21487;&#36873;&#21442;&#25968;<\/h2><p>&#35753;&#25105;&#20204;&#20174;&#23450;&#20041;&#19968;&#20010;&#20855;&#26377;&#21487;&#36873;&#21442;&#25968;&#30340;&#31616;&#21333;&#36335;&#30001;&#24320;&#22987;&#21543;&#12290;&#20320;&#38656;&#35201;&#22312;Symfony&#20013;&#25351;&#23450;&#20320;&#30340;&#36335;&#30001;&#12290;<code>config\/routes.yaml<\/code>&#22312;&#27880;&#35299;&#26684;&#24335;&#19979;&#65292;&#25991;&#20214;&#25110;&#19982;&#25511;&#21046;&#22120;&#19968;&#36215;&#12290;<\/p><pre><code>use SymfonyComponentRoutingAnnotationRoute;\n\nclass ProductController\n{\n    \/**\n     * @Route(\"\/products\/{category}\/{page?}\", name=\"product_list\", defaults={\"page\": 1})\n     * \n     * @param string $category\n     * @param int $page\n     * \n     * @return Response\n     *\/\n    public function list(string $category, int $page = 1): Response\n    {\n        \/\/ ... Controller logic ...\n    }\n}\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#31034;&#20363;&#20013;&#65292;&#25105;&#20204;&#26377;&#19968;&#20010;&#31216;&#20026;&#30340;&#21442;&#25968;&#12290;<code>category<\/code>Which one is mandatory, and a parameter called?<code>page<\/code>&#36825;&#26159;&#21487;&#36873;&#30340;&#12290;&#21487;&#36873;&#21442;&#25968;&#29992;&#19979;&#21010;&#32447;&#34920;&#31034;&#12290;<code>?<\/code>after<code>{page}<\/code>&#22312;&#36335;&#30001;&#27880;&#35299;&#30340;defaults&#36873;&#39033;&#20013;&#35774;&#32622;&#20102;&#40664;&#35748;&#20540;&#12290;<\/p><h2>&#22312;Twig&#20013;&#20351;&#29992;&#21487;&#36873;&#21442;&#25968;<\/h2><p>&#22788;&#29702;Twig&#27169;&#26495;&#20013;&#30340;&#21487;&#36873;&#36335;&#30001;&#21442;&#25968;&#28041;&#21450;&#20351;&#29992;path&#20989;&#25968;&#29983;&#25104;&#21040;&#36335;&#30001;&#30340;URL&#12290;&#36825;&#37324;&#26159;&#22914;&#20309;&#20351;&#29992;&#25105;&#20204;&#30340;&#21487;&#36873;&#39029;&#38754;&#21442;&#25968;&#30340;&#19968;&#20010;&#31034;&#20363;&#65306;<\/p><pre><code>{{ path('product_list', {'category': 'electronics', 'page': 2}) }}<\/code><\/pre><p>&#22914;&#26524;&#24744;&#26377;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#65292;&#35831;&#25552;&#20379;&#20855;&#20307;&#20869;&#23481;&#65292;&#25105;&#20250;&#24110;&#24744;&#36827;&#34892;&#32763;&#35793;&#12290;<code>page<\/code>&#21442;&#25968;&#26410;&#20256;&#36882;&#65292;Symfony &#23558;&#20351;&#29992;&#23450;&#20041;&#22312;&#36335;&#30001;&#20013;&#30340;&#40664;&#35748;&#20540;&#12290;<\/p><h2>&#22797;&#26434;&#21487;&#36873;&#21442;&#25968;<\/h2><p>&#23545;&#20110;&#26356;&#22797;&#26434;&#30340;&#22330;&#26223;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#22522;&#20110;&#26465;&#20214;&#30340;&#21487;&#36873;&#21442;&#25968;&#12290;&#20363;&#22914;&#65306;<\/p><pre><code>\/**\n * @Route(\"\/search\/{term}\/{filter?}\/{page?}\", name=\"search_page\", requirements={\"page\"=\"d+\"}, defaults={\"page\": 1, \"filter\": \"all\"})\n *\/\npublic function search($term, $filter = 'all', $page = 1)\n{\n    \/\/ ... Controller logic ...\n}\n<\/code><\/pre><p>&#25105;&#20204;&#24050;&#32463;&#24341;&#20837;&#20102;&#19968;&#20010;&#26032;&#30340;&#21487;&#36873;&#21442;&#25968;&#12290;<code>filter<\/code>&#65292;&#20801;&#35768;&#26356;&#28789;&#27963;&#30340;URL&#27169;&#24335;&#12290;<code>requirements<\/code>&#36873;&#39033;&#20063;&#24341;&#20837;&#20102;&#38480;&#21046;&#30340;&#32422;&#26463;&#12290;<code>page<\/code>&#21442;&#25968;&#36716;&#25442;&#20026;&#25968;&#23383;&#20165;&#26174;&#31034;&#12290;<\/p><h2>&#26597;&#35810;&#21442;&#25968;&#19982;&#21487;&#36873;&#36335;&#30001;&#21442;&#25968;<\/h2><p>&#23427;&#26159;&#33267;&#20851;&#37325;&#35201;&#30340;&#65292;&#38656;&#35201;&#21306;&#20998;&#26597;&#35810;&#21442;&#25968;&#65288;&#22312;&#21518;&#32512;&#20110;URL&#20043;&#21518;&#65289;&#12290;<code>?<\/code>&#22312;URL) &#21644;&#21487;&#36873;&#30340;&#36335;&#30001;&#21442;&#25968;&#12290;Symfony&#36335;&#30001;&#22120;&#23545;&#27492;&#26377;&#19981;&#21516;&#30340;&#22788;&#29702;&#26041;&#24335;&#65292;&#20854;&#20013;&#21487;&#36873;&#30340;&#36335;&#30001;&#21442;&#25968;&#34987;&#35270;&#20026;&#36335;&#30001;&#36335;&#24452;&#30340;&#19968;&#37096;&#20998;&#65292;&#32780;&#26597;&#35810;&#21442;&#25968;&#21017;&#19981;&#34987;&#35270;&#20026;&#36335;&#30001;&#36335;&#24452;&#30340;&#19968;&#37096;&#20998;&#12290;<\/p><p>&#20363;&#22914;&#65306;<\/p><pre><code>use SymfonyComponentHttpFoundationRequest;\n\n\/**\n * @Route(\"\/item\/{id}\", name=\"item_view\")\n *\/\npublic function viewItem(Request $request, $id)\n{\n    $color = $request-&gt;query-&gt;get('color', 'blue');\n    \/\/ The 'color' is a query parameter and has a default value of 'blue'\n}\n<\/code><\/pre><h2>&#33258;&#23450;&#20041;&#21442;&#25968;&#36716;&#25442;&#22120;<\/h2><p>&#26377;&#26102;&#65292;&#24744;&#21487;&#33021;&#24076;&#26395;&#33258;&#21160;&#23558;&#21487;&#36873;&#21442;&#25968;&#36716;&#25442;&#20026;&#29305;&#23450;&#23545;&#35937;&#12290;&#21487;&#20197;&#36890;&#36807;&#20351;&#29992;ParamConverters&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#12290;&#22914;&#19979;&#25152;&#31034;&#65306;<\/p><pre><code>use SensioBundleFrameworkExtraBundleConfigurationParamConverter;\n\nclass ProductController\n{\n    \/**\n     * @Route(\"\/products\/{id}\", name=\"product_show\")\n     * @ParamConverter(\"product\", class=\"AppEntityProduct\")\n     *\/\n    public function show(Product $product = null)\n    {\n        \/\/ ...\n    }\n}\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;&#30340;<code>id<\/code>&#21442;&#25968;&#21487;&#36873;&#22320;&#36716;&#25442;&#20026;&#20135;&#21697;&#23454;&#20307;&#12290;&#21363;&#20351;&#22914;&#27492;&#65292;&#36335;&#30001;&#20173;&#20250;&#21305;&#37197;&#12290;<code>id<\/code>&#27809;&#26377;&#25552;&#20379;&#65292;&#22240;&#27492;&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;<code>$product<\/code>&#23558;&#20250;<code>null<\/code>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#20171;&#32461;&#20102;&#22914;&#20309;&#22788;&#29702;Symfony&#20013;&#30340;&#21487;&#36873;&#36335;&#30001;&#21442;&#25968;&#65292;&#36825;&#23545;&#20110;&#21019;&#24314;&#28789;&#27963;&#30340;&#36335;&#30001;&#33267;&#20851;&#37325;&#35201;&#12290;&#25105;&#20204;&#30475;&#21040;&#20102;&#40664;&#35748;&#20540;&#21644;&#35201;&#27714;&#26159;&#22914;&#20309;&#35774;&#32622;&#30340;&#65292;&#20197;&#21450;&#22914;&#20309;&#23558;&#36825;&#20123;&#21487;&#36873;&#21442;&#25968;&#25972;&#21512;&#21040;Twig&#27169;&#26495;&#25110;&#25511;&#21046;&#22120;&#20013;&#12290;&#29702;&#35299;&#36825;&#20123;&#27010;&#24565;&#26377;&#21161;&#20110;&#26500;&#24314;&#36866;&#29992;&#20110;&#24744;Symfony&#24212;&#29992;&#31243;&#24207;&#30340;&#39640;&#25928;&#19988;&#29992;&#25143;&#21451;&#22909;&#30340;URL&#32467;&#26500;&#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>&#22312; Symfony &#20013;&#65292;&#24744;&#21487;&#20197;&#36890;&#36807;&#23450;&#20041;&#33258;&#23450;&#20041;&#30340;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#23454;&#29616;&#21487;&#36873;&#30340;&#36335;&#30001;&#21442;&#25968;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312; Symfony &#30340;&#25511;&#21046;&#22120;&#20013;&#28155;&#21152;&#21487;&#36873;&#21442;&#25968;&#30340;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#31867;&#12290;<\/li>\n<li>&#22312;&#25511;&#21046;&#22120;&#31867;&#20013;&#23450;&#20041;&#19968;&#20010;&#26041;&#27861;&#65292;&#35813;&#26041;&#27861;&#25509;&#21463;&#25152;&#26377;&#24517;&#35201;&#30340;&#21442;&#25968;&#21644;&#21487;&#36873;&#21442;&#25968;&#20316;&#20026;&#21442;&#25968;&#12290;<\/li>\n<li>&#22914;&#26524;&#21487;&#36873;&#21442;&#25968;&#20026; <code>true<\/code>&#65292;&#21017;&#22312;&#26041;&#27861;&#20307;&#20013;&#20351;&#29992; <code>$request-&gt;query-&gt;has()<\/code> &#26041;&#27861;&#26816;&#26597;&#35831;&#27714;&#26159;&#21542;&#25658;&#24102;&#20102;&#36825;&#20010;&#21442;&#25968;&#12290;<\/li>\n<li>&#22914;&#26524;&#23384;&#22312;&#21487;&#36873;&#21442;&#25968;&#65292;&#21017;&#20174;&#35831;&#27714;&#23545;&#35937;&#20013;&#33719;&#21462;&#23427;&#65292;&#24182;&#23558;&#20854;&#20256;&#36882;&#32473;&#26041;&#27861;&#12290;<\/li>\n<\/ol>\n<p>&#19979;&#38754;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#20363;&#23376;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#22312;&#19968;&#20010;&#21517;&#20026; <code>MyController.php<\/code> &#30340;&#25991;&#20214;&#20013;&#28155;&#21152;&#21487;&#36873;&#21442;&#25968;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentRoutingAnnotationRoute;\n\nclass MyController extends AbstractController\n{\n    \/**\n     * @Route(\"\/myroute\", name=\"my_route\")\n     *\/\n    public function myAction(Request $request)\n    {\n        \/\/ &#33719;&#21462;&#25152;&#26377;&#24517;&#38656;&#30340;&#21442;&#25968;\n        $id = $request-&gt;attributes-&gt;get('id');\n\n        if ($request-&gt;query-&gt;has('param')) {\n            $paramValue = $request-&gt;query-&gt;get('param');\n        } else {\n            $paramValue = 'Default Value';\n        }\n\n        return $this-&gt;render('my_route.html.twig', [\n            'id' =&gt; $id,\n            'param_value' =&gt; $paramValue,\n        ]);\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026; <code>myAction<\/code> &#30340;&#26041;&#27861;&#65292;&#23427;&#25509;&#21463;&#20004;&#20010;&#21442;&#25968;&#65306;<code>$request<\/code> &#21644; <code>Request<\/code> &#31867;&#22411;&#30340;&#21464;&#37327;&#12290;&#28982;&#21518;&#65292;&#25105;&#20204;&#20351;&#29992; <code>request-&gt;query-&gt;has()<\/code> &#26816;&#26597;&#26159;&#21542;&#26377;&#21487;&#36873;&#21442;&#25968; <code>param<\/code> &#23384;&#22312;&#20110;&#35831;&#27714;&#20013;&#12290;&#22914;&#26524;&#23384;&#22312;&#65292;&#25105;&#20204;&#23601;&#20174;&#35831;&#27714;&#23545;&#35937;&#20013;&#33719;&#21462;&#23427;&#30340;&#20540;&#65307;&#21542;&#21017;&#65292;&#25105;&#20204;&#23558;&#40664;&#35748;&#20540;&#35774;&#32622;&#20026; <code>'Default Value'<\/code> &#24182;&#36820;&#22238;&#28210;&#26579;&#21518;&#30340;&#35270;&#22270;&#12290;<\/p>\n<p>&#22914;&#26524;&#24744;&#38656;&#35201;&#36827;&#19968;&#27493;&#30340;&#24110;&#21161;&#65292;&#35831;&#21578;&#35785;&#25105;&#26356;&#22810;&#20851;&#20110;&#24744;&#30340;&#20855;&#20307;&#38656;&#27714;&#25110;&#32773;&#36935;&#21040;&#30340;&#38382;&#39064;&#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 &#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#37197;&#32622;&#36335;&#30001;&#26469;&#28155;&#21152;&#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-1049","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\/1049","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=1049"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1049"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1049"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1049"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}