{"id":861,"date":"2025-06-12T01:23:09","date_gmt":"2025-06-11T17:23:09","guid":{"rendered":"https:\/\/www.zhaozhao123.cn\/php\/php-application-manual\/laravel\/861.html"},"modified":"2025-06-12T01:23:09","modified_gmt":"2025-06-11T17:23:09","slug":"%e5%a6%82%e4%bd%95%e5%9c%a8laravel%e4%b8%ad%e9%aa%8c%e8%af%81%e9%82%ae%e7%ae%b1%ef%bc%88%e9%99%84%e7%a4%ba%e4%be%8b%ef%bc%89","status":"publish","type":"my1js","link":"https:\/\/www.zhaozhao123.cn\/php\/my1js\/861.html","title":{"rendered":"\u5982\u4f55\u5728Laravel\u4e2d\u9a8c\u8bc1\u90ae\u7bb1\uff08\u9644\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; Laravel &#20013;&#39564;&#35777;&#37038;&#31665;&#26159;&#19968;&#20010;&#24120;&#35265;&#30340;&#38656;&#27714;&#65292;&#21487;&#20197;&#20351;&#29992;&#20869;&#32622;&#30340;&#39564;&#35777;&#22120;&#26469;&#23454;&#29616;&#12290;&#20197;&#19979;&#26159;&#22914;&#20309;&#22312; Laravel &#20013;&#39564;&#35777;&#37038;&#31665;&#30340;&#27493;&#39588;&#65306;<\/p>\n<h3>1. &#23433;&#35013;&#24517;&#35201;&#30340;&#21253;<\/h3>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#20320;&#24050;&#32463;&#23433;&#35013;&#20102; <code>laravel\/framework<\/code> &#21644; <code>laravel\/ui<\/code>&#12290;<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/framework<\/code><\/pre>\n<p>&#28982;&#21518;&#23433;&#35013; <code>laravel\/ui<\/code> &#21253;&#20197;&#29983;&#25104;&#36523;&#20221;&#39564;&#35777;&#31995;&#32479;&#12290;<\/p>\n<pre><code class=\"language-bash\">php artisan ui:auth --theme=bootstrap<\/code><\/pre>\n<h3>2. &#37197;&#32622;&#39564;&#35777;&#35268;&#21017;<\/h3>\n<p>&#22312;&#20320;&#30340;&#25511;&#21046;&#22120;&#20013;&#65292;&#20320;&#21487;&#20197;&#20351;&#29992; <code>validate<\/code> &#26041;&#27861;&#26469;&#39564;&#35777;&#37038;&#31665;&#23383;&#27573;&#12290;<\/p>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\nuse AppHttpControllersController;\n\nclass UserController extends Controller\n{\n    public function store(Request $request)\n    {\n        \/\/ &#39564;&#35777;&#37038;&#31665;\n        $validatedData = $request-&gt;validate([\n            'email' =&gt; 'required|email|max:255|unique:users',\n        ]);\n\n        \/\/ &#22914;&#26524;&#39564;&#35777;&#36890;&#36807;&#65292;&#32487;&#32493;&#22788;&#29702;&#25968;&#25454;\n        $user = User::create($validatedData);\n\n        return redirect()-&gt;route('home');\n    }\n}<\/code><\/pre>\n<h3>3. &#31034;&#20363;&#20195;&#30721;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#31616;&#21333;&#30340;&#34920;&#21333;&#26469;&#25552;&#20132;&#29992;&#25143;&#20449;&#24687;&#65292;&#20854;&#20013;&#21253;&#21547;&#37038;&#31665;&#23383;&#27573;&#12290;&#20197;&#19979;&#26159;&#23436;&#25972;&#30340;&#31034;&#20363;&#20195;&#30721;&#65306;<\/p>\n<h4>&#34920;&#21333;&#21019;&#24314;<\/h4>\n<p>&#22312; <code>resources\/views\/users\/create.blade.php<\/code> &#25991;&#20214;&#20013;&#21019;&#24314;&#34920;&#21333;&#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=\"{{ route('users.store') }}\" method=\"post\"&gt;\n        @csrf\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 class=\"form-control\"&gt;\n        &lt;\/div&gt;\n        &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Submit&lt;\/button&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<h4>&#25511;&#21046;&#22120;&#26041;&#27861;<\/h4>\n<p>&#22312; <code>app\/Http\/Controllers\/UserController.php<\/code> &#25991;&#20214;&#20013;&#65292;&#28155;&#21152; <code>store<\/code> &#26041;&#27861;&#12290;<\/p>\n<pre><code class=\"language-php\">use IlluminateHttpRequest;\nuse AppModelsUser;\nuse AppHttpControllersController;\n\nclass UserController extends Controller\n{\n    public function store(Request $request)\n    {\n        \/\/ &#39564;&#35777;&#37038;&#31665;\n        $validatedData = $request-&gt;validate([\n            'email' =&gt; 'required|email|max:255|unique:users',\n        ]);\n\n        \/\/ &#22914;&#26524;&#39564;&#35777;&#36890;&#36807;&#65292;&#32487;&#32493;&#22788;&#29702;&#25968;&#25454;\n        $user = User::create($validatedData);\n\n        return redirect()-&gt;route('home');\n    }\n}<\/code><\/pre>\n<h3>4. &#39564;&#35777;&#38169;&#35823;&#22788;&#29702;<\/h3>\n<p>&#20026;&#20102;&#25552;&#20379;&#26356;&#22909;&#30340;&#29992;&#25143;&#20307;&#39564;&#65292;&#21487;&#20197;&#22312;&#35270;&#22270;&#20013;&#26174;&#31034;&#39564;&#35777;&#38169;&#35823;&#12290;<\/p>\n<p>&#22312; <code>resources\/views\/users\/create.blade.php<\/code> &#25991;&#20214;&#20013;&#28155;&#21152;&#38169;&#35823;&#22788;&#29702;&#36923;&#36753;&#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=\"{{ route('users.store') }}\" method=\"post\"&gt;\n        @csrf\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 class=\"form-control\"&gt;\n            @if ($errors-&gt;has('email'))\n                &lt;span class=\"text-danger\"&gt;{{ $errors-&gt;first('email') }}&lt;\/span&gt;\n            @endif\n        &lt;\/div&gt;\n        &lt;button type=\"submit\" class=\"btn btn-primary\"&gt;Submit&lt;\/button&gt;\n    &lt;\/form&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>&#36890;&#36807;&#20197;&#19978;&#27493;&#39588;&#65292;&#20320;&#23601;&#21487;&#20197;&#22312; Laravel &#20013;&#25104;&#21151;&#39564;&#35777;&#37038;&#31665;&#20102;&#12290;&#24076;&#26395;&#36825;&#23545;&#20320;&#26377;&#24110;&#21161;&#65281;<\/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>&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#26159;&#29616;&#20195;Web&#24212;&#29992;&#31243;&#24207;&#19981;&#21487;&#25110;&#32570;&#30340;&#19968;&#37096;&#20998;&#65292;&#29992;&#20110;&#30830;&#20445;&#29992;&#25143;&#30340;&#30495;&#23454;&#36523;&#20221;&#24182;&#20943;&#23569;&#22403;&#22334;&#37038;&#20214;&#12290;Laravel&#20316;&#20026;&#19968;&#27454;&#24378;&#22823;&#30340;PHP&#26694;&#26550;&#65292;&#25552;&#20379;&#20102;&#23454;&#29616;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#30340;&#31616;&#21333;&#26041;&#27861;&#12290;&#26412;&#25945;&#31243;&#23558;&#24102;&#20320;&#19968;&#27493;&#27493;&#22320;&#20102;&#35299;&#22914;&#20309;&#22312;Laravel&#24212;&#29992;&#20013;&#23454;&#29616;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#12290;&#25105;&#20204;&#23558;&#20174;&#22522;&#30784;&#24320;&#22987;&#35762;&#35299;&#65292;&#28982;&#21518;&#36880;&#27493;&#28145;&#20837;&#21040;&#26356;&#22797;&#26434;&#30340;&#22330;&#26223;&#65292;&#25552;&#20379;&#20195;&#30721;&#31034;&#20363;&#21644;&#39044;&#26399;&#36755;&#20986;&#31561;&#20855;&#20307;&#20869;&#23481;&#12290;<\/p><h3>&#21069;&#32622;&#26465;&#20214;<\/h3><p>&#22312;&#32487;&#32493;&#20043;&#21069;&#65292;&#24744;&#24212;&#35813;&#24050;&#32463;&#65306;<\/p><p>&#35775;&#38382;&#37038;&#20214;&#26381;&#21153;&#20197;&#21457;&#36865;&#30005;&#23376;&#37038;&#20214;<\/p><p>&#20026;&#24744;&#30340;&#24212;&#29992;&#37197;&#32622;&#20102;&#19968;&#20010;&#25968;&#25454;&#24211;&#12290;<\/p><p>&#20102;&#35299;Laravel&#30340;MVC&#32467;&#26500;<\/p><p>&#19968;&#20010;&#36816;&#34892;&#20013;&#30340;Laravel&#24212;&#29992;&#31243;&#24207;<\/p><h2>&#22522;&#30784;&#35774;&#32622;<\/h2><p>&#20351;&#29992; Laravel &#35774;&#32622;&#22522;&#26412;&#30340;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#38750;&#24120;&#31616;&#21333;&#65292;&#36890;&#36807;&#20351;&#29992;&#35813;&#21151;&#33021;&#12290;<code>MustVerifyEmail<\/code>&#21512;&#21516;&#21644;&#20869;&#32622;&#36890;&#30693;&#31995;&#32479;&#12290;&#35753;&#25105;&#20204;&#20808;&#22312;&#26032;&#30340;Laravel&#39033;&#30446;&#20013;&#23454;&#29616;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#21151;&#33021;&#12290;<\/p><p>&#39318;&#20808;&#65292;&#35831;&#30830;&#20445;&#24744;&#30340;<code>User<\/code>&#27169;&#22411;&#23454;&#29616;&#20102;&#12290;<code>MustVerifyEmail<\/code>&#21512;&#21516;&#65306;<\/p><pre><code>&lt;?php\nnamespace AppModels;\n\nuse IlluminateContractsAuthMustVerifyEmail as MustVerifyEmailContract;\nuse IlluminateFoundationAuthUser as Authenticatable;\nuse IlluminateNotificationsNotifiable;\n\nclass User extends Authenticatable implements MustVerifyEmailContract\n{\n    use Notifiable;\n\n    \/\/ ...\n}\n<\/code><\/pre><p>&#25509;&#19979;&#26469;&#65292;&#20462;&#25913;&#40664;&#35748;&#36335;&#30001;&#12290;<code>web.php<\/code>&#21253;&#25324;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#36335;&#30001;&#65306;<\/p><pre><code>Auth::routes(['verify' =&gt; true]);\n<\/code><\/pre><p>&#22909;&#30340;&#65292;&#35831;&#25552;&#20379;&#38656;&#35201;&#26356;&#26032;&#30340;&#20869;&#23481;&#25110;&#20449;&#24687;&#12290;<code>registered()<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#22826;&#26126;&#30333;&#24744;&#30340;&#24847;&#24605;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#19968;&#19979;&#12290;<code>RegisterController.php<\/code>(&#25110;&#31561;&#21516;&#20110;&#27880;&#20876;&#25511;&#21046;&#22120;&#30340;&#20154;&#21592;)&#22312;&#27880;&#20876;&#21518;&#30830;&#20445;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#26159;&#24517;&#35201;&#30340;&#65306;<\/p><pre><code>protected function registered(Request $request, $user)\n{\n    $user-&gt;sendEmailVerificationNotification();\n\n    return redirect($this-&gt;redirectPath())-&gt;with('verified', true);\n}\n<\/code><\/pre><h2>&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#37197;&#32622;<\/h2><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#30340;&#25351;&#20196;&#65292;&#35831;&#24744;&#37325;&#26032;&#25551;&#36848;&#24744;&#30340;&#35831;&#27714;&#12290;<code>.env<\/code>&#35831;&#21442;&#38405;&#20197;&#19979;&#27493;&#39588;&#26469;&#37197;&#32622;&#24744;&#30340;&#37038;&#20214;&#26381;&#21153;&#35814;&#24773;&#65306;<\/p><pre><code>MAIL_MAILER=smtp\nMAIL_HOST=mailtrap.io\nMAIL_PORT=2525\nMAIL_USERNAME=null\nMAIL_PASSWORD=null\nMAIL_ENCRYPTION=null\nMAIL_FROM_ADDRESS=null\nMAIL_FROM_NAME=\"${APP_NAME}\"\n<\/code><\/pre><p>Laravel &#23558;&#20351;&#29992;&#36825;&#20123;&#20449;&#24687;&#21457;&#36865;&#39564;&#35777;&#30005;&#23376;&#37038;&#20214;&#12290;&#22312;&#24320;&#21457;&#36807;&#31243;&#20013;&#65292;&#25512;&#33616;&#20351;&#29992;&#26381;&#21153;&#22914; Mailtrap &#26469;&#25429;&#33719;&#21644;&#27979;&#35797;&#37038;&#20214;&#12290;<\/p><h2>&#23450;&#21046;&#30005;&#23376;&#37038;&#20214;<\/h2><p>&#22914;&#26524;&#24744;&#24076;&#26395;&#26356;&#25913;&#39564;&#35777;&#30005;&#23376;&#37038;&#20214;&#30340;&#22806;&#35266;&#65292;&#21487;&#20197;&#33258;&#23450;&#20041;&#36890;&#30693;&#12290;&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#36890;&#30693;&#22914;&#19979;&#65306;<\/p><pre><code>php artisan make:notification VerifyEmailCustom\n<\/code><\/pre><p>&#23545;&#19981;&#36215;&#65292;&#25105;&#19981;&#26126;&#30333;&#20320;&#22312;&#35828;&#20160;&#20040;&#12290;<code>VerifyEmailCustom.php<\/code>&#24744;&#21487;&#20197;&#26681;&#25454;&#38656;&#35201;&#33258;&#23450;&#20041;&#30005;&#23376;&#37038;&#20214;&#65306;<\/p><pre><code>&lt;?php\nnamespace AppNotifications;\n\nuse IlluminateAuthNotificationsVerifyEmail as VerifyEmailBase;\nuse IlluminateNotificationsMessagesMailMessage;\n\nclass VerifyEmailCustom extends VerifyEmailBase\n{\n    protected function buildMailMessage($url)\n    {\n        return (new MailMessage)\n            -&gt;subject('Verify Email Address')\n            -&gt;line('Please click the button below to verify your email address.')\n            -&gt;action('Verify Email Address', $url);\n    }\n}\n<\/code><\/pre><p>&#35201;&#20351;&#29992;&#27492;&#33258;&#23450;&#20041;&#36890;&#30693;&#65292;&#38656;&#35201;&#37325;&#20889;&#23427;&#12290;<code>sendEmailVerificationNotification()<\/code>&#23545;&#19981;&#36215;&#65292;&#25105;&#26080;&#27861;&#29702;&#35299;&#24744;&#35201;&#34920;&#36798;&#30340;&#20869;&#23481;&#12290;&#22914;&#26524;&#24744;&#26377;&#20854;&#20182;&#38382;&#39064;&#25110;&#38656;&#35201;&#24110;&#21161;&#65292;&#35831;&#35814;&#32454;&#35828;&#26126;&#12290;<code>User<\/code>&#22909;&#30340;&#65292;&#35831;&#21457;&#36865;&#20320;&#38656;&#35201;&#32763;&#35793;&#30340;&#20869;&#23481;&#12290;<\/p><pre><code>public function sendEmailVerificationNotification()\n{\n    $this-&gt;notify(new VerifyEmailCustom);\n}\n<\/code><\/pre><h2>&#39640;&#32423;&#22330;&#26223;&#65306;&#39564;&#35777;&#25490;&#38431;&#37038;&#20214;<\/h2><p>&#20026;&#20102;&#38450;&#27490;&#27880;&#20876;&#26399;&#38388;&#30340;&#24310;&#35823;&#65292;&#24314;&#35758;&#25490;&#38431;&#39564;&#35777;&#30005;&#23376;&#37038;&#20214;&#12290;&#23454;&#26045;&#36825;&#20010;&#25514;&#26045;&#12290;<code>ShouldQueue<\/code>&#22312;&#24744;&#30340;&#33258;&#23450;&#20041;&#36890;&#30693;&#20013;&#28155;&#21152;&#25509;&#21475;&#65306;<\/p><pre><code>&lt;?php\nnamespace AppNotifications;\n\nuse IlluminateBusQueueable;\nuse IlluminateContractsQueueShouldQueue;\n\nclass VerifyEmailCustom extends VerifyEmailBase implements ShouldQueue\n{\n    use Queueable;\n    \/\/ ...\n}\n<\/code><\/pre><p>&#30830;&#20445;&#24744;&#30340;&#30005;&#23376;&#37038;&#20214;&#30456;&#20851;&#29615;&#22659;&#21464;&#37327;&#25903;&#25345;&#38431;&#21015;&#24037;&#20316;&#36127;&#36733;&#12290;<\/p><h2>&#27491;&#22312;&#27979;&#35797;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#21151;&#33021;&#12290;&#35831;&#31245;&#31561;&#12290;<\/h2><p>&#20026;&#20102;&#27979;&#35797;&#20320;&#30340;&#35774;&#32622;&#65292;&#35831;&#20351;&#29992;Tinker&#25110;&#36827;&#34892;&#36866;&#24403;&#30340;HTTP&#35831;&#27714;&#12290;&#29992;&#25143;&#37038;&#31665;&#39564;&#35777;&#29366;&#24577;&#21487;&#20197;&#36890;&#36807;&#20197;&#19979;&#26041;&#24335;&#26816;&#26597;&#65306;<\/p><pre><code>php artisan tinker\n&gt; $user = AppModelsUser::find(1);\n&gt; $user-&gt;hasVerifiedEmail();\n\/\/ Outputs: false\n<\/code><\/pre><p>&#28982;&#21518;&#65292;&#25353;&#29031;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#27969;&#31243;&#36827;&#34892;&#25805;&#20316;&#65292;&#26597;&#30475;&#29366;&#24577;&#26356;&#26032;&#24773;&#20917;&#65306;<\/p><pre><code>&gt; $user-&gt;markEmailAsVerified();\n&gt; $user-&gt;hasVerifiedEmail();\n\/\/ Outputs: true\n<\/code><\/pre><h2>&#32467;&#35770;&#12290;<\/h2><p>Laravel&#30340;&#20869;&#32622;&#21151;&#33021;&#31616;&#21270;&#20102;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#30340;&#36807;&#31243;&#12290;&#21487;&#20197;&#26681;&#25454;&#39033;&#30446;&#38656;&#27714;&#36827;&#19968;&#27493;&#23450;&#21046;&#27492;&#27969;&#31243;&#12290;&#21153;&#24517;&#30830;&#20445;&#22949;&#21892;&#22788;&#29702;&#21644;&#23384;&#20648;&#29992;&#25143;&#20449;&#24687;&#30340;&#23433;&#20840;&#24615;&#12290;&#25353;&#29031;&#26412;&#25351;&#21335;&#20013;&#30340;&#27493;&#39588;&#23454;&#26045;&#65292;&#24744;&#21487;&#20197;&#22312;&#24744;&#30340;Laravel&#39033;&#30446;&#20013;&#36731;&#26494;&#23454;&#29616;&#21487;&#38752;&#30340;&#30005;&#23376;&#37038;&#20214;&#39564;&#35777;&#31995;&#32479;&#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 &#20013;&#39564;&#35777;&#30005;&#23376;&#37038;&#20214;&#22320;&#22336;&#21487;&#20197;&#36890;&#36807;&#20351;&#29992; <code>IlluminateSupportFacadesHash<\/code> &#21644; <code>IlluminateValidationValidation<\/code> &#21253;&#20013;&#30340;&#26041;&#27861;&#26469;&#23454;&#29616;&#12290;<\/p>\n<h3>&#31034;&#20363;<\/h3>\n<p>&#20551;&#35774;&#25105;&#20204;&#26377;&#19968;&#20010;&#21517;&#20026; <code>User<\/code> &#30340;&#27169;&#22411;&#65292;&#24182;&#19988;&#23427;&#26377;&#20197;&#19979;&#23383;&#27573;&#65306;<\/p>\n<pre><code class=\"language-php\">public function getUserNameAttribute($value) {\n    return strtolower(str_replace(' ', '', $value));\n}<\/code><\/pre>\n<p>&#29616;&#22312;&#25105;&#20204;&#24819;&#35201;&#39564;&#35777;&#29992;&#25143;&#36755;&#20837;&#30340;&#30005;&#23376;&#37038;&#20214;&#26159;&#21542;&#26377;&#25928;&#65292;&#25105;&#20204;&#21487;&#20197;&#36825;&#26679;&#20570;&#65306;<\/p>\n<ol>\n<li>&#20351;&#29992; <code>Validator<\/code> &#31867;&#36827;&#34892;&#39564;&#35777;&#12290;<\/li>\n<li>&#26816;&#26597;&#39564;&#35777;&#35268;&#21017;&#26159;&#21542;&#28385;&#36275;&#12290;<\/li>\n<li>&#22914;&#26524;&#19981;&#28385;&#36275;&#65292;&#21017;&#25243;&#20986;&#24322;&#24120;&#24182;&#25552;&#31034;&#38169;&#35823;&#20449;&#24687;&#12290;<\/li>\n<\/ol>\n<p>&#39318;&#20808;&#65292;&#30830;&#20445;&#24744;&#24050;&#32463;&#23433;&#35013;&#20102; Laravel &#24212;&#29992;&#21644; PHP&#12290;&#28982;&#21518;&#65292;&#35831;&#25353;&#29031;&#20197;&#19979;&#27493;&#39588;&#25805;&#20316;&#65306;<\/p>\n<h4>&#27493;&#39588; 1&#65306;&#23450;&#20041;&#39564;&#35777;&#22120;&#35268;&#21017;<\/h4>\n<p>&#21019;&#24314;&#19968;&#20010;&#26032;&#30340;&#25991;&#20214;&#65292;&#20363;&#22914; <code>EmailVerification.php<\/code> &#25110;&#32773;&#19982;&#20043;&#31867;&#20284;&#30340;&#21517;&#31216;&#12290;&#23558;&#20197;&#19979;&#20195;&#30721;&#28155;&#21152;&#21040;&#35813;&#25991;&#20214;&#20013;&#65306;<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nnamespace AppValidators;\n\nuse IlluminateContractsValidationValidator;\nuse IlluminateFoundationHttpFormRequest;\n\nclass EmailVerification extends FormRequest\n{\n    public static function rules(): array\n    {\n        return [\n            'email' =&gt; ['required', 'string', 'email', 'unique:users,email'],\n        ];\n    }\n}<\/code><\/pre>\n<h4>&#27493;&#39588; 2: &#37197;&#32622;&#39564;&#35777;&#22120;<\/h4>\n<p>&#22312; Laravel &#30340; <code>.env<\/code> &#25991;&#20214;&#20013;&#37197;&#32622;&#39564;&#35777;&#22120;&#65306;<\/p>\n<pre><code class=\"language-bash\">MAIL_DRIVER=smtp\nMAIL_HOST=smtp.example.com\nMAIL_PORT=587\nMAIL_USERNAME=your-email@example.com\nMAIL_PASSWORD=password\nMAIL_ENCRYPTION=tls<\/code><\/pre>\n<p>&#36825;&#23558;&#20250;&#20351;&#37038;&#20214;&#26381;&#21153;&#22120;&#36830;&#25509;&#21040; <code>smtp.example.com<\/code> &#24182;&#35774;&#32622;&#20026; TLS &#21152;&#23494;&#12290;<\/p>\n<h4>&#27493;&#39588; 3: &#36816;&#34892;&#39564;&#35777;&#22120;<\/h4>\n<p>&#22312;&#25511;&#21046;&#22120;&#25110;&#20854;&#20182;&#38656;&#35201;&#39564;&#35777;&#30340;&#22320;&#26041;&#36816;&#34892;&#39564;&#35777;&#22120;&#65306;<\/p>\n<pre><code class=\"language-php\">public function store(Request $request)\n{\n    $this-&gt;validate($request, [\n        'email' =&gt; [ \/\/ &#35268;&#21017;\n            'required',\n            'string',\n            'email',\n            'unique:users,email'\n        ]\n    ]);\n\n    \/\/ &#36825;&#37324;&#21487;&#20197;&#22788;&#29702;&#23384;&#20648;&#29992;&#25143;&#30340;&#36923;&#36753;...\n}<\/code><\/pre>\n<p>&#22312;&#36825;&#20010;&#20363;&#23376;&#20013;&#65292;&#25105;&#20204;&#21482;&#23545; <code>email<\/code> &#23383;&#27573;&#36827;&#34892;&#20102;&#39564;&#35777;&#65292;&#22240;&#20026;&#36825;&#26159;&#25105;&#20204;&#30340;&#21807;&#19968;&#39564;&#35777;&#23383;&#27573;&#12290;&#22914;&#26524;&#20854;&#20182;&#23383;&#27573;&#20063;&#24212;&#34987;&#39564;&#35777;&#65292;&#21482;&#38656;&#30456;&#24212;&#22320;&#26356;&#25913; <code>rules()<\/code> &#20989;&#25968;&#21363;&#21487;&#12290;<\/p>\n<p>&#20197;&#19978;&#23601;&#26159;&#22914;&#20309;&#22312; Laravel &#20013;&#39564;&#35777;&#30005;&#23376;&#37038;&#20214;&#22320;&#22336;&#30340;&#22522;&#26412;&#27493;&#39588;&#12290;&#26681;&#25454;&#24744;&#30340;&#20855;&#20307;&#38656;&#27714;&#65292;&#24744;&#21487;&#20197;&#36827;&#19968;&#27493;&#35843;&#25972;&#36825;&#20123;&#35268;&#21017;&#20197;&#28385;&#36275;&#24744;&#30340;&#19994;&#21153;&#38656;&#27714;&#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; Laravel &#20013;&#39564;&#35777;&#37038;&#31665;&#26159;&#19968;&#20010;&#24120;&#35265;&#30340;&#38656;&#27714;&#65292;&#038;#2..<\/p>\n","protected":false},"author":1,"featured_media":0,"menu_order":0,"template":"","meta":{"_acf_changed":false},"tags":[],"my1js2nav":[44],"tuisongtax":[],"class_list":["post-861","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\/861","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=861"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tags?post=861"},{"taxonomy":"my1js2nav","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/my1js2nav?post=861"},{"taxonomy":"tuisongtax","embeddable":true,"href":"https:\/\/www.zhaozhao123.cn\/php\/wp-json\/wp\/v2\/tuisongtax?post=861"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}