{"id":1059,"date":"2025-06-12T11:39:04","date_gmt":"2025-06-12T03:39:04","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/symfony\/1059.html"},"modified":"2025-06-12T11:39:04","modified_gmt":"2025-06-12T03:39:04","slug":"symfony%e6%8e%a7%e5%88%b6%e5%99%a8%e5%ae%9e%e8%b7%b5%e6%8c%87%e5%8d%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/1059.html","title":{"rendered":"Symfony\u63a7\u5236\u5668\u5b9e\u8df5\u6307\u5357"},"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>&#12298;Symfony&#25511;&#21046;&#22120;&#23454;&#36341;&#25351;&#21335;&#12299;<\/p>\n<p>&#22312;Web&#24320;&#21457;&#20013;&#65292;&#25511;&#21046;&#22120;&#65288;Controller&#65289;&#26159;&#22788;&#29702;HTTP&#35831;&#27714;&#24182;&#36820;&#22238;&#21709;&#24212;&#30340;&#26680;&#24515;&#37096;&#20998;&#12290;&#23427;&#20204;&#36127;&#36131;&#25509;&#25910;&#29992;&#25143;&#36755;&#20837;&#12289;&#25191;&#34892;&#19994;&#21153;&#36923;&#36753;&#65292;&#24182;&#23558;&#32467;&#26524;&#36820;&#22238;&#32473;&#23458;&#25143;&#31471;&#12290;&#22312;Symfony&#26694;&#26550;&#20013;&#65292;&#25511;&#21046;&#22120;&#30340;&#35774;&#35745;&#21644;&#23454;&#29616;&#21487;&#20197;&#36981;&#24490;&#19968;&#23450;&#30340;&#26368;&#20339;&#23454;&#36341;&#65292;&#20197;&#30830;&#20445;&#20195;&#30721;&#30340;&#28165;&#26224;&#12289;&#39640;&#25928;&#21644;&#26131;&#20110;&#32500;&#25252;&#12290;<\/p>\n<h3>1. &#22522;&#26412;&#27010;&#24565;<\/h3>\n<ul>\n<li><strong>Action<\/strong>&#65306;&#25511;&#21046;&#22120;&#20013;&#30340;&#26041;&#27861;&#65292;&#29992;&#20110;&#22788;&#29702;&#29305;&#23450;&#30340;HTTP&#35831;&#27714;&#12290;<\/li>\n<li><strong>Route<\/strong>&#65306;URL&#26144;&#23556;&#65292;&#23558;URL&#36335;&#24452;&#19982;&#23545;&#24212;&#30340;Action&#20851;&#32852;&#36215;&#26469;&#12290;<\/li>\n<li><strong>Request<\/strong>&#65306;&#21253;&#21547;&#20102;HTTP&#35831;&#27714;&#30340;&#25152;&#26377;&#20449;&#24687;&#65292;&#22914;GET&#12289;POST&#21442;&#25968;&#12289;&#34920;&#21333;&#25968;&#25454;&#31561;&#12290;<\/li>\n<li><strong>Response<\/strong>&#65306;&#21253;&#21547;&#20102;HTTP&#21709;&#24212;&#30340;&#20869;&#23481;&#21644;&#29366;&#24577;&#30721;&#12290;<\/li>\n<\/ul>\n<h3>2. &#25511;&#21046;&#22120;&#32467;&#26500;<\/h3>\n<p>&#36890;&#24120;&#65292;Symfony&#24212;&#29992;&#20250;&#26377;&#19968;&#20010;<code>src\/Controller<\/code>&#30446;&#24405;&#65292;&#20854;&#20013;&#21253;&#21547;&#22810;&#20010;&#23376;&#30446;&#24405;&#65292;&#27599;&#20010;&#23376;&#30446;&#24405;&#23545;&#24212;&#19968;&#20010;&#27169;&#22359;&#25110;&#21151;&#33021;&#12290;&#20363;&#22914;&#65306;<\/p>\n<pre><code>src\/\n&#9500;&#9472;&#9472; Controller\/\n&#9474;   &#9500;&#9472;&#9472; DefaultController.php\n&#9474;   &#9492;&#9472;&#9472; SecurityController.php\n&#9492;&#9472;&#9472; ...<\/code><\/pre>\n<h3>3. &#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#19979;&#38754;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;Symfony&#25511;&#21046;&#22120;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#23450;&#20041;&#19968;&#20010;&#22522;&#26412;&#30340;&#25511;&#21046;&#22120;&#21644;Action&#12290;<\/p>\n<h4>&#21019;&#24314;&#25511;&#21046;&#22120;<\/h4>\n<p>&#39318;&#20808;&#65292;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#25991;&#20214;&#65306;<\/p>\n<pre><code class=\"language-bash\">php bin\/console make:controller DefaultController<\/code><\/pre>\n<p>&#36825;&#20010;&#21629;&#20196;&#20250;&#29983;&#25104;&#19968;&#20010;&#21517;&#20026;<code>DefaultController.php<\/code>&#30340;&#25991;&#20214;&#65292;&#20301;&#20110;<code>src\/Controller\/<\/code>&#30446;&#24405;&#19979;&#12290;<\/p>\n<h4>&#32534;&#20889;Action<\/h4>\n<p>&#25171;&#24320;<code>DefaultController.php<\/code>&#25991;&#20214;&#65292;&#28155;&#21152;&#19968;&#20010;&#31616;&#21333;&#30340;Action&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppController;\n\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass DefaultController extends AbstractController\n{\n    public function index(): Response\n    {\n        return $this-&gt;render('default\/index.html.twig', [\n            'message' =&gt; 'Hello, Symfony!',\n        ]);\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#23450;&#20041;&#20102;&#19968;&#20010;&#21517;&#20026;<code>index<\/code>&#30340;&#26041;&#27861;&#65292;&#23427;&#36820;&#22238;&#19968;&#20010;&#31616;&#21333;&#30340;HTML&#39029;&#38754;&#65292;&#20869;&#23481;&#20026;&ldquo;Hello, Symfony!&rdquo;&#12290;<\/p>\n<h4>&#37197;&#32622;&#36335;&#30001;<\/h4>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#38656;&#35201;&#37197;&#32622;&#36335;&#30001;&#26469;&#21305;&#37197;URL&#36335;&#24452;&#21040;&#30456;&#24212;&#30340;Action&#12290;&#32534;&#36753;<code>config\/routes.yaml<\/code>&#25991;&#20214;&#65306;<\/p>\n<pre><code class=\"language-yaml\">app:\n    resource: '@App\/Controller\/'\n    type: annotation<\/code><\/pre>\n<p>&#36825;&#26679;&#65292;&#25152;&#26377;&#22312;<code>src\/Controller\/<\/code>&#30446;&#24405;&#19979;&#30340;&#31867;&#21450;&#20854;&#26041;&#27861;&#37117;&#20250;&#34987;&#33258;&#21160;&#27880;&#20876;&#20026;&#36335;&#30001;&#12290;<\/p>\n<h4>&#36816;&#34892;&#24212;&#29992;<\/h4>\n<p>&#29616;&#22312;&#65292;&#20320;&#21487;&#20197;&#36816;&#34892;&#20320;&#30340;Symfony&#24212;&#29992;&#26469;&#27979;&#35797;&#25511;&#21046;&#22120;&#26159;&#21542;&#27491;&#24120;&#24037;&#20316;&#65306;<\/p>\n<pre><code class=\"language-bash\">php bin\/console server:run<\/code><\/pre>\n<p>&#35775;&#38382;<code>http:\/\/localhost:8000<\/code>&#65292;&#20320;&#24212;&#35813;&#33021;&#30475;&#21040;&#26174;&#31034;&ldquo;Hello, Symfony!&rdquo;&#30340;&#39029;&#38754;&#12290;<\/p>\n<h3>4. &#20854;&#20182;&#26368;&#20339;&#23454;&#36341;<\/h3>\n<ul>\n<li><strong>&#27880;&#37322;<\/strong>&#65306;&#23545;&#20195;&#30721;&#36827;&#34892;&#27880;&#37322;&#65292;&#35299;&#37322;&#27599;&#19968;&#27493;&#30340;&#21151;&#33021;&#21644;&#30446;&#30340;&#12290;<\/li>\n<li><strong>&#20381;&#36182;&#27880;&#20837;<\/strong>&#65306;&#20351;&#29992;&#20381;&#36182;&#27880;&#20837;&#26469;&#31649;&#29702;&#20381;&#36182;&#20851;&#31995;&#65292;&#25552;&#39640;&#20195;&#30721;&#30340;&#21487;&#27979;&#35797;&#24615;&#21644;&#21487;&#32500;&#25252;&#24615;&#12290;<\/li>\n<li><strong>&#24322;&#24120;&#22788;&#29702;<\/strong>&#65306;&#27491;&#30830;&#22788;&#29702;&#21487;&#33021;&#21457;&#29983;&#30340;&#24322;&#24120;&#65292;&#25552;&#20379;&#21451;&#22909;&#30340;&#38169;&#35823;&#28040;&#24687;&#12290;<\/li>\n<\/ul>\n<p>&#36890;&#36807;&#36981;&#24490;&#36825;&#20123;&#26368;&#20339;&#23454;&#36341;&#65292;&#20320;&#21487;&#20197;&#32534;&#20889;&#20986;&#26356;&#39640;&#36136;&#37327;&#30340;Symfony&#25511;&#21046;&#22120;&#65292;&#25552;&#21319;&#24212;&#29992;&#30340;&#24615;&#33021;&#21644;&#29992;&#25143;&#20307;&#39564;&#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>&#26500;&#24314;&#21160;&#24577;Web&#24212;&#29992;&#31243;&#24207;&#36890;&#24120;&#38656;&#35201;&#19968;&#20010;&#24378;&#22823;&#30340;&#26694;&#26550;&#65292;&#35813;&#26694;&#26550;&#33021;&#22815;&#39640;&#25928;&#22320;&#22788;&#29702;&#36335;&#30001;&#12289;&#35831;&#27714;&#21644;&#21709;&#24212;&#12290;Symfony&#65292;&#36825;&#26159;&#19968;&#20010;&#33879;&#21517;&#30340;PHP&#26694;&#26550;&#65292;&#20026;&#24320;&#21457;&#32773;&#25552;&#20379;&#20102;&#21019;&#24314;&#21487;&#25193;&#23637;&#19988;&#39640;&#24615;&#33021;&#24212;&#29992;&#25152;&#38656;&#30340;&#22522;&#30784;&#26550;&#26500;&#21644;&#24037;&#20855;&#12290;Symfony&#26550;&#26500;&#20013;&#30340;&#19968;&#20010;&#37325;&#35201;&#32452;&#25104;&#37096;&#20998;&#26159;&ldquo;&#25511;&#21046;&#22120;&rdquo;&#12290;&#22312;&#26412;&#25351;&#21335;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#35752;&#24037;&#20316;&#20110;Symfony&#25511;&#21046;&#22120;&#30340;&#23454;&#29992;&#26041;&#38754;&#12290;<\/p><h2>&#21069;&#32622;&#30693;&#35782;<\/h2><p>&#22312;&#28145;&#20837;&#20351;&#29992;&#25511;&#21046;&#22120;&#20043;&#21069;&#65292;&#20102;&#35299;Symfony&#30340;&#22522;&#30784;&#30693;&#35782;&#20197;&#21450;MVC&#65288;&#27169;&#22411;-&#35270;&#22270;-&#25511;&#21046;&#22120;&#65289;&#35774;&#35745;&#27169;&#24335;&#33267;&#20851;&#37325;&#35201;&#12290;&#25484;&#25569;&#38754;&#21521;&#23545;&#35937;&#30340;PHP&#20063;&#26159;&#24517;&#35201;&#30340;&#12290;<\/p><h2>&#29702;&#35299;Symfony&#25511;&#21046;&#22120;<\/h2><p>&#22312;Symfony&#20013;&#65292;&#25511;&#21046;&#22120;&#36127;&#36131;&#22788;&#29702;HTTP&#35831;&#27714;&#24182;&#36820;&#22238;HTTP&#21709;&#24212;&#12290;&#25511;&#21046;&#22120;&#21253;&#21547;&#24212;&#29992;&#31243;&#24207;&#36923;&#36753;&#65292;&#24182;&#20805;&#24403;&#27169;&#22411;&#12289;&#35270;&#22270;&#21644;&#36335;&#30001;&#20043;&#38388;&#30340;&#31896;&#21512;&#21058;&#12290;<\/p><h3>&#21019;&#24314;&#22522;&#26412;&#25511;&#21046;&#22120;<\/h3><p>&#39318;&#20808;&#22312;Symfony&#39033;&#30446;&#20013;&#30340;&ldquo;src\/Controller&rdquo;&#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25511;&#21046;&#22120;&#31867;&#12290;&#36825;&#37324;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#31034;&#20363;&#65306;<\/p><pre><code>&lt;?php\nnamespace AppController;\n\nuse SymfonyComponentHttpFoundationResponse;\nuse SymfonyComponentRoutingAnnotationRoute;\n\nclass HelloWorldController\n{\n    \/**\n     * @Route(\"\/hello\", name=\"hello\")\n     *\/\n    public function index()\n    {\n        return new Response('Hello, World!');\n    }\n}\n<\/code><\/pre><p>&#36825;&#27573;&#20195;&#30721;&#35774;&#32622;&#20102;&#30417;&#21548; &#8216;\/hello&#8217; &#36335;&#24452;&#30340;&#36335;&#30001;&#65292;&#24182;&#23558;&#20854;&#19982;&#25105;&#20204;&#30340; &#8216;HelloWorldController&#8217; &#20013;&#30340; &#8216;index&#8217; &#26041;&#27861;&#20851;&#32852;&#36215;&#26469;&#12290;<\/p><h3>&#20381;&#36182;&#27880;&#20837;&#21644;&#25511;&#21046;&#22120;<\/h3><p>Symfony &#25903;&#25345;&#20381;&#36182;&#27880;&#20837;&#65292;&#20351;&#24471;&#31649;&#29702;&#26381;&#21153;&#21644;&#35299;&#32806;&#24212;&#29992;&#32452;&#20214;&#21464;&#24471;&#26356;&#21152;&#23481;&#26131;&#12290;&#20320;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#26041;&#24335;&#22312;&#25511;&#21046;&#22120;&#20013;&#27880;&#20837;&#20381;&#36182;&#65306;<\/p><pre><code>&lt;?php\n\/\/ ...\nuse SymfonyComponentHttpFoundationRequest;\n\n\/\/ Inside your class\npublic function show(Request $request)\n{\n    \/\/ Use the $request object\n}\n<\/code><\/pre><h2>&#36335;&#30001;&#21644;&#25511;&#21046;&#22120;<\/h2><p>&#20026;&#20102;&#23558;URL&#19982;&#29305;&#23450;&#30340;&#25511;&#21046;&#22120;&#21160;&#20316;&#20851;&#32852;&#36215;&#26469;&#65292;Symfony &#20351;&#29992;&#36335;&#30001;&#32452;&#20214;&#12290;&#36335;&#30001;&#21487;&#20197;&#36890;&#36807;&#27880;&#35299;&#12289;YAML&#12289;XML &#25110; PHP &#25991;&#20214;&#36827;&#34892;&#37197;&#32622;&#12290;&#27880;&#35299;&#26159;&#26368;&#26041;&#20415;&#21644;&#27969;&#34892;&#30340;&#23454;&#29616;&#26041;&#24335;&#65306;<\/p><h3>&#36335;&#30001;&#21442;&#25968;<\/h3><p>&#20320;&#21487;&#20197;&#20026;&#21160;&#24577;&#36335;&#30001;&#23450;&#20041;&#21442;&#25968;&#12290;<\/p><pre><code>&lt;?php\n\/\/ ...\n\/**\n * @Route(\"\/user\/{id}\", name=\"user_show\")\n *\/\npublic function show($id)\n{\n    \/\/ ...\n}\n<\/code><\/pre><h3>&#29983;&#25104;URL&#12290;<\/h3><p>&#35201;&#22312;&#25511;&#21046;&#22120;&#20869;&#29983;&#25104;&#19968;&#20010;&#36335;&#30001;&#30340;URL&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;Symfony&#25552;&#20379;&#30340;generateUrl&#26041;&#27861;&#65306;<\/p><pre><code>\/\/ ...\n$this-&gt;generateUrl('user_show', ['id' =&gt; 10]);\n<\/code><\/pre><h2>&#25511;&#21046;&#22120;&#30340;&#21709;&#24212;&#12290;<\/h2><p>Symfony &#25552;&#20379;&#20102;&#19981;&#21516;&#31867;&#22411;&#30340;&#21709;&#24212;&#31867;&#26469;&#22788;&#29702;&#21508;&#31181;&#21709;&#24212;&#31867;&#22411;&#65292;&#22914; HTML&#12289;JSON &#25110;&#37325;&#23450;&#21521;&#31561;&#12290;<\/p><h3>&#36820;&#22238;JSON&#21709;&#24212;&#12290;<\/h3><p>&#22914;&#26524;&#24744;&#30340;&#24212;&#29992;&#38656;&#35201;&#36820;&#22238;JSON&#65292;&#24744;&#21487;&#20197;&#20351;&#29992;JsonResponse&#31867;&#65306;<\/p><pre><code>&lt;?php\n\/\/ ...\nuse SymfonyComponentHttpFoundationJsonResponse;\n\npublic function apiResponse()\n{\n    $data = [\/* ... *\/];\n    return new JsonResponse($data);\n}\n<\/code><\/pre><h3>&#37325;&#23450;&#21521;&#21709;&#24212;&#12290;<\/h3><p>&#20026;&#20102;&#23558;&#29992;&#25143;&#37325;&#23450;&#21521;&#21040;&#19981;&#21516;&#30340;&#39029;&#38754;&#65292;&#21487;&#20197;&#20351;&#29992; RedirectResponse &#31867;&#25110;&#24555;&#25463;&#26041;&#27861; redirectToRoute&#65306;<\/p><pre><code>\/\/ ...\nreturn $this-&gt;redirectToRoute('home');\n<\/code><\/pre><h2>&#27169;&#26495;&#28210;&#26579;<\/h2><p>&#23545;&#20110;&#36820;&#22238;HTML&#20869;&#23481;&#65292;&#36890;&#24120;&#20250;&#28210;&#26579;&#27169;&#26495;&#12290;Symfony&#19982;Twig&#23436;&#32654;&#38598;&#25104;&#65306;Twig &#26159;&#19968;&#31181;&#29992;&#20110;PHP&#30340;&#27169;&#26495;&#24341;&#25806;&#12290;<\/p><pre><code>&lt;?php\n\/\/ ...\n\/\/ Inside your controller class\npublic function index()\n{\n    \/\/ ...\n    return $this-&gt;render('index.html.twig', ['some_data' =&gt; $data]);\n}\n<\/code><\/pre><p>&#25105;&#20204;&#27491;&#22312;&#21521;Twig&#27169;&#26495;&#20256;&#36882;&#19968;&#20010;&#25968;&#25454;&#25968;&#32452;&#65292;&#21487;&#20197;&#29992;&#20110;&#28210;&#26579;&#21160;&#24577;&#20869;&#23481;&#12290;<\/p><h2>Symfony&#25511;&#21046;&#22120;&#30340;&#26368;&#20339;&#23454;&#36341;&#21253;&#25324;&#65306;&#20351;&#29992;&#27880;&#35299;&#31616;&#21270;&#20195;&#30721;&#65292;&#20445;&#25345;&#21333;&#19968;&#32844;&#36131;&#21407;&#21017;&#65292;&#36991;&#20813;&#36807;&#24230;&#20381;&#36182;&#20110;&#31867;&#21644;&#26041;&#27861;&#30340;&#21629;&#21517;&#31354;&#38388;&#65292;&#36981;&#24490;Laravel&#30340;&#21629;&#21517;&#32422;&#23450;&#65292;&#20197;&#21450;&#30830;&#20445;&#25511;&#21046;&#22120;&#20855;&#26377;&#26126;&#30830;&#30340;&#30446;&#30340;&#24615;&#12290;<\/h2><p>&#21333;&#20803;&#27979;&#35797;&#65306;&#20026;&#24744;&#30340;&#25511;&#21046;&#22120;&#32534;&#20889;&#21333;&#20803;&#27979;&#35797;&#65292;&#20197;&#30830;&#20445;&#23427;&#20204;&#33021;&#22815;&#27491;&#30830;&#36816;&#34892;&#12290;<\/p><p>&#20351;&#29992;&#26381;&#21153;&#23481;&#22120;&#65306;&#22312;&#25511;&#21046;&#22120;&#20013;&#21019;&#24314;&#26381;&#21153;&#23545;&#35937;&#19981;&#22914;&#20351;&#29992;Symfony&#30340;&#26381;&#21153;&#23481;&#22120;&#26469;&#22768;&#26126;&#21644;&#35775;&#38382;&#26381;&#21153;&#12290;<\/p><p>&#36731;&#37327;&#32423;&#25511;&#21046;&#22120;&#65306;&#20445;&#25345;&#25511;&#21046;&#22120;&#36731;&#37327;&#21270;&#65292;&#19987;&#27880;&#20110;&#22788;&#29702;&#19982;&#35831;&#27714;&#30456;&#20851;&#30340;&#36923;&#36753;&#12290;&#23558;&#37325;&#19994;&#21153;&#36923;&#36753;&#36716;&#31227;&#21040;&#26381;&#21153;&#31867;&#12290;<\/p><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;&#26412;&#25351;&#21335;&#20013;&#65292;&#25105;&#20204;&#25506;&#35752;&#20102;Symfony&#25511;&#21046;&#22120;&#30340;&#24517;&#22791;&#35201;&#32032;&#12290;&#25105;&#20204;&#20102;&#35299;&#20102;&#21019;&#24314;&#22522;&#26412;&#25511;&#21046;&#22120;&#12289;&#29702;&#35299;&#20381;&#36182;&#20851;&#31995;&#12289;&#31649;&#29702;&#36335;&#30001;&#12289;&#22788;&#29702;&#21709;&#24212;&#20197;&#21450;&#28210;&#26579;&#27169;&#26495;&#30340;&#26041;&#27861;&#12290;&#36981;&#24490;&#36825;&#20123;&#23454;&#36341;&#65292;&#24744;&#23558;&#20934;&#22791;&#22909;&#32487;&#32493;&#24320;&#21457;&#39640;&#25928;&#19988;&#21487;&#25193;&#23637;&#30340;&#22522;&#20110;Symfony&#30340;&#24212;&#29992;&#31243;&#24207;&#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>Symfony &#26159;&#19968;&#20010;&#36731;&#37327;&#32423;&#30340; PHP &#26694;&#26550;&#65292;&#29992;&#20110;&#26500;&#24314; Web &#24212;&#29992;&#31243;&#24207;&#12290;&#23427;&#25552;&#20379;&#20102;&#19968;&#22871;&#23436;&#25972;&#30340;&#21151;&#33021;&#65292;&#21253;&#25324;&#25968;&#25454;&#39564;&#35777;&#12289;&#34920;&#21333;&#22788;&#29702;&#21644;&#36335;&#30001;&#31561;&#12290;&#19979;&#38754;&#25105;&#20204;&#23558;&#20171;&#32461;&#22914;&#20309;&#20351;&#29992; Symfony &#25511;&#21046;&#22120;&#26469;&#23454;&#29616;&#19968;&#20123;&#22522;&#26412;&#30340;&#21151;&#33021;&#12290;<\/p>\n<h3>1. &#23433;&#35013; Symfony<\/h3>\n<p>&#39318;&#20808;&#30830;&#20445;&#20320;&#30340;&#31995;&#32479;&#24050;&#32463;&#23433;&#35013;&#20102; Composer&#12290;&#28982;&#21518;&#36890;&#36807;&#21629;&#20196;&#34892;&#36816;&#34892;&#20197;&#19979;&#21629;&#20196;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist symfony\/skeleton app<\/code><\/pre>\n<p>&#36825;&#23558;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340; Symfony &#24212;&#29992;&#23454;&#20363;&#65292;&#24182;&#23558;&#20854;&#21629;&#21517;&#20026; <code>app<\/code>&#12290;<\/p>\n<h3>2. &#21019;&#24314;&#25511;&#21046;&#22120;<\/h3>\n<p>&#25171;&#24320; <code>app\/Controller<\/code> &#30446;&#24405;&#19979;&#30340; <code>Index.php<\/code> &#25991;&#20214;&#12290;&#36825;&#26159;&#19968;&#20010;&#31616;&#21333;&#30340;&#25511;&#21046;&#22120;&#31867;&#65292;&#29992;&#20110;&#23450;&#20041;&#25511;&#21046;&#22120;&#30340;&#34892;&#20026;&#12290;&#36825;&#37324;&#25105;&#20204;&#21482;&#28155;&#21152;&#19968;&#20010;&#26041;&#27861;&#65292;&#21517;&#20026; <code>index<\/code>&#65292;&#35813;&#26041;&#27861;&#23558;&#36820;&#22238;&#19968;&#20010;&#35270;&#22270;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppController;\n\nuse SensioBundleFrameworkExtraBundleConfigurationIsGranted;\nuse SymfonyBundleFrameworkBundleControllerAbstractController;\nuse SymfonyComponentHttpFoundationResponse;\n\nclass IndexController extends AbstractController\n{\n    \/**\n     * @IsGranted(\"ROLE_ADMIN\")\n     *\/\n    public function indexAction()\n    {\n        return $this-&gt;render('index.html.twig', [\n            'controller_name' =&gt; 'IndexController',\n        ]);\n    }\n}<\/code><\/pre>\n<h3>3. &#21019;&#24314;&#35270;&#22270;<\/h3>\n<p>&#25171;&#24320; <code>app\/Resources\/views\/index.html.twig<\/code> &#25991;&#20214;&#65292;&#36825;&#26159;&#27169;&#26495;&#25991;&#20214;&#65292;&#29992;&#26469;&#28210;&#26579;&#35270;&#22270;&#12290;&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#23558;&#22312;&#35270;&#22270;&#20013;&#26174;&#31034;&#19968;&#26465;&#28040;&#24687;&#12290;<\/p>\n<pre><code class=\"language-html\">{% for message in _scope_messages %}\n    &lt;div class=\"alert alert-{{ message.level }}\"&gt;\n        {{ message.text }}\n    &lt;\/div&gt;\n{% endfor %}<\/code><\/pre>\n<h3>4. &#27979;&#35797;&#25511;&#21046;&#22120;<\/h3>\n<p>&#35201;&#27979;&#35797;&#25511;&#21046;&#22120;&#65292;&#35831;&#22312;&#27983;&#35272;&#22120;&#20013;&#35775;&#38382; <code>\/app\/index<\/code>. &#22914;&#26524;&#19968;&#20999;&#27491;&#24120;&#65292;&#20320;&#24212;&#35813;&#30475;&#21040;&#19968;&#20010;&#21253;&#21547;&#28040;&#24687;&#30340;&#35686;&#21578;&#12290;<\/p>\n<h3>&#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#20320;&#38656;&#35201;&#19968;&#20010;&#25511;&#21046;&#22120;&#26469;&#22788;&#29702;&#29992;&#25143;&#27880;&#20876;&#35831;&#27714;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#32534;&#20889;&#36825;&#26679;&#19968;&#20010;&#25511;&#21046;&#22120;&#30340;&#20363;&#23376;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppController;\n\nuse SymfonyComponentHttpFoundationRequest;\nuse SymfonyComponentHttpFoundationResponse;\nuse SymfonyComponentRoutingAnnotationRoute;\nuse SymfonyComponentSecurityCoreUserUserInterface;\n\n\/**\n * @Route(\"\/register\", name=\"register_\")\n *\/\nclass RegisterController\n{\n    \/**\n     * @param Request $request\n     * @return Response\n     *\/\n    public function registerAction(Request $request)\n    {\n        \/\/ &#36825;&#37324;&#21487;&#20197;&#28155;&#21152;&#29992;&#25143;&#30340;&#39564;&#35777;&#36923;&#36753;&#65288;&#20363;&#22914;&#65306;&#26816;&#26597;&#30005;&#23376;&#37038;&#20214;&#26159;&#21542;&#24050;&#23384;&#22312;&#65289;\n        $user = new User();\n        $form = $this-&gt;createForm(UserType::class, $user);\n\n        if ($request-&gt;getMethod() === \"POST\") {\n            $form-&gt;handleRequest($request);\n            if ($form-&gt;isValid()) {\n                \/\/ &#27880;&#20876;&#29992;&#25143;&#24182;&#37325;&#23450;&#21521;&#21040;&#27426;&#36814;&#39029;&#38754;\n                $this-&gt;get('security.token_storage')-&gt;setToken(new Token());\n                return $this-&gt;redirectToRoute('welcome');\n            }\n        }\n\n        return $this-&gt;renderForm('register.html.twig', [\n            'action' =&gt; 'register',\n            'form' =&gt; $form-&gt;createView(),\n        ]);\n    }\n}\n\n\/\/ &#22312;&#37197;&#32622;&#25991;&#20214;&#20013;&#35774;&#32622;&#23433;&#20840;&#24615;\nservices:\n    security.yml:\n        default_auth_manager: security.auth_manager\n        default_authorizer: security.authorizer_security_context\n        token_strategy: security.token_strategy\n        role_hierarchy:\n            ROLE_USER: [ROLE_USER]\n            ROLE_ADMIN: [ROLE_USER, ROLE_ADMIN]\n\n# User Type\ntype_definition\/UserType.php:\n    id: AppEntityUser\n    fields:\n        email: EmailField\n        password: PasswordField\n        firstName: StringField\n        lastName: StringField<\/code><\/pre>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#20197;&#19978;&#23601;&#26159;&#20351;&#29992; Symfony &#25511;&#21046;&#22120;&#30340;&#22522;&#26412;&#27493;&#39588;&#12290;&#20320;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#25193;&#23637;&#36825;&#20010;&#25511;&#21046;&#22120;&#65292;&#27604;&#22914;&#28155;&#21152;&#20854;&#20182;&#21151;&#33021;&#25110;&#19982;&#25968;&#25454;&#24211;&#36827;&#34892;&#20132;&#20114;&#12290;&#24076;&#26395;&#36825;&#20123;&#20449;&#24687;&#33021;&#24110;&#21161;&#20320;&#22312;&#20351;&#29992; Symfony &#24320;&#21457;&#26102;&#26356;&#21152;&#39034;&#30021;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#12298;Symfony&#25511;&#21046;&#22120;&#23454;&#36341;&#25351;&#21335;&#12299; &#22312;Web&#24320;&#21457;&#20013;&#65292;&#25511;&#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-1059","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\/1059","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=1059"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=1059"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=1059"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=1059"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}