{"id":841,"date":"2025-06-12T00:55:49","date_gmt":"2025-06-11T16:55:49","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/841.html"},"modified":"2025-06-12T00:55:49","modified_gmt":"2025-06-11T16:55:49","slug":"laravel%ef%bc%9a%e5%a6%82%e4%bd%95%e9%aa%8c%e8%af%81%e5%85%b7%e6%9c%89%e5%8f%af%e9%80%89%e5%ad%97%e6%ae%b5%e7%9a%84%e8%a1%a8%e5%8d%95","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/841.html","title":{"rendered":"Laravel\uff1a\u5982\u4f55\u9a8c\u8bc1\u5177\u6709\u53ef\u9009\u5b57\u6bb5\u7684\u8868\u5355"},"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; Laravel &#20013;&#39564;&#35777;&#20855;&#26377;&#21487;&#36873;&#23383;&#27573;&#30340;&#34920;&#21333;&#21487;&#20197;&#36890;&#36807; <code>required<\/code>&#12289;<code>nullable<\/code> &#21644;&#33258;&#23450;&#20041;&#35268;&#21017;&#26469;&#23454;&#29616;&#12290;&#20197;&#19979;&#26159;&#19968;&#20010;&#31034;&#20363;&#65292;&#23637;&#31034;&#20102;&#22914;&#20309;&#20351;&#29992;&#36825;&#20123;&#35268;&#21017;&#26469;&#39564;&#35777;&#19968;&#20010;&#24102;&#26377;&#21487;&#36873;&#23383;&#27573;&#30340;&#34920;&#21333;&#12290;<\/p>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#27169;&#22411;&#65292;&#24182;&#19988;&#25105;&#20204;&#24076;&#26395;&#39564;&#35777;&#20854;&#34920;&#21333;&#65292;&#21253;&#25324;&#19968;&#20010;&#21487;&#36873;&#30340; <code>email<\/code> &#23383;&#27573;&#12290;<\/p>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#30340; <code>User<\/code> &#27169;&#22411;&#24050;&#32463;&#23450;&#20041;&#20102; <code>email<\/code> &#23383;&#27573;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppModels;\n\nuse IlluminateDatabaseEloquentModel;\n\nclass User extends Model\n{\n    protected $fillable = ['name', 'email'];\n\n    public function validateForm($request)\n    {\n        \/\/ &#20351;&#29992; required &#21644; nullable &#35268;&#21017;\n        return $request-&gt;validate([\n            'name' =&gt; 'required|string|max:255',\n            'email' =&gt; 'nullable|email|max:255',\n        ]);\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;<code>name<\/code> &#23383;&#27573;&#26159;&#24517;&#22635;&#30340;&#65292;&#24182;&#19988;&#26368;&#22823;&#38271;&#24230;&#20026; 255 &#20010;&#23383;&#31526;&#12290;<code>email<\/code> &#23383;&#27573;&#26159;&#21487;&#36873;&#30340;&#65292;&#20294;&#24517;&#39035;&#26159;&#19968;&#20010;&#26377;&#25928;&#30340;&#30005;&#23376;&#37038;&#20214;&#22320;&#22336;&#65292;&#24182;&#19988;&#26368;&#22823;&#38271;&#24230;&#20026; 255 &#20010;&#23383;&#31526;&#12290;<\/p>\n<p>&#25509;&#19979;&#26469;&#65292;&#25105;&#20204;&#21487;&#20197;&#32534;&#20889;&#19968;&#20010;&#25511;&#21046;&#22120;&#26041;&#27861;&#26469;&#22788;&#29702;&#34920;&#21333;&#25552;&#20132;&#24182;&#36827;&#34892;&#39564;&#35777;&#65306;<\/p>\n<pre><code class=\"language-php\">namespace AppHttpControllers;\n\nuse AppModelsUser;\nuse IlluminateHttpRequest;\n\nclass UserController extends Controller\n{\n    public function store(Request $request)\n    {\n        $validatedData = User::validateForm($request);\n\n        if ($validatedData) {\n            \/\/ &#22788;&#29702;&#36890;&#36807;&#39564;&#35777;&#30340;&#25968;&#25454;\n            User::create($validatedData);\n            return response()-&gt;json(['message' =&gt; 'User created successfully'], 201);\n        } else {\n            return response()-&gt;json(['errors' =&gt; $validatedData], 422);\n        }\n    }\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#25511;&#21046;&#22120;&#26041;&#27861;&#20013;&#65292;&#25105;&#20204;&#35843;&#29992; <code>User::validateForm<\/code> &#26041;&#27861;&#26469;&#39564;&#35777;&#34920;&#21333;&#25968;&#25454;&#12290;&#22914;&#26524;&#39564;&#35777;&#25104;&#21151;&#65292;&#25105;&#20204;&#23558;&#29992;&#25143;&#25968;&#25454;&#23384;&#20648;&#21040;&#25968;&#25454;&#24211;&#20013;&#65307;&#22914;&#26524;&#39564;&#35777;&#22833;&#36133;&#65292;&#25105;&#20204;&#23558;&#36820;&#22238;&#21253;&#21547;&#38169;&#35823;&#20449;&#24687;&#30340; JSON &#21709;&#24212;&#12290;<\/p>\n<p>&#24635;&#32467;&#19968;&#19979;&#65292;&#36890;&#36807;&#22312; Laravel &#20013;&#20351;&#29992; <code>required<\/code>&#12289;<code>nullable<\/code> &#21644;&#33258;&#23450;&#20041;&#35268;&#21017;&#65292;&#20320;&#21487;&#20197;&#36731;&#26494;&#22320;&#39564;&#35777;&#20855;&#26377;&#21487;&#36873;&#23383;&#27573;&#30340;&#34920;&#21333;&#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;Laravel&#26500;&#24314;Web&#24212;&#29992;&#26102;&#65292;&#34920;&#21333;&#39564;&#35777;&#26159;&#19968;&#39033;&#33267;&#20851;&#37325;&#35201;&#30340;&#32452;&#25104;&#37096;&#20998;&#65292;&#23427;&#26377;&#21161;&#20110;&#32500;&#25252;&#25968;&#25454;&#23436;&#25972;&#24615;&#21644;&#25552;&#21319;&#29992;&#25143;&#20307;&#39564;&#12290;&#23613;&#31649;&#26377;&#20123;&#23383;&#27573;&#26159;&#24517;&#22635;&#30340;&#65292;&#20294;&#36824;&#26377;&#19968;&#20123;&#23383;&#27573;&#21487;&#33021;&#26159;&#21487;&#36873;&#30340;&#65292;&#27491;&#30830;&#22788;&#29702;&#36825;&#20123;&#21487;&#36873;&#39033;&#23545;&#20110;&#19968;&#20010;&#31934;&#33391;&#30340;&#24212;&#29992;&#33267;&#20851;&#37325;&#35201;&#12290;&#26412;&#25945;&#31243;&#23558;&#25351;&#23548;&#24744;&#36890;&#36807;Laravel&#30340;&#19981;&#21516;&#31574;&#30053;&#26469;&#39564;&#35777;&#21253;&#21547;&#21487;&#36873;&#39033;&#30340;&#34920;&#21333;&#12290;<\/p><h2>&#29702;&#35299;Laravel&#39564;&#35777;<\/h2><p>Laravel &#25552;&#20379;&#20102;&#19968;&#20010;&#20869;&#32622;&#30340;&#39564;&#35777;&#23618;&#65292;&#36890;&#36807;&#31867;&#21644;&#26041;&#27861;&#26469;&#23454;&#29616;&#24378;&#22823;&#30340;&#25968;&#25454;&#39564;&#35777;&#21151;&#33021;&#65292;&#36825;&#20123;&#21151;&#33021;&#26131;&#20110;&#20351;&#29992;&#12290;&#22312; Laravel &#20013;&#65292;&#36890;&#24120;&#20250;&#20351;&#29992;&#20197;&#19979;&#26041;&#24335;&#26469;&#39564;&#35777;&#25968;&#25454;&#65306;<code>validate<\/code>&#22312;Laravel&#22522;&#30784;&#25511;&#21046;&#22120;&#31867;&#20013;&#30340;&#26041;&#27861;&#65292;&#20197;&#21450;&#38745;&#24577;&#26041;&#27861;&#12290;<code>make<\/code>&#26041;&#27861;&#35770;&#30340;<code>Validator<\/code>&#22806;&#35266;&#12290;<\/p><h3>&#22522;&#26412;&#39564;&#35777;&#31034;&#20363;<\/h3><pre><code>public function store(Request $request)\n{\n    $request-&gt;validate([\n        'title' =&gt; 'required|max:255',\n        'content' =&gt; 'required',\n        \/\/ Define other fields to be validated here\n    ]);\n    \n    \/\/ Handle the validated data\n}\n<\/code><\/pre><p>&#36825;&#19968;&#22522;&#26412;&#39564;&#35777;&#23558;&#20250;&#30830;&#20445;&#35831;&#27714;&#30340;&ldquo;&#26631;&#39064;&rdquo;&#21644;&ldquo;&#20869;&#23481;&rdquo;&#24517;&#39035;&#23384;&#22312;&#19988;&#31526;&#21512;&#26368;&#22823;&#38271;&#24230;&#35268;&#21017;&#12290;<\/p><h2>&#24517;&#22635;&#23383;&#27573;&#39564;&#35777;<\/h2><p>&#26377;&#26102;&#65292;&#26576;&#20123;&#23383;&#27573;&#21487;&#33021;&#26080;&#38656;&#22635;&#20889;&#25968;&#25454;&#65292;&#27492;&#26102;&#39564;&#35777;&#35268;&#21017;&#20250;&#20165;&#22312;&#23383;&#27573;&#23384;&#22312;&#26102;&#29983;&#25928;&#12290;&#20026;&#27492;&#65292;Laravel &#20351;&#29992;&ldquo;nullable&rdquo;&#35268;&#21017;&#12290;<\/p><h3>&#20351;&#29992;&ldquo;nullable&rdquo;&#35268;&#21017;&#12290;<\/h3><pre><code>public function store(Request $request)\n{\n    $request-&gt;validate([\n        'title' =&gt; 'required|max:255',\n        'content' =&gt; 'required',\n        'summary' =&gt; 'nullable|max:255',\n        \/\/ The summary field is optional\n    ]);\n    \n    \/\/ Handle the validated data\n}\n<\/code><\/pre><p>&#22312;&#19978;&#36848;&#31034;&#20363;&#20013;&#65292;&ldquo;&#25688;&#35201;&rdquo;&#23383;&#27573;&#20165;&#22312;&#36755;&#20837;&#20013;&#23384;&#22312;&#26102;&#25165;&#39564;&#35777;&ldquo;&#26368;&#22823;&#20540;&rdquo;&#35268;&#21017;&#12290;<\/p><h2>&#39640;&#32423;&#39564;&#35777;&#22330;&#26223;<\/h2><p>&#22312;&#26356;&#22797;&#26434;&#30340;&#34920;&#21333;&#24418;&#24335;&#20013;&#65292;&#24744;&#21487;&#33021;&#24076;&#26395;&#26681;&#25454;&#20854;&#20182;&#23383;&#27573;&#30340;&#20986;&#29616;&#25110;&#20540;&#20197;&#21450;&#26576;&#20123;&#24212;&#29992;&#31243;&#24207;&#36923;&#36753;&#26469;&#24212;&#29992;&#29305;&#23450;&#30340;&#39564;&#35777;&#35268;&#21017;&#12290;<\/p><h3>&#26465;&#20214;&#39564;&#35777;&#65292;&#20351;&#29992;&#35268;&#21017;&#23545;&#35937;<\/h3><p>&#20026;&#20102;&#21019;&#24314;&#26356;&#22797;&#26434;&#30340;&#39564;&#35777;&#36923;&#36753;&#65292;&#24744;&#21487;&#20197;&#20351;&#29992;&#34920;&#21333;&#35831;&#27714;&#39564;&#35777;&#25110;&#35268;&#21017;&#23545;&#35937;&#65292;&#36825;&#20123;&#23545;&#35937;&#20801;&#35768;&#23553;&#35013;&#39564;&#35777;&#36923;&#36753;&#12290;<\/p><pre><code>use IlluminateContractsValidationRule;\n\nclass CustomRule implements Rule\n{\n    public function passes($attribute, $value)\n    {\n        \/\/ Complex validation logic here\n    }\n    \n    public function message()\n    {\n        return 'The validation error message.';\n    }\n}\n<\/code><\/pre><p>&#21487;&#20197;&#23558;&#27492;&#33258;&#23450;&#20041;&#35268;&#21017;&#24212;&#29992;&#20110;&#24744;&#30340;&#39564;&#35777;&#36923;&#36753;&#65292;&#22914;&#19979;&#25152;&#31034;&#65306;<\/p><pre><code>$request-&gt;validate([\n        'summary' =&gt; ['nullable', new CustomRule()],\n    ]);\n<\/code><\/pre><p>&#36825;&#31181;&#26041;&#27861;&#25552;&#20379;&#20102;&#28789;&#27963;&#24615;&#21644;&#26356;&#24178;&#20928;&#30340;&#20195;&#30721;&#65292;&#23588;&#20854;&#26159;&#22312;&#22788;&#29702;&#39640;&#32423;&#39564;&#35777;&#24773;&#20917;&#26102;&#12290;<\/p><h3>&#39564;&#35777;&#25968;&#32452;<\/h3><p>Laravel&#36824;&#20801;&#35768;&#24744;&#39564;&#35777;&#23383;&#27573;&#25968;&#32452;&#65292;&#36825;&#22312;&#29992;&#25143;&#21487;&#20197;&#21160;&#24577;&#28155;&#21152;&#22810;&#20010;&#25968;&#25454;&#38598;&#30340;&#34920;&#21333;&#20013;&#38750;&#24120;&#26377;&#29992;&#12290;<\/p><pre><code>$request-&gt;validate([\n        'items.*.name' =&gt; 'required|max:255',\n        'items.*.description' =&gt; 'nullable|max:255'\n    ]);\n<\/code><\/pre><p>&#36825;&#27573;&#36923;&#36753;&#23558;&#39564;&#35777;&lsquo;items&rsquo;&#25968;&#32452;&#20013;&#30340;&#27599;&#20010;&ldquo;name&rdquo;&#26159;&#21542;&#23384;&#22312;&#65292;&#20197;&#21450;&#20165;&#22312;&#21253;&#21547;&ldquo;description&rdquo;&#30340;&#24773;&#20917;&#19979;&#25165;&#23545;&ldquo;max&rdquo;&#35268;&#21017;&#36827;&#34892;&#39564;&#35777;&#12290;<\/p><h2>&#26368;&#20339;&#23454;&#36341;&#39564;&#35777;<\/h2><p>&#20351;&#29992;&#26174;&#24335;&#39564;&#35777;&#35268;&#21017;&#20316;&#20026;&#31034;&#20363;&#26159;&#24456;&#22909;&#30340;&#23454;&#36341;&#65292;&#20294;&#22312;&#22823;&#22411;&#24212;&#29992;&#20013;&#20351;&#29992;&#34920;&#21333;&#35831;&#27714;&#31867;&#26469;&#32452;&#32455;&#26356;&#26377;&#25928;&#12290;&#36890;&#36807;&#23450;&#20041;&#34920;&#21333;&#35831;&#27714;&#31867;&#65292;&#24744;&#21487;&#20197;&#20445;&#25345;&#25511;&#21046;&#22120;&#26041;&#27861;&#30340;&#31616;&#27905;&#65292;&#24182;&#33719;&#24471;&#19987;&#38376;&#30340;&#22320;&#26041;&#26469;&#32452;&#32455;&#39564;&#35777;&#36923;&#36753;&#30340;&#22909;&#22788;&#12290;<\/p><h2>&#23450;&#21046;&#38169;&#35823;&#28040;&#24687;&#21644;&#26412;&#22320;&#21270;<\/h2><p>&#20026;&#20102;&#36827;&#19968;&#27493;&#25552;&#21319;&#29992;&#25143;&#20307;&#39564;&#65292;Laravel &#20801;&#35768;&#24744;&#33258;&#23450;&#20041;&#39564;&#35777;&#38169;&#35823;&#28040;&#24687;&#65292;&#24182;&#29978;&#33267;&#21487;&#20197;&#26412;&#22320;&#21270;&#20197;&#36866;&#24212;&#19981;&#21516;&#35821;&#35328;&#12290;<\/p><pre><code>$messages = [\n        'title.required' =&gt; 'A title is required for the blog post.',\n        'content.required' =&gt; 'Content cannot be empty.',\n        'summary.max' =&gt; 'Summary should not exceed 255 characters.',\n    ];\n$request-&gt;validate([\n        'title' =&gt; 'required|max:255',\n        'content' =&gt; 'required',\n        'summary' =&gt; 'nullable|max:255'\n    ], $messages);\n<\/code><\/pre><h2>&#32467;&#35770;&#12290;<\/h2><p>&#22312;Laravel&#20013;&#39564;&#35777;&#21487;&#36873;&#23383;&#27573;&#38750;&#24120;&#31616;&#21333;&#19988;&#28789;&#27963;&#12290;&#36890;&#36807;&#21033;&#29992;&ldquo;nullable&rdquo;&#35268;&#21017;&#21644;&#26465;&#20214;&#36923;&#36753;&#65292;&#20320;&#21487;&#20197;&#21019;&#24314;&#20986;&#36866;&#29992;&#20110;&#24744;&#24212;&#29992;&#38656;&#27714;&#30340;&#24378;&#22823;&#30340;&#34920;&#21333;&#65292;&#21516;&#26102;&#30830;&#20445;&#25968;&#25454;&#23436;&#25972;&#24615;&#24182;&#25552;&#20379;&#27969;&#30021;&#30340;&#29992;&#25143;&#20307;&#39564;&#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>&#35201;&#22312; Laravel &#20013;&#39564;&#35777;&#20855;&#26377;&#21487;&#36873;&#23383;&#27573;&#30340;&#34920;&#21333;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; Laravel &#30340; Eloquent ORM &#21644; Formik &#27169;&#22359;&#26469;&#26500;&#24314;&#19968;&#20010;&#24378;&#22823;&#30340;&#34920;&#21333;&#39564;&#35777;&#31995;&#32479;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#23454;&#29616;&#36825;&#19968;&#30446;&#26631;&#30340;&#35814;&#32454;&#27493;&#39588;&#65306;<\/p>\n<h3>&#27493;&#39588; 1: &#21019;&#24314;&#19968;&#20010;&#26032;&#30340; Laravel &#24212;&#29992;&#21644;&#39033;&#30446;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; Composer &#24182;&#19988;&#26377;&#19968;&#20010;&#26032;&#30340; Laravel &#39033;&#30446;&#12290;<\/p>\n<pre><code class=\"language-bash\">composer create-project --prefer-dist laravel\/laravel my-project<\/code><\/pre>\n<h3>&#27493;&#39588; 2: &#23548;&#20837;&#25152;&#38656;&#30340;&#24211;<\/h3>\n<p>&#25171;&#24320; <code>app\/Http\/Kernel.php<\/code> &#25991;&#20214;&#65292;&#23548;&#20837;&#38656;&#35201;&#30340;&#24211;&#12290;<\/p>\n<pre><code class=\"language-php\">namespace AppHttp;\n\nuse IlluminateFoundationAliasLoader;\nuse IlluminateSupportFacadesRoute;\nuse IlluminateFoundationTestingDatabaseTransactions;\n\nclass Kernel extends AppKernel\n{\n    use DatabaseTransactions;\n\n    protected $assetsDir = 'vendor\/laravel\/framework\/resources\/assets';\n\n    public function boot()\n    {\n        parent::boot();\n\n        \/\/ Load the assets directory\n        AliasLoader::getInstance()-&gt;alias('Form', 'AppForm');\n    }\n}<\/code><\/pre>\n<h3>&#27493;&#39588; 3: &#37197;&#32622; Formik &#27169;&#22359;<\/h3>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340; <code>.env<\/code> &#25991;&#20214;&#24182;&#28155;&#21152;&#20197;&#19979;&#37197;&#32622;&#65306;<\/p>\n<pre><code class=\"language-env\">FIELDMODEL_VALIDATION=true\nFORMIK_MODEL=MyFormFieldModel<\/code><\/pre>\n<p>&#36825;&#37324;&#65292;&#25105;&#20204;&#25351;&#23450;&#20102;&#35201;&#20351;&#29992;&#30340;&#27169;&#22411;&#65288;&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#26159; <code>MyFormFieldModel<\/code>&#65289;&#65292;&#24182;&#23558; <code>FIELDMODEL_VALIDATION<\/code> &#35774;&#32622;&#20026; <code>true<\/code> &#26469;&#21551;&#29992;&#34920;&#21333;&#39564;&#35777;&#12290;<\/p>\n<h3>&#27493;&#39588; 4: &#21019;&#24314;&#34920;&#21333;&#25511;&#21046;&#22120;<\/h3>\n<p>&#25509;&#19979;&#26469;&#65292;&#21019;&#24314;&#19968;&#20010;&#21517;&#20026; <code>MyFormFieldController<\/code> &#30340;&#26032;&#25511;&#21046;&#22120;&#65292;&#24182;&#24341;&#20837;&#30456;&#24212;&#30340; Formik &#32452;&#20214;&#12290;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppHttpControllers;\n\nuse IlluminateHttpRequest;\nuse AppForm;\nuse Formik;\nuse IlluminateContractsViewFactory as ViewFactory;\nuse IlluminateSupportFacadesSession;\nuse IlluminateSupportFacadesValidator;\n\nclass MyFormFieldController extends Controller\n{\n    public function __construct() {\n        $this-&gt;middleware('auth');\n    }\n\n    \/**\n     * Display a listing of the resource.\n     *\n     * @return IlluminateHttpResponse\n     *\/\n    public function index(Request $request)\n    {\n        \/\/ &#36825;&#37324;&#21487;&#20197;&#25191;&#34892;&#19968;&#20123;&#36923;&#36753;&#65292;&#27604;&#22914;&#33719;&#21462;&#25152;&#26377;&#21487;&#29992;&#30340;&#23383;&#27573;\n        $fields = Field::all();\n\n        return view('my_field_index', compact('fields'));\n    }\n\n    \/**\n     * Show the form for creating a new resource.\n     *\n     * @return IlluminateHttpResponse\n     *\/\n    public function create()\n    {\n        return view('create_form');\n    }\n\n    \/**\n     * Store a newly created resource in storage.\n     *\n     * @param  IlluminateHttpRequest  $request\n     * @return IlluminateHttpResponse\n     *\/\n    public function store(Request $request)\n    {\n        $validator = Validator::make($request-&gt;all(), [\n            'field_name' =&gt; ['required'],\n            'value' =&gt; ['required']\n        ]);\n\n        if ($validator-&gt;fails()) {\n            Session::flash('message', $validator-&gt;messages());\n            return redirect('\/my-field-index')-&gt;withErrors($validator);\n        } else {\n            $formData = array_merge(\n                request()-&gt;only('field_name', 'value'),\n                request()-&gt;except('_token')\n            );\n\n            \/\/ &#23558;&#25968;&#25454;&#23384;&#20648;&#21040;&#25968;&#25454;&#24211;\n            Form::store($formData);\n\n            \/\/ &#28165;&#31354;&#34920;&#21333;&#25968;&#25454;\n            $request-&gt;session()-&gt;forget('form_data');\n\n            Session::flash('success', 'Form data has been successfully saved.');\n\n            return redirect('\/my-field-index');\n        }\n    }\n\n    \/**\n     * Display the specified resource.\n     *\n     * @param  int  $id\n     * @return IlluminateHttpResponse\n     *\/\n    public function show($id)\n    {\n        \/\/\n    }\n\n    \/**\n     * Show the form for editing the specified resource.\n     *\n     * @param  int  $id\n     * @return IlluminateHttpResponse\n     *\/\n    public function edit($id)\n    {\n        \/\/\n    }\n\n    \/**\n     * Update the specified resource in storage.\n     *\n     * @param  IlluminateHttpRequest  $request\n     * @param  int  $id\n     * @return IlluminateHttpResponse\n     *\/\n    public function update(Request $request, $id)\n    {\n        \/\/\n    }\n\n    \/**\n     * Remove the specified resource from storage.\n     *\n     * @param  int  $id\n     * @return IlluminateHttpResponse\n     *\/\n    public function destroy($id)\n    {\n        \/\/\n    }\n}<\/code><\/pre>\n<h3>&#27493;&#39588; 5: &#20351;&#29992; Formik &#25511;&#21046;&#22120;<\/h3>\n<p>&#29616;&#22312;&#65292;&#20320;&#38656;&#35201;&#22312; <code>resources\/views\/my_field\/index.blade.php<\/code> &#20013;&#20351;&#29992; Formik &#25511;&#21046;&#22120;&#12290;<\/p>\n<pre><code class=\"language-blade\">&lt;!-- Add your HTML code here --&gt;\n&lt;div class=\"container\"&gt;\n    &lt;div class=\"row justify-content-center\"&gt;\n        &lt;div class=\"col-md-8\"&gt;\n            &lt;h1&gt;Create New Field&lt;\/h1&gt;\n            &lt;form id=\"my-form\" action=\"{{ route('my-field.store') }}\" method=\"POST\"&gt;\n                @csrf\n\n                &lt;label for=\"field_name\"&gt;Field Name:&lt;\/label&gt;\n                &lt;input type=\"text\" name=\"field_name\" id=\"field_name\" required&gt;\n\n                &lt;label for=\"value\"&gt;Value:&lt;\/label&gt;\n                &lt;input type=\"text\" name=\"value\" id=\"value\" required&gt;\n\n                &lt;button type=\"submit\"&gt;Submit&lt;\/button&gt;\n            &lt;\/form&gt;\n        &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;<\/code><\/pre>\n<h3>&#27493;&#39588; 6: &#23454;&#29616;&#34920;&#21333;&#39564;&#35777;<\/h3>\n<p>&#22312; <code>resources\/views\/create_form.blade.php<\/code> &#20013;&#23450;&#20041;&#34920;&#21333;&#39564;&#35777;&#35268;&#21017;&#12290;<\/p>\n<pre><code class=\"language-blade\">&lt;!-- Add your HTML code here --&gt;\n&lt;form id=\"my-form\" action=\"{{ route('my-field.store') }}\" method=\"POST\"&gt;\n    @csrf\n\n    &lt;label for=\"field_name\"&gt;Field Name:&lt;\/label&gt;\n    &lt;input type=\"text\" name=\"field_name\" id=\"field_name\" required&gt;\n\n    &lt;label for=\"value\"&gt;Value:&lt;\/label&gt;\n    &lt;input type=\"text\" name=\"value\" id=\"value\" required&gt;\n\n    &lt;button type=\"submit\"&gt;Submit&lt;\/button&gt;\n&lt;\/form&gt;<\/code><\/pre>\n<h3>&#27493;&#39588; 7: &#37096;&#32626;&#24212;&#29992;<\/h3>\n<p>&#26368;&#21518;&#65292;&#23558;&#20320;&#30340;&#24212;&#29992;&#31243;&#24207;&#37096;&#32626;&#21040;&#26381;&#21153;&#22120;&#19978;&#12290;&#36825;&#36890;&#24120;&#28041;&#21450;&#22312;&#20320;&#30340;&#26381;&#21153;&#22120;&#19978;&#23433;&#35013; Laravel&#65292;&#28982;&#21518;&#36816;&#34892;&#23427;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan serve<\/code><\/pre>\n<p>&#29616;&#22312;&#65292;&#20320;&#24212;&#35813;&#33021;&#22815;&#22312;&#27983;&#35272;&#22120;&#20013;&#30475;&#21040;&#19968;&#20010;&#31616;&#21333;&#30340;&#34920;&#21333;&#39029;&#38754;&#65292;&#20801;&#35768;&#29992;&#25143;&#36755;&#20837;&#23383;&#27573;&#21517;&#31216;&#21644;&#20540;&#65292;&#24182;&#25552;&#20132;&#34920;&#21333;&#12290;&#19968;&#26086;&#29992;&#25143;&#25552;&#20132;&#34920;&#21333;&#65292;&#34920;&#21333;&#20250;&#33258;&#21160;&#20445;&#23384;&#21040;&#25968;&#25454;&#24211;&#65292;&#24182;&#36890;&#36807;&#30005;&#23376;&#37038;&#20214;&#36890;&#30693;&#31649;&#29702;&#21592;&#24744;&#30340;&#26032;&#23383;&#27573;&#24050;&#25104;&#21151;&#21019;&#24314;&#12290;<\/p>\n<p>&#20197;&#19978;&#23601;&#26159;&#22312; Laravel &#20013;&#23454;&#29616;&#20855;&#26377;&#21487;&#36873;&#23383;&#27573;&#30340;&#34920;&#21333;&#30340;&#22522;&#26412;&#27493;&#39588;&#12290;&#22914;&#26524;&#20320;&#26377;&#20219;&#20309;&#38382;&#39064;&#65292;&#35831;&#38543;&#26102;&#25552;&#38382;&#65281;<\/p>\r\n<\/div>\r\n<\/div>\r\n<\/div>\r\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Bug&#32534;&#35793;&#29422; &#22312; Laravel &#20013;&#39564;&#35777;&#20855;&#26377;&#21487;&#36873;&#23383;&#27573;&#30340;&#34920;&#21333;&#21487;&#20197;&#038;#3..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-841","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\/841","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=841"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=841"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=841"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}