{"id":822,"date":"2025-06-12T00:29:14","date_gmt":"2025-06-11T16:29:14","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/822.html"},"modified":"2025-06-12T00:29:14","modified_gmt":"2025-06-11T16:29:14","slug":"laravel%e8%be%93%e5%85%a5%e6%95%b0%e6%8d%ae%e9%aa%8c%e8%af%81%ef%bc%9a%e5%ae%9e%e7%94%a8%e6%8c%87%e5%8d%97","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/822.html","title":{"rendered":"Laravel\u8f93\u5165\u6570\u636e\u9a8c\u8bc1\uff1a\u5b9e\u7528\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;Laravel&#36755;&#20837;&#25968;&#25454;&#39564;&#35777;&#65306;&#23454;&#29992;&#25351;&#21335;&#12299;<\/p>\n<p>Laravel &#26159;&#19968;&#20010;&#27969;&#34892;&#30340; PHP &#26694;&#26550;&#65292;&#23427;&#25552;&#20379;&#20102;&#19968;&#31181;&#31616;&#21333;&#32780;&#24378;&#22823;&#30340;&#26041;&#27861;&#26469;&#39564;&#35777;&#29992;&#25143;&#25552;&#20132;&#30340;&#25968;&#25454;&#12290;&#25968;&#25454;&#39564;&#35777;&#26159;&#30830;&#20445;&#29992;&#25143;&#25552;&#20379;&#30340;&#25968;&#25454;&#31526;&#21512;&#39044;&#26399;&#30340;&#37325;&#35201;&#27493;&#39588;&#65292;&#21487;&#20197;&#26377;&#25928;&#38450;&#27490; SQL &#27880;&#20837;&#12289;XSS &#25915;&#20987;&#31561;&#23433;&#20840;&#38382;&#39064;&#12290;<\/p>\n<h3>1. &#23433;&#35013; Laravel<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013; Laravel&#12290;&#22914;&#26524;&#20320;&#36824;&#27809;&#26377;&#23433;&#35013;&#65292;&#21487;&#20197;&#36890;&#36807; Composer &#36827;&#34892;&#23433;&#35013;&#65306;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist laravel\/laravel my-app\ncd my-app<\/code><\/pre>\n<h3>2. &#21019;&#24314;&#25511;&#21046;&#22120;&#21644;&#27169;&#22411;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#21019;&#24314;&#19968;&#20010;&#25511;&#21046;&#22120;&#21644;&#19968;&#20010;&#27169;&#22411;&#26469;&#22788;&#29702;&#34920;&#21333;&#25968;&#25454;&#30340;&#39564;&#35777;&#12290;<\/p>\n<h4>&#21019;&#24314;&#25511;&#21046;&#22120;<\/h4>\n<pre><code class=\"language-bash\">php artisan make:controller UserController<\/code><\/pre>\n<h4>&#21019;&#24314;&#27169;&#22411;<\/h4>\n<pre><code class=\"language-bash\">php artisan make:model User<\/code><\/pre>\n<h3>3. &#32534;&#20889;&#25511;&#21046;&#22120;&#20195;&#30721;<\/h3>\n<p>&#22312; <code>UserController<\/code> &#20013;&#32534;&#20889;&#22788;&#29702;&#34920;&#21333;&#25968;&#25454;&#30340;&#26041;&#27861;&#65292;&#24182;&#20351;&#29992; Laravel &#30340;&#20869;&#32622;&#39564;&#35777;&#21151;&#33021;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppModelsUser;\nuse Validator;\n\nclass UserController extends Controller\n{\n    public function store(Request $request)\n    {\n        \/\/ &#39564;&#35777;&#35831;&#27714;&#25968;&#25454;\n        $validator = Validator::make($request-&gt;all(), [\n            'name' =&gt; ['required', 'string', 'max:255'],\n            'email' =&gt; ['required', 'email', 'unique:users,email'],\n            'password' =&gt; ['required', 'string', 'min:8'],\n        ]);\n\n        if ($validator-&gt;fails()) {\n            return response()-&gt;json(['errors' =&gt; $validator-&gt;errors()], 400);\n        }\n\n        \/\/ &#22914;&#26524;&#39564;&#35777;&#36890;&#36807;&#65292;&#23384;&#20648;&#29992;&#25143;&#20449;&#24687;&#21040;&#25968;&#25454;&#24211;\n        $user = new User();\n        $user-&gt;name = $request-&gt;input('name');\n        $user-&gt;email = $request-&gt;input('email');\n        $user-&gt;password = bcrypt($request-&gt;input('password'));\n        $user-&gt;save();\n\n        return response()-&gt;json(['message' =&gt; 'User created successfully'], 201);\n    }\n}<\/code><\/pre>\n<h3>4. &#32534;&#20889;&#36335;&#30001;<\/h3>\n<p>&#22312; <code>routes\/web.php<\/code> &#25991;&#20214;&#20013;&#23450;&#20041;&#36335;&#30001;&#20197;&#22788;&#29702;&#34920;&#21333;&#25552;&#20132;&#12290;<\/p>\n<pre><code class=\"language-php\">Route::post('\/users', 'UserController@store');<\/code><\/pre>\n<h3>5. &#21019;&#24314;&#35270;&#22270;&#25991;&#20214;<\/h3>\n<p>&#22312; <code>resources\/views\/users<\/code> &#30446;&#24405;&#19979;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>create.blade.php<\/code> &#30340;&#35270;&#22270;&#25991;&#20214;&#12290;<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html lang=\"en\"&gt;\n&lt;head&gt;\n    &lt;meta charset=\"UTF-8\"&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;title&gt;Create User&lt;\/title&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n    &lt;h1&gt;Create User&lt;\/h1&gt;\n    &lt;form action=\"\/users\" method=\"POST\"&gt;\n        @csrf\n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"name\"&gt;Name:&lt;\/label&gt;\n            &lt;input type=\"text\" id=\"name\" name=\"name\" required&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"email\"&gt;Email:&lt;\/label&gt;\n            &lt;input type=\"email\" id=\"email\" name=\"email\" required&gt;\n        &lt;\/div&gt;\n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"password\"&gt;Password:&lt;\/label&gt;\n            &lt;input type=\"password\" id=\"password\" name=\"password\" required&gt;\n        &lt;\/div&gt;\n        &lt;button type=\"submit\"&gt;Create User&lt;\/button&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h3>6. &#35775;&#38382;&#34920;&#21333;&#39029;&#38754;<\/h3>\n<p>&#29616;&#22312;&#65292;&#20320;&#21487;&#20197;&#35775;&#38382; <code>\/users\/create<\/code> &#36335;&#30001;&#26469;&#27979;&#35797;&#34920;&#21333;&#39564;&#35777;&#30340;&#21151;&#33021;&#12290;<\/p>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#24050;&#32463;&#25104;&#21151;&#22320;&#22312; Laravel &#20013;&#23454;&#29616;&#20102;&#31616;&#21333;&#30340;&#36755;&#20837;&#25968;&#25454;&#39564;&#35777;&#12290;Laravel &#25552;&#20379;&#20102;&#20016;&#23500;&#30340;&#39564;&#35777;&#35268;&#21017;&#21644;&#33258;&#23450;&#20041;&#39564;&#35777;&#22120;&#65292;&#21487;&#20197;&#24110;&#21161;&#20320;&#22312;&#24212;&#29992;&#31243;&#24207;&#20013;&#26377;&#25928;&#22320;&#20445;&#25252;&#29992;&#25143;&#25968;&#25454;&#30340;&#23433;&#20840;&#24615;&#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><h3>&#27010;&#36848;<\/h3><p>&#22312;&#26412;&#25945;&#31243;&#20013;&#65292;&#25105;&#20204;&#23558;&#25506;&#35752;Laravel&#25552;&#20379;&#30340;&#24378;&#22823;&#39564;&#35777;&#31995;&#32479;&#65292;&#35813;&#31995;&#32479;&#30830;&#20445;&#22312;&#24212;&#29992;&#31243;&#24207;&#22788;&#29702;&#20043;&#21069;&#65292;&#25509;&#25910;&#21040;&#30340;&#25968;&#25454;&#31526;&#21512;&#39044;&#26399;&#26684;&#24335;&#12290;&#25968;&#25454;&#39564;&#35777;&#19981;&#20165;&#26159;Web&#24320;&#21457;&#20013;&#30340;&#20851;&#38190;&#26041;&#38754;&#65292;&#23427;&#19981;&#20165;&#20445;&#35777;&#20102;&#25968;&#25454;&#30340;&#36136;&#37327;&#21644;&#23436;&#25972;&#24615;&#65292;&#36824;&#20316;&#20026;&#24694;&#24847;&#25110;&#26080;&#25928;&#25968;&#25454;&#21253;&#30340;&#31532;&#19968;&#36947;&#38450;&#32447;&#12290;<\/p><p>Laravel &#25552;&#20379;&#20102;&#19968;&#31181;&#24378;&#22823;&#30340;&#19988;&#28789;&#27963;&#30340;&#25968;&#25454;&#39564;&#35777;&#26041;&#24335;&#65292;&#36890;&#36807;&#20869;&#32622;&#30340;&#39564;&#35777;&#35268;&#21017;&#65292;&#20320;&#21487;&#20197;&#36731;&#26494;&#22320;&#23545;&#20174;&#29992;&#25143;&#36755;&#20837;&#65288;&#22914;&#34920;&#21333;&#65289;&#25509;&#25910;&#21040;&#30340;&#25968;&#25454;&#36827;&#34892;&#21508;&#31181;&#26816;&#26597;&#12290;<\/p><h3>&#22522;&#26412;&#39564;&#35777;<\/h3><p>&#39318;&#20808;&#65292;&#35753;&#25105;&#20204;&#30475;&#30475;&#22914;&#20309;&#22312;&#25511;&#21046;&#22120;&#26041;&#27861;&#20869;&#37096;&#39564;&#35777;&#25968;&#25454;&#65306;<\/p><pre><code>\nuse IlluminateHttpRequest;\n\nclass UserController extends Controller\n{\n    public function store(Request $request)\n    {\n        $validatedData = $request-&gt;validate([\n            'username' =&gt; 'required|min:6|max:255',\n            'email' =&gt; 'required|email',\n            'password' =&gt; 'required|min:8'\n        ]);\n        \/\/ The user data is valid...\n    }\n}\n<\/code><\/pre><p>&#22914;&#26524;&#39564;&#35777;&#22833;&#36133;&#65292;&#29992;&#25143;&#23558;&#33258;&#21160;&#37325;&#23450;&#21521;&#21040;&#19978;&#19968;&#39029;&#65292;&#24182;&#26174;&#31034;&#38169;&#35823;&#28040;&#24687;&#12290;<\/p><h3>&#39640;&#32423;&#39564;&#35777;<\/h3><p>&#38543;&#30528;&#25105;&#20204;&#36827;&#20837;&#26356;&#39640;&#32423;&#21035;&#30340;&#22330;&#26223;&#65292;&#21487;&#33021;&#38656;&#35201;&#26465;&#20214;&#39564;&#35777;&#12289;&#33258;&#23450;&#20041;&#28040;&#24687;&#65292;&#29978;&#33267;&#33258;&#23450;&#20041;&#39564;&#35777;&#35268;&#21017;&#12290;<\/p><h4>&#23450;&#21046;&#38169;&#35823;&#28040;&#24687;<\/h4><pre><code>\n$messages = [\n    'email.required' =&gt; 'We need to know your e-mail address!'\n];\n\n$validatedData = $request-&gt;validate([\n    'username' =&gt; 'required|min:6|max:255',\n    'email' =&gt; 'required|email',\n    'password' =&gt; 'required|min:8'\n], $messages);\n<\/code><\/pre><p>Laravel &#20801;&#35768;&#24744;&#20026;&#27599;&#20010;&#35268;&#21017;&#28155;&#21152;&#33258;&#23450;&#20041;&#28040;&#24687;&#12290;<\/p><h4>&#34920;&#21333;&#35831;&#27714;&#39564;&#35777;<\/h4><p>&#23545;&#20110;&#22797;&#26434;&#30340;&#39564;&#35777;&#22330;&#26223;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992;&#34920;&#21333;&#35831;&#27714;&#39564;&#35777;&#12290;&#36825;&#28041;&#21450;&#21019;&#24314;&#19968;&#20010;&#33258;&#23450;&#20041;&#30340;&#35831;&#27714;&#31867;&#65292;&#22312;&#20854;&#20013;&#21487;&#20197;&#23553;&#35013;&#39564;&#35777;&#36923;&#36753;&#65306;<\/p><pre><code>\nphp artisan make:request StoreUserRequest\n<\/code><\/pre><p>&#29616;&#22312;&#65292;&#35831;&#23450;&#20041;&#29983;&#25104;&#35831;&#27714;&#31867;&#20013;&#30340;&#35268;&#21017;&#26041;&#27861;&#65306;<\/p><pre><code>\nclass StoreUserRequest extends FormRequest\n{\n    \/\/ Other methods...\n\n    public function rules()\n    {\n        return [\n            'username' =&gt; 'required|min:6|max:255',\n            \/\/ More rules...\n        ];\n    }\n}\n<\/code><\/pre><p>&#28982;&#21518;&#65292;&#22312;&#25511;&#21046;&#22120;&#20013;&#20351;&#29992;&#33258;&#23450;&#20041;&#35831;&#27714;&#65306;<\/p><pre><code>\npublic function store(StoreUserRequest $request)\n{\n    \/\/ The incoming request is valid...\n}\n<\/code><\/pre><p>&#22312;&#36825;&#31181;&#24773;&#20917;&#19979;&#65292;&#25511;&#21046;&#22120;&#26041;&#27861;&#24178;&#20928;&#19988;&#21482;&#22788;&#29702;&#39564;&#35777;&#21518;&#30340;&#25968;&#25454;&#12290;<\/p><p>&#32487;&#32493;&#25506;&#32034;&#26356;&#39640;&#32423;&#30340;&#39564;&#35777;&#25216;&#26415;&#65292;&#22914;&#35268;&#21017;&#23545;&#35937;&#12289;&#34920;&#21333;&#35831;&#27714;&#21518;&#38057;&#23376;&#12289;&#33258;&#23450;&#20041;&#39564;&#35777;&#35268;&#21017;&#21644;&#20351;&#29992;AJAX&#35843;&#29992;&#26469;&#36827;&#34892;&#23454;&#26102;&#39564;&#35777;&#12290;&#25552;&#20379;&#27599;&#20010;&#31034;&#20363;&#30340;&#20855;&#20307;&#20195;&#30721;&#12290;<\/p><h3>&#24149;&#21518;&#20043;&#29579;<\/h3><p>&#28145;&#20837;&#25506;&#35752;Laravel&#22914;&#20309;&#21033;&#29992;&#32534;&#31243;&#27010;&#24565;&#25552;&#20379;&#22914;&#27492;&#20248;&#38597;&#30340;&#39564;&#35777;&#31995;&#32479;&#12290;&#35299;&#37322;&#20381;&#36182;&#27880;&#20837;&#12289;&#26381;&#21153;&#25552;&#20379;&#31243;&#24207;&#21644;&#29305;&#24615;&#65292;&#36825;&#20123;&#23545;&#26032;&#25509;&#35302;Laravel&#30340;&#20154;&#26469;&#35828;&#21487;&#20197;&#30475;&#21040;&#26500;&#24314;&#39564;&#35777;&#36923;&#36753;&#30340;&#24378;&#22823;&#26500;&#36896;&#26159;&#22914;&#20309;&#24037;&#20316;&#30340;&#12290;<\/p><h3>API&#24320;&#21457;&#20013;&#30340;&#39564;&#35777;&#24037;&#20316;<\/h3><p>&#35752;&#35770;JSON&#21709;&#24212;&#12289;API&#36164;&#28304;&#31867;&#20197;&#21450;&#25552;&#20379;&#39564;&#35777;&#25968;&#25454;&#30340;&#26377;&#25928;&#26041;&#24335;&#30340;ValidatorFacade&#65292;&#36825;&#22312;RESTful API&#20013;&#36890;&#24120;&#20250;&#36820;&#22238;&#21253;&#21547;&#38169;&#35823;&#35814;&#24773;&#30340;JSON&#12290;Laravel&#20351;&#24471;&#31616;&#21333;&#22320;&#36820;&#22238;&#19968;&#33268;&#30340;&#39564;&#35777;&#38169;&#35823;&#32467;&#26500;&#21464;&#24471;&#23481;&#26131;&#12290;<\/p><h3>&#32467;&#35770;&#12290;<\/h3><p>&#22312;Laravel&#20013;&#65292;&#25968;&#25454;&#39564;&#35777;&#26159;&#19968;&#31181;&#24378;&#22823;&#30340;&#21151;&#33021;&#65292;&#30830;&#20445;&#24212;&#29992;&#31243;&#24207;&#30340;&#23436;&#25972;&#24615;&#21644;&#23433;&#20840;&#24615;&#12290;&#36890;&#36807;&#25484;&#25569;&#26412;&#25351;&#21335;&#20013;&#30340;&#39564;&#35777;&#25216;&#26415;&#65292;&#24320;&#21457;&#20154;&#21592;&#21487;&#20197;&#26500;&#24314;&#26356;&#21152;&#31283;&#20581;&#21644;&#21487;&#38752;&#30340;&#31995;&#32479;&#12290;Laravel&#30340;&#39564;&#35777;&#26426;&#21046;&#36275;&#22815;&#28789;&#27963;&#65292;&#33021;&#22815;&#36731;&#26494;&#32780;&#20248;&#38597;&#22320;&#22788;&#29702;&#20174;&#31616;&#21333;&#21040;&#22797;&#26434;&#30340;&#21508;&#31181;&#22330;&#26223;&#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; Laravel &#24212;&#29992;&#31243;&#24207;&#30340;&#24320;&#21457;&#36807;&#31243;&#20013;&#65292;&#27491;&#30830;&#22320;&#22788;&#29702;&#21644;&#39564;&#35777;&#29992;&#25143;&#36755;&#20837;&#23545;&#20110;&#30830;&#20445;&#24212;&#29992;&#31243;&#24207;&#30340;&#23433;&#20840;&#24615;&#21644;&#31283;&#23450;&#24615;&#33267;&#20851;&#37325;&#35201;&#12290;&#20197;&#19979;&#26159;&#19968;&#20123;&#20851;&#20110;&#22914;&#20309;&#20351;&#29992; Laravel &#36755;&#20837;&#25968;&#25454;&#39564;&#35777;&#30340;&#23454;&#29992;&#25351;&#21335;&#65306;<\/p>\n<h3>1. &#23433;&#35013;&#24182;&#37197;&#32622; Lumen Framework<\/h3>\n<p>&#39318;&#20808;&#65292;&#20320;&#38656;&#35201;&#23433;&#35013;&#24182;&#37197;&#32622; Laravel &#30340; Lumen &#26694;&#26550;&#12290;Lumen &#26159; Laravel &#30340;&#36731;&#37327;&#32423;&#29256;&#26412;&#65292;&#23427;&#25552;&#20379;&#20102;&#22522;&#26412;&#30340; API &#21644;&#19968;&#20123;&#21151;&#33021;&#65292;&#22914;&#25968;&#25454;&#24211;&#35775;&#38382;&#12290;<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/lumen<\/code><\/pre>\n<p>&#28982;&#21518;&#65292;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340; Lumen &#24212;&#29992;&#65292;&#24182;&#36890;&#36807; <code>php artisan serve<\/code> &#36816;&#34892;&#26381;&#21153;&#22120;&#12290;<\/p>\n<h3>2. &#20351;&#29992; Form Validation<\/h3>\n<p>&#22312; Laravel &#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; Form &#39564;&#35777;&#26469;&#23545;&#29992;&#25143;&#30340;&#36755;&#20837;&#36827;&#34892;&#39564;&#35777;&#12290;Form &#39564;&#35777;&#20801;&#35768;&#20320;&#22312;&#34920;&#21333;&#25552;&#20132;&#20043;&#21069;&#26816;&#26597;&#23383;&#27573;&#26159;&#21542;&#28385;&#36275;&#29305;&#23450;&#26465;&#20214;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;&#65306;<\/h4>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesValidator;\n\n\/\/ &#21019;&#24314;&#19968;&#20010;&#39564;&#35777;&#22120;&#23454;&#20363;\n$validator = Validator::make($request-&gt;all(), [\n    'name' =&gt; ['required', 'string', 'max:255'],\n    'email' =&gt; ['required', 'string', 'email', 'unique:users'],\n]);\n\nif ($validator-&gt;fails()) {\n    \/\/ &#22914;&#26524;&#39564;&#35777;&#22833;&#36133;&#65292;&#21017;&#36820;&#22238;&#38169;&#35823;&#28040;&#24687;\n    return response()-&gt;json(['errors' =&gt; $validator-&gt;errors()], 400);\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#21019;&#24314;&#20102;&#19968;&#20010;&#21517;&#20026; <code>$validator<\/code> &#30340;&#39564;&#35777;&#22120;&#23454;&#20363;&#65292;&#24182;&#35774;&#32622;&#20102;&#20960;&#20010;&#35268;&#21017;&#65306;&#21517;&#31216;&#26159;&#24517;&#22635;&#19988;&#26368;&#22823;&#38271;&#24230;&#20026; 255&#65307;&#30005;&#23376;&#37038;&#20214;&#22320;&#22336;&#24517;&#39035;&#26159;&#26377;&#25928;&#30340;&#19988;&#19981;&#33021;&#19982;&#29616;&#26377;&#29992;&#25143;&#37325;&#21517;&#12290;<\/p>\n<h4>&#20351;&#29992;&#26041;&#27861;&#65306;<\/h4>\n<ul>\n<li>&#23558;&#19978;&#36848;&#20195;&#30721;&#25918;&#20837;&#25511;&#21046;&#22120;&#65288;&#20363;&#22914; <code>AppHttpControllersMyController.php<\/code>)&#12290;<\/li>\n<li>&#22312;&#38656;&#35201;&#39564;&#35777;&#30340;&#22320;&#26041;&#35843;&#29992; <code>Validator::make()<\/code> &#26041;&#27861;&#65292;&#20256;&#20837;&#35831;&#27714;&#30340;&#25968;&#25454;&#12290;<\/li>\n<li>&#35843;&#29992; <code>validate()<\/code> &#26041;&#27861;&#26469;&#25191;&#34892;&#39564;&#35777;&#12290;<\/li>\n<li>&#22914;&#26524;&#39564;&#35777;&#25104;&#21151;&#65292;&#25511;&#21046;&#22120;&#23558;&#36820;&#22238; 200 &#29366;&#24577;&#30721;&#21644;&#30456;&#24212;&#30340; JSON &#32467;&#26500;&#21270;&#36755;&#20986;&#12290;<\/li>\n<li>&#22914;&#26524;&#39564;&#35777;&#22833;&#36133;&#65292;&#25511;&#21046;&#22120;&#23558;&#36820;&#22238; 400 &#29366;&#24577;&#30721;&#21644;&#38169;&#35823;&#20449;&#24687;&#12290;<\/li>\n<\/ul>\n<h3>3. &#20351;&#29992; Formatters<\/h3>\n<p>Laravel &#25552;&#20379;&#20102;&#20869;&#32622;&#30340; Formatters&#65292;&#29992;&#20110;&#26684;&#24335;&#21270;&#21644;&#28210;&#26579;&#39564;&#35777;&#38169;&#35823;&#20449;&#24687;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;&#65306;<\/h4>\n<pre><code class=\"language-php\">use IlluminateSupportFacadesValidator;\nuse IlluminateContractsValidationValidator;\n\n\/\/ &#26684;&#24335;&#21270;&#39564;&#35777;&#38169;&#35823;&#20449;&#24687;\nfunction formatValidationErrors(Validator $validator): array {\n    return $validator-&gt;errors();\n}\n\n\/\/ &#22312;&#25511;&#21046;&#22120;&#20013;&#20351;&#29992;\n$formats = [\n    'required' =&gt; '{attribute} is required',\n    'string' =&gt; '{attribute} must be a string',\n];\n\n\/\/ &#20351;&#29992; Formatters\n$validator = Validator::make($request-&gt;all(), [\n    'name' =&gt; ['required', 'string', 'max:255'],\n], $formats);\n\nif ($validator-&gt;fails()) {\n    \/\/ &#36820;&#22238;&#26684;&#24335;&#21270;&#30340;&#38169;&#35823;&#20449;&#24687;\n    return response()-&gt;json([\n        'errors' =&gt; $formatValidationErrors($validator),\n    ], 400);\n}<\/code><\/pre>\n<h3>4. &#20351;&#29992; Eloquent Models<\/h3>\n<p>Laravel &#30340; Eloquent ORM &#25903;&#25345;&#22810;&#31181;&#31867;&#22411;&#30340;&#39564;&#35777;&#65292;&#21253;&#25324;&#25972;&#25968;&#12289;&#28014;&#28857;&#25968;&#12289;&#26085;&#26399;&#31561;&#12290;<\/p>\n<h4>&#31034;&#20363;&#20195;&#30721;&#65306;<\/h4>\n<pre><code class=\"language-php\">use IlluminateDatabaseEloquentModel;\nuse IlluminateDatabaseEloquentFactoriesHasFactory;\n\nclass User extends Model\n{\n    use HasFactory;\n\n    protected $fillable = ['name', 'email'];\n\n    public function validateEmailAttribute()\n    {\n        if (!filter_var($this-&gt;email, FILTER_VALIDATE_EMAIL)) {\n            throw new IlluminateValidationValidationException(\n                'The provided email address is not valid.',\n                ['email' =&gt; $this-&gt;email]\n            );\n        }\n    }\n\n    public static function boot()\n    {\n        parent::boot();\n\n        static::creating(function (User $user) {\n            $user-&gt;validateEmailAttribute(); \/\/ &#22312;&#21019;&#24314;&#26102;&#39564;&#35777;&#37038;&#31665;\n        });\n    }\n}<\/code><\/pre>\n<h3>&#24635;&#32467;<\/h3>\n<p>&#22312; Laravel &#20013;&#65292;&#27491;&#30830;&#22788;&#29702;&#21644;&#39564;&#35777;&#29992;&#25143;&#36755;&#20837;&#26159;&#26500;&#24314;&#23433;&#20840;&#21644;&#21487;&#38752;&#24212;&#29992;&#31243;&#24207;&#30340;&#20851;&#38190;&#37096;&#20998;&#12290;&#36890;&#36807;&#20351;&#29992; Form &#39564;&#35777;&#12289;&#33258;&#23450;&#20041; Formatters &#25110;&#21033;&#29992; Eloquent ORM &#30340;&#28789;&#27963;&#39564;&#35777;&#26426;&#21046;&#65292;&#20320;&#21487;&#20197;&#26377;&#25928;&#22320;&#25511;&#21046;&#29992;&#25143;&#36755;&#20837;&#65292;&#25552;&#39640;&#24212;&#29992;&#31243;&#24207;&#30340;&#36136;&#37327;&#21644;&#29992;&#25143;&#20307;&#39564;&#12290;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#12298;Laravel&#36755;&#20837;&#25968;&#25454;&#39564;&#35777;&#65306;&#23454;&#29992;&#25351;&#21335;&#12299; Laravel &#26159;&#038;#19..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-822","my1js","type-my1js","status-publish","hentry","my1js2nav-laravel"],"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\/822","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=822"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=822"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=822"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}