{"id":1067,"date":"2025-06-12T11:52:22","date_gmt":"2025-06-12T03:52:22","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1067.html"},"modified":"2025-06-12T11:52:22","modified_gmt":"2025-06-12T03:52:22","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8symfony%e4%b8%ad%e8%ae%be%e7%bd%ae%e8%87%aa%e5%ae%9a%e4%b9%89%e7%8a%b6%e6%80%81%e7%a0%81%ef%bc%88%e5%90%ab%e7%a4%ba%e4%be%8b%ef%bc%89","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1067.html","title":{"rendered":"\u5982\u4f55\u5728Symfony\u4e2d\u8bbe\u7f6e\u81ea\u5b9a\u4e49\u72b6\u6001\u7801\uff08\u542b\u793a\u4f8b\uff09"},"content":{"rendered":"<div class=\"wp-block-columns p-0 border is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-columns px-4 py-3 border-bottom has-background is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\" style=\"background:linear-gradient(243deg,rgb(238,238,238) 0%,rgba(58,166,242,0.15) 100%)\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<div class=\"wp-block-group is-nowrap is-layout-flex wp-container-core-group-is-layout-6c531013 wp-block-group-is-layout-flex\">\r\n<figure class=\"wp-block-image size-thumbnail is-resized is-style-rounded is-style-rounded--1\"><img decoding=\"async\" src=\"https:\/\/www.zhaozhao123.cn\/myitems\/images\/sites16\/2025\/06\/dyA-1-400x300.jpg\" alt=\"Bug&#32534;&#35793;&#29422;\" class=\"wp-image-1842\" style=\"object-fit:cover;width:30px;height:30px\"><\/figure>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading my-0\" style=\"font-size:clamp(0.875rem, 0.875rem + ((1vw - 0.2rem) * 0.175), 1rem);\">Bug&#32534;&#35793;&#29422;<\/h2>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n\r\n\r\n\r\n<div class=\"wp-block-columns px-xl-5 px-4 py-xl-4 py-3 is-layout-flex wp-container-core-columns-is-layout-28f84493 wp-block-columns-is-layout-flex\">\r\n<div class=\"wp-block-column is-layout-flow wp-block-column-is-layout-flow\">\r\n<p>&#22312; Symfony &#20013;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#21487;&#20197;&#36890;&#36807;&#37197;&#32622;&#25991;&#20214; <code>config\/packages\/framework.yaml<\/code> &#26469;&#23454;&#29616;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;&#27493;&#39588;&#21644;&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<ol>\n<li>\n<p><strong>&#25171;&#24320; <code>config\/packages\/framework.yaml<\/code> &#25991;&#20214;<\/strong>&#65306;\n&#36825;&#20010;&#25991;&#20214;&#20301;&#20110;&#20320;&#30340; Symfony &#39033;&#30446;&#26681;&#30446;&#24405;&#19979;&#12290;<\/p>\n<\/li>\n<li>\n<p><strong>&#28155;&#21152;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#37197;&#32622;<\/strong>&#65306;\n&#22312; <code>framework.yaml<\/code> &#25991;&#20214;&#20013;&#65292;&#25214;&#21040; <code>http_foundation<\/code> &#37096;&#20998;&#65292;&#24182;&#28155;&#21152;&#20320;&#24819;&#35201;&#35774;&#32622;&#30340;&#29366;&#24577;&#30721;&#21450;&#20854;&#23545;&#24212;&#30340;&#21709;&#24212;&#20869;&#23481;&#12290;&#20363;&#22914;&#65306;<\/p>\n<pre><code class=\"language-yaml\">framework:\n   http_foundation:\n       custom_status_codes:\n           418: \"I'm a teapot\"\n           500: \"Internal Server Error\"<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#21019;&#24314;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#22788;&#29702;&#36825;&#20123;&#29366;&#24577;&#30721;<\/strong>&#65306;\n&#20320;&#38656;&#35201;&#21019;&#24314;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#22788;&#29702;&#36825;&#20123;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">\/\/ src\/Controller\/CustomStatusController.php\n\nnamespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass CustomStatusController extends AbstractController\n{\n   public function status418(): Response\n   {\n       return new Response('I'm a teapot', 418);\n   }\n\n   public function status500(): Response\n   {\n       return new Response('Internal Server Error', 500);\n   }\n}<\/code><\/pre>\n<\/li>\n<li>\n<p><strong>&#27979;&#35797;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;<\/strong>&#65306;\n&#29616;&#22312;&#20320;&#21487;&#20197;&#36890;&#36807;&#27983;&#35272;&#22120;&#35775;&#38382;&#36825;&#20123;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#27979;&#35797;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#26159;&#21542;&#29983;&#25928;&#12290;&#20363;&#22914;&#65292;&#22914;&#26524;&#20320;&#35774;&#32622;&#20102; <code>status418()<\/code> &#26041;&#27861;&#65292;&#37027;&#20040;&#20320;&#21487;&#20197;&#35775;&#38382; <code>\/custom-statuses\/418<\/code> &#26469;&#26597;&#30475;&#29366;&#24577;&#30721;&#20026; 418 &#30340;&#21709;&#24212;&#12290;<\/p>\n<\/li>\n<\/ol>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#21487;&#20197;&#22312; Symfony &#20013;&#25104;&#21151;&#22320;&#35774;&#32622;&#24182;&#20351;&#29992;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#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&#26500;&#24314;Web&#24212;&#29992;&#26102;&#65292;&#25105;&#20204;&#25317;&#26377;&#19968;&#39033;&#24378;&#22823;&#30340;&#21151;&#33021;&mdash;&mdash;&#25511;&#21046;HTTP&#21709;&#24212;&#29366;&#24577;&#30721;&#30340;&#33021;&#21147;&#12290;&#36825;&#20123;&#29366;&#24577;&#20195;&#30721;&#23545;&#20110;&#26381;&#21153;&#22120;&#21644;&#23458;&#25143;&#31471;&#20043;&#38388;&#30340;&#35831;&#27714;&#29366;&#24577;&#38750;&#24120;&#37325;&#35201;&#12290;Symfony&#20351;&#24471;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#38750;&#24120;&#31616;&#21333;&#65292;&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#28145;&#20837;&#25506;&#35752;&#22914;&#20309;&#22312;Symfony&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#12290;<\/p><h2>&#29702;&#35299;HTTP&#29366;&#24577;&#30721;<\/h2><p>HTTP &#29366;&#24577;&#30721;&#26159;&#30001;&#26381;&#21153;&#22120;&#22312;&#21709;&#24212;&#23458;&#25143;&#31471;&#30340;&#35831;&#27714;&#26102;&#21457;&#20986;&#30340;&#12290;&#36825;&#20123;&#29366;&#24577;&#30721;&#34987;&#20998;&#20026;&#20116;&#20010;&#31867;&#21035;&#65306;<\/p><p>&#26381;&#21153;&#22120;&#38169;&#35823;&#65306;&#26381;&#21153;&#22120;&#26080;&#27861;&#22788;&#29702;&#19968;&#20010;&#30475;&#36215;&#26469;&#26377;&#25928;&#30340;&#35831;&#27714;&#12290;<\/p><p>&#35831;&#27714;&#21253;&#21547;&#35821;&#27861;&#38169;&#35823;&#25110;&#26080;&#27861;&#23436;&#25104;&#12290;<\/p><p>3xx&#65288;&#37325;&#23450;&#21521;&#65289;&#65306;&#38656;&#35201;&#37319;&#21462;&#36827;&#19968;&#27493;&#34892;&#21160;&#25165;&#33021;&#23436;&#25104;&#35831;&#27714;&#12290;<\/p><p>200 OK: &#25805;&#20316;&#24050;&#25104;&#21151;&#25509;&#25910;&#12289;&#29702;&#35299;&#24182;&#25509;&#21463;&#12290;<\/p><p>1xx (&#20449;&#24687;&#24615;): &#35831;&#27714;&#24050;&#25910;&#21040;&#65292;&#32487;&#32493;&#22788;&#29702;&#12290;<\/p><h2>&#22312;Symfony&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;&#27493;&#39588;&#22914;&#19979;&#65306;\n\n&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;HTTP&#21709;&#24212;&#31867;&#65292;&#20363;&#22914;CustomStatusCodeResponse&#12290;\n&#22312;&#36825;&#20010;&#31867;&#20013;&#65292;&#20320;&#21487;&#20197;&#37325;&#20889;&#19968;&#20010;&#26041;&#27861;&#65292;&#22914;send()&#65292;&#29992;&#20110;&#29983;&#25104;&#21644;&#36820;&#22238;HTTP&#21709;&#24212;&#12290;\n&#20026;&#20102;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#65292;&#20320;&#38656;&#35201;&#22312;send()&#26041;&#27861;&#20013;&#28155;&#21152;&#36866;&#24403;&#30340;&#22836;&#37096;&#20449;&#24687;&#65288;&#20363;&#22914;Content-Type: text\/html&#65289;&#65292;&#24182;&#20351;&#29992;&#27491;&#30830;&#30340;HTTP&#29366;&#24577;&#20195;&#30721;&#20316;&#20026;&#21442;&#25968;&#12290;\n\n&#20197;&#19979;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65306;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass CustomStatusCodeResponse extends Response\n{\n public function send($code)\n {\n $this-&gt;headers-&gt;set(&#8216;Content-Type&#8217;, &#8216;text\/html&#8217;);\n return new Response(&#8221;, 0, [], [], [], [], null, false, true);\n }\n}\n&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026;CustomStatusCodeResponse&#30340;&#26032;&#31867;&#65292;&#23427;&#32487;&#25215;&#20102;Symfony&#30340;Response&#31867;&#12290;&#28982;&#21518;&#65292;&#22312;send()&#26041;&#27861;&#20013;&#65292;&#25105;&#20204;&#23558;Content-Type&#35774;&#32622;&#20026;&#8221;text\/html&#8221;&#65292;&#24182;&#23558;HTTP&#29366;&#24577;&#30721;&#35774;&#20026;0&#65288;&#36825;&#26159;&#19968;&#20010;&#31354;&#21709;&#24212;&#65289;&#12290;&#26368;&#21518;&#65292;&#25105;&#20204;&#36820;&#22238;&#19968;&#20010;&#31354;&#21709;&#24212;&#23545;&#35937;&#65292;&#34920;&#31034;&#27809;&#26377;&#23454;&#38469;&#30340;&#20869;&#23481;&#12290;\n&#35201;&#20351;&#29992;&#36825;&#20010;&#33258;&#23450;&#20041;&#30340;&#29366;&#24577;&#30721;&#65292;&#21482;&#38656;&#23558;&#26032;&#30340;Response&#23545;&#35937;&#20256;&#36882;&#32473;&#24212;&#29992;&#31243;&#24207;&#20013;&#30340;&#20219;&#20309;&#25511;&#21046;&#22120;&#25110;&#26381;&#21153;&#12290;&#20363;&#22914;&#65306;\n$response = new CustomStatusCodeResponse(404);\nreturn $response;\n&#36825;&#23558;&#36820;&#22238;&#19968;&#20010;&#24102;&#26377;&#29366;&#24577;&#30721;404&#65288;&#26410;&#25214;&#21040;&#65289;&#30340;&#21709;&#24212;&#65292;&#32780;&#19981;&#26159;&#40664;&#35748;&#30340;404&#65288;&#39029;&#38754;&#19981;&#23384;&#22312;&#65289;&#29366;&#24577;&#30721;&#12290;<\/h2><p>&#22312;Symfony&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#65292;&#36890;&#24120;&#20250;&#20462;&#25913;&#12290;<code>Response<\/code>&#23545;&#35937;&#12290;Symfony<code>Response<\/code>&#31867;&#26159;HttpFoundation&#32452;&#20214;&#30340;&#19968;&#37096;&#20998;&#65292;&#23427;&#20351;&#24471;&#22788;&#29702;HTTP&#28040;&#24687;&#21464;&#24471;&#36731;&#32780;&#26131;&#20030;&#12290;<\/p><h3>&#22522;&#26412;&#21709;&#24212;&#65292;&#24102;&#26377;&#33258;&#23450;&#20041;&#29366;&#24577;&#12290;<\/h3><p>&#20197;&#19979;&#26159;&#36820;&#22238;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;&#26368;&#31616;&#21333;&#26041;&#27861;&#65306;<\/p><pre><code>use SymfonyComponentHttpFoundationResponse;\n\npublic function index(): Response\n{\n   $response = new Response();\n   $response-&gt;setStatusCode(Response::HTTP_CREATED);  \/\/ sets status to 201 Created\n   return $response;\n}\n<\/code><\/pre><p>&#20363;&#22914;&#65292;&#24744;&#21487;&#20197;&#30452;&#25509;&#22312;&#21019;&#24314;&#21709;&#24212;&#26102;&#35774;&#32622;&#29366;&#24577;&#20195;&#30721;&#65292;&#22914;&#19979;&#25152;&#31034;&#65306;<\/p><pre><code>use SymfonyComponentHttpFoundationResponse;\n\npublic function index(): Response\n{\n   return new Response('', Response::HTTP_CREATED);\n}\n<\/code><\/pre><h3>&#36820;&#22238;&#24102;&#26377;&#29366;&#24577;&#30721;&#30340;JSON&#21709;&#24212;&#12290;<\/h3><p>&#35753;&#25105;&#20204;&#20551;&#35774;&#25105;&#20204;&#22312;&#19982;API&#20132;&#20114;&#65292;&#24076;&#26395;&#36820;&#22238;&#19968;&#20010;&#24102;&#26377;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;JSON&#21709;&#24212;&#12290;&#20320;&#21487;&#20197;&#20351;&#29992;JsonResponse&#31867;&#26469;&#23454;&#29616;&#36825;&#19968;&#28857;&#65306;<\/p><pre><code>use SymfonyComponentHttpFoundationJsonResponse;\n\npublic function apiResponse(): JsonResponse\n{\n   $data = [\n      'success' =&gt; true,\n      'data' =&gt; $yourDataHere,\n   ];\n   return new JsonResponse($data, Response::HTTP_OK);  \/\/ 200 status code\n}\n<\/code><\/pre><p>&#20026;&#20102;&#34920;&#31034;&#19981;&#21516;&#30340;&#29366;&#24577;&#65292;&#20363;&#22914;&#24403;&#36164;&#28304;&#19981;&#23384;&#22312;&#26102;&#65306;<\/p><pre><code>use SymfonyComponentHttpFoundationJsonResponse;\n\npublic function notFoundResponse(): JsonResponse\n{\n   $data = ['error' =&gt; 'Resource not found'];\n   return new JsonResponse($data, Response::HTTP_NOT_FOUND);  \/\/ 404 status code\n}\n<\/code><\/pre><h3>&#39640;&#32423;&#33258;&#23450;&#20041;&#35774;&#32622;<\/h3><p>&#26377;&#26102;&#35774;&#32622;&#29366;&#24577;&#30721;&#19981;&#36275;&#20197;&#28385;&#36275;&#38656;&#27714;&#12290;Symfony&#36824;&#20801;&#35768;&#24744;&#35774;&#32622;&#22836;&#37096;&#21644;&#20869;&#23481;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#36820;&#22238;&#33258;&#23450;&#20041;&#22836;&#20449;&#24687;&#30340;&#21516;&#26102;&#35774;&#32622;&#29366;&#24577;&#30721;&#30340;&#31034;&#20363;&#65306;<\/p><pre><code>use SymfonyComponentHttpFoundationResponse;\n\npublic function customHeaderResponse(): Response\n{\n   $response = new Response();\n   $response-&gt;headers-&gt;set('Custom-Header', 'value');\n   $response-&gt;setStatusCode(Response::HTTP_ACCEPTED);\n   return $response;\n}\n<\/code><\/pre><p>&#22914;&#26524;&#38656;&#35201;&#38543;&#29366;&#24577;&#30721;&#19968;&#36215;&#21457;&#36865;&#33258;&#23450;&#20041;&#20869;&#23481;&#65292;&#35831;&#21578;&#30693;&#12290;<\/p><pre><code>use SymfonyComponentHttpFoundationResponse;\n\npublic function customContentResponse(): Response\n{\n   $content = 'Custom content goes here';\n   $response = new Response($content, Response::HTTP_NON_AUTHORITATIVE_INFORMATION);\n   $response-&gt;headers-&gt;set('Content-Type', 'text\/plain');\n   return $response;\n}\n<\/code><\/pre><h2>&#22312;&#25511;&#21046;&#22120;&#65288;Controllers&#65289;&#20013;&#35774;&#32622;&#29366;&#24577;&#30721;&#65288;Status Codes&#65289;&#12290;<\/h2><p>&#22312;Symfony&#25511;&#21046;&#22120;&#20013;&#65292;&#35774;&#32622;&#29366;&#24577;&#30721;&#21487;&#20197;&#20316;&#20026;&#25511;&#21046;&#22120;&#21160;&#20316;&#36923;&#36753;&#30340;&#19968;&#37096;&#20998;&#12290;&#20026;&#20102;&#25552;&#39640;&#21487;&#35835;&#24615;&#65292;Symfony&#30340;&#25277;&#35937;&#25511;&#21046;&#22120;&#25552;&#20379;&#20102;&#36741;&#21161;&#26041;&#27861;&#26469;&#31616;&#21270;&#36825;&#20010;&#36807;&#31243;&#12290;&#36825;&#37324;&#26377;&#19968;&#20010;&#20351;&#29992;&#31034;&#20363;&#65306;<code>createNotFoundException<\/code>&#21738;&#20010;&#33258;&#21160;&#35774;&#32622;&#20026;404&#29366;&#24577;&#65306;<\/p><pre><code>use SymfonyBundleFrameworkBundleControllerAbstractController;\n\nclass MyController extends AbstractController\n{\n   public function someAction($id)\n   {\n      $entity = $this-&gt;getDoctrine()-&gt;getRepository(Entity::class)-&gt;find($id);\n      if (!$entity) {\n         throw $this-&gt;createNotFoundException('The entity does not exist.');\n      }\n      \/\/ ... return a response if the entity exists\n   }\n}\n<\/code><\/pre><h2>&#24322;&#24120;&#22788;&#29702;&#21644;&#29366;&#24577;&#30721;<\/h2><p>&#22312;Symfony&#20013;&#65292;&#24322;&#24120;&#22788;&#29702;&#26159;&#19968;&#20010;&#24378;&#22823;&#30340;&#21151;&#33021;&#65292;&#29992;&#20110;&#28789;&#27963;&#30340;&#25511;&#21046;&#27969;&#31243;&#12290;&#21487;&#20197;&#20351;&#29992;&#33258;&#23450;&#20041;&#24322;&#24120;&#26469;&#28210;&#26579;&#24102;&#26377;&#25152;&#38656;&#29366;&#24577;&#30721;&#30340;&#21709;&#24212;&#20316;&#20026;&#24322;&#24120;&#22788;&#29702;&#31574;&#30053;&#30340;&#19968;&#37096;&#20998;&#12290;&#35831;&#26597;&#30475;&#36825;&#20010;&#33258;&#23450;&#20041;&#24322;&#24120;&#22788;&#29702;&#22120;&#23454;&#29616;&#65306;<\/p><pre><code>use SymfonyComponentHttpKernelExceptionHttpException;\n\n\/\/ ... within your controller method\n\nif ($someConditionIsNotMet) {\n   throw new HttpException(Response::HTTP_BAD_REQUEST, 'Invalid request parameters');\n}\n<\/code><\/pre><p>&#27492;&#22806;&#65292;&#20320;&#21487;&#20197;&#20840;&#23616;&#22788;&#29702;&#24322;&#24120;&#65292;&#36890;&#36807;&#21019;&#24314;&#19968;&#20010;&#20107;&#20214;&#30417;&#21548;&#22120;&#25110;&#35746;&#38405;&#32773;&#26469;&#30417;&#21548;&#24322;&#24120;&#12290;<code>kernel.exception<\/code>&#22312;&#20107;&#20214;&#22788;&#29702;&#31243;&#24207;&#20013;&#65292;&#24744;&#21487;&#20197;&#26681;&#25454;&#35302;&#21457;&#30340;&#24322;&#24120;&#35774;&#32622;&#21709;&#24212;&#24182;&#30456;&#24212;&#22320;&#35774;&#32622;&#29366;&#24577;&#30721;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;Symfony&#20013;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#23545;&#20110;&#27491;&#30830;&#30340;RESTful API&#24320;&#21457;&#33267;&#20851;&#37325;&#35201;&#65292;&#23427;&#22686;&#24378;&#20102;&#24212;&#29992;&#31243;&#24207;&#19982;&#20854;&#23458;&#25143;&#31471;&#20043;&#38388;&#30340;&#36890;&#20449;&#12290;&#36890;&#36807;&#21033;&#29992;Symfony&#30340;Response&#21644;JsonResponse&#31867;&#20197;&#21450;&#22788;&#29702;&#24322;&#24120;&#65292;&#20320;&#21487;&#20197;&#26377;&#25928;&#22320;&#31649;&#29702;&#21644;&#25351;&#31034;HTTP&#35831;&#27714;&#30340;&#29366;&#24577;&#12290;&#35760;&#24471;&#20351;&#29992;&#36866;&#24403;&#30340;&#29366;&#24577;&#20195;&#30721;&#26469;&#20256;&#36798;&#27599;&#20010;&#35831;&#27714;&#30340;&#30830;&#20999;&#29366;&#24577;&#65292;&#24182;&#27880;&#24847;&#27599;&#31181;&#20195;&#30721;&#25152;&#20851;&#32852;&#30340;&#35821;&#20041;&#12290;<\/p><p>&#20351;&#29992;&#26412;&#25351;&#21335;&#21518;&#65292;&#24744;&#29616;&#22312;&#26356;&#26377;&#20449;&#24515;&#22788;&#29702; Symfony &#39033;&#30446;&#20013;&#30340;&#29366;&#24577;&#30721;&#31649;&#29702;&#20102;&#12290;&#24320;&#24515;&#32534;&#30721;&#65281;<\/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&#26694;&#26550;&#20013;&#65292;&#20320;&#21487;&#20197;&#36890;&#36807;&#37197;&#32622;&#25991;&#20214;&#26469;&#35774;&#32622;&#33258;&#23450;&#20041;&#30340;&#29366;&#24577;&#30721;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#35774;&#32622;&#21644;&#20351;&#29992;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#30340;&#27493;&#39588;&#65306;<\/p>\n<ol>\n<li>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#37197;&#32622;&#25991;&#20214;&#65292;&#20363;&#22914;<code>app\/config\/environments\/development.php<\/code>&#12290;&#36825;&#20010;&#25991;&#20214;&#36890;&#24120;&#20301;&#20110;<code>app\/config<\/code>&#30446;&#24405;&#19979;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#22312;&#36825;&#20010;&#25991;&#20214;&#20013;&#65292;&#25214;&#21040;<code>services.yaml<\/code>&#37096;&#20998;&#65292;&#24182;&#28155;&#21152;&#26032;&#30340;&#26381;&#21153;&#12290;&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#23558;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026;<code>custom_status_code_service<\/code>&#30340;&#26381;&#21153;&#65292;&#24182;&#23558;&#20854;&#37197;&#32622;&#20026;&#36820;&#22238;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#12290;<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-yaml\">services:\n  custom_status_code_service:\n    class: AppServicesCustomStatusCodeService\n    arguments: [ '@request' ]<\/code><\/pre>\n<ol start=\"3\">\n<li>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#38656;&#35201;&#23450;&#20041;&#25105;&#20204;&#30340;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#31867;&#12290;&#25105;&#20204;&#23558;&#22312;<code>AppControllerDefaultController<\/code>&#20013;&#23454;&#29616;&#36825;&#20010;&#31867;&#12290;<\/p>\n<\/li>\n<li>\n<p>&#29616;&#22312;&#65292;&#25105;&#20204;&#38656;&#35201;&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#22788;&#29702;&#36825;&#20123;&#29366;&#24577;&#30721;&#12290;&#35753;&#25105;&#20204;&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026;<code>handle_custom_status<\/code>&#30340;&#26041;&#27861;&#65292;&#23427;&#23558;&#25509;&#21463;&#19968;&#20010;&#35831;&#27714;&#24182;&#26681;&#25454;&#20854;&#29366;&#24577;&#30721;&#36827;&#34892;&#21709;&#24212;&#12290;<\/p>\n<\/li>\n<\/ol>\n<pre><code class=\"language-php\">namespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\nuse SymfonyComponentHttpKernelExceptionHttpExceptionInterface;\n\nclass DefaultController extends AbstractController\n{\n    public function handle_custom_status(Request $request): Response\n    {\n        \/\/ &#33719;&#21462;&#35831;&#27714;&#30340;HTTP&#29366;&#24577;&#30721;\n        $statusCode = $request-&gt;attributes-&gt;get('_status');\n\n        \/\/ &#26681;&#25454;&#29366;&#24577;&#30721;&#35774;&#32622;&#21709;&#24212;\n        switch ($statusCode) {\n            case 200:\n                return new Response('OK', 200);\n            case 400:\n                throw new HttpExceptionInterface(['error' =&gt; 'Bad Request'], 400);\n            case 500:\n                throw new HttpExceptionInterface(['error' =&gt; 'Internal Server Error'], 500);\n            default:\n                throw new HttpExceptionInterface(['error' =&gt; 'Unknown status code'], 400);\n        }\n    }\n}<\/code><\/pre>\n<p>&#29616;&#22312;&#65292;&#24403;&#20320;&#30340;&#24212;&#29992;&#31243;&#24207;&#25509;&#25910;&#21040;&#19968;&#20010;&#35831;&#27714;&#26102;&#65292;&#22914;&#26524;&#35831;&#27714;&#30340;&#29366;&#24577;&#30721;&#19981;&#22312;&#24050;&#30693;&#30340;&#29366;&#24577;&#30721;&#33539;&#22260;&#20869;&#65292;&#23427;&#23558;&#25243;&#20986;&#19968;&#20010;<code>HttpExceptionInterface<\/code>&#24322;&#24120;&#12290;&#28982;&#21518;&#20320;&#21487;&#20197;&#37325;&#23450;&#21521;&#21040;&#38169;&#35823;&#39029;&#38754;&#25110;&#32773;&#25552;&#20379;&#19968;&#20123;&#33258;&#23450;&#20041;&#30340;&#20449;&#24687;&#12290;<\/p>\n<p>&#31034;&#20363;&#65306;<\/p>\n<pre><code class=\"language-php\">$response = $this-&gt;handle_custom_status($request);\n\nif (!$response-&gt;isSuccessful()) {\n    \/\/ &#22914;&#26524;&#29366;&#24577;&#30721;&#19981;&#26159;&#25104;&#21151;&#29366;&#24577;&#30721;&#65292;&#37325;&#23450;&#21521;&#21040;&#38169;&#35823;&#39029;&#38754;\n    $this-&gt;redirect($response-&gt;headers-&gt;get('Location'));\n}\n\n\/\/ &#21521;&#23458;&#25143;&#31471;&#21457;&#36865;&#21709;&#24212;\n$this-&gt;renderResponse('YourViewName', [\n    'message' =&gt; $response-&gt;getContent(),\n]);<\/code><\/pre>\n<p>&#35831;&#27880;&#24847;&#65292;&#36825;&#21482;&#26159;&#19968;&#20010;&#22522;&#26412;&#30340;&#20363;&#23376;&#65292;&#23454;&#38469;&#24212;&#29992;&#20013;&#21487;&#33021;&#38656;&#35201;&#26356;&#22797;&#26434;&#30340;&#36923;&#36753;&#26469;&#22788;&#29702;&#21508;&#31181;&#29366;&#24577;&#30721;&#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;&#35774;&#32622;&#33258;&#23450;&#20041;&#29366;&#24577;&#30721;&#21487;&#20197;&#36890;&#36807;&#37197;&#038;#3..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[45],"tuisongtax":[],"class_list":["post-1067","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\/1067","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=1067"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1067"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1067"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1067"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}