<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## laravel表單驗證器 ## 驗證表單請求 ### 創建表單請求驗證 面對更復雜的情況,您可以創建一個「表單請求」來應對更復雜的驗證邏輯。表單請求是一個包含了驗證邏輯的自定義請求類。要創建一個表單請求類,請使用`make:request`Artisan CLI 命令: ~~~php php artisan make:request StoreBlogPost ~~~ 該命令生成的類將被置于`app/Http/Requests`目錄中。如果這個目錄不存在,在您運行`make:request`命令后將會創建這個目錄。讓我們添加一些驗證規則到`rules`方法中: ~~~php /** * 獲取應用于請求的規則 * * @return array */ public function rules() { return [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]; } ~~~ > 技巧:您可以向`rules`方法傳入所需的任何依賴項。它們將被 Laravel[服務容器](https://learnku.com/docs/laravel/8.x/container)自動解析。 所以,驗證規則是如何運行的呢?你所需要做的就是在控制器方法中類型提示傳入的請求。在調用控制器方法之前驗證傳入的表單請求,這意味著你不需要在控制器中寫任何驗證邏輯: ~~~php /** * 存儲傳入的博客文章 * * @param StoreBlogPost $request * @return Response */ public function store(StoreBlogPost $request) { // 傳入的請求通過驗證... // 獲取通過驗證的數據... $validated = $request->validated(); } ~~~ 如果驗證失敗,就會生成一個讓用戶返回到先前的位置的重定向響應。這些錯誤也會被閃存到 session 中,以便這些錯誤都可以在頁面中顯示出來。如果傳入的請求是 AJAX,會向用戶返回具有 422 狀態代碼和驗證錯誤信息的 JSON 數據的 HTTP 響應。 #### 在表單請求后添加鉤子 如果你想在表單請求「之后」添加鉤子,可以使用`withValidator`方法。這個方法接收一個完整的驗證構造器,允許你在驗證結果返回之前調用任何方法: ~~~php /** * 配置驗證實例 * * @param \Illuminate\Validation\Validator $validator * @return void */ public function withValidator($validator) { $validator->after(function ($validator) { if ($this->somethingElseIsInvalid()) { $validator->errors()->add('field', 'Something is wrong with this field!'); } }); } ~~~ ### 表單請求授權驗證 表單請求類內也包含了`authorize`方法。在這個方法中,你可以檢查經過身份驗證的用戶確定其是否具有更新給定資源的權限。比方說,你可以判斷用戶是否擁有更新文章評論的權限: ~~~php /** * 判斷用戶是否有請求權限 * * @return bool */ public function authorize() { $comment = Comment::find($this->route('comment')); return $comment && $this->user()->can('update', $comment); } ~~~ 由于所有的表單請求都是繼承了 Laravel 中的請求基類,所以我們可以使用`user`方法去獲取當前認證登錄的用戶。同時請注意上述例子中對`route`方法的調用。這個方法允許你在被調用的路由上獲取其定義的 URI 參數,譬如下面例子中的`{comment}`參數: ~~~php Route::post('comment/{comment}'); ~~~ 如果`authorize`方法返回`false`,則會自動返回一個包含 403 狀態碼的 HTTP 響應,也不會運行控制器的方法。 如果你打算在應用程序的其它部分處理授權邏輯,只需從`authorize`方法返回`true`: ~~~php /** * 判斷用戶是否有請求權限 * * @return bool */ public function authorize() { return true; } ~~~ > Tip:你可以向`authorize`方法傳入所需的任何依賴項。他們會自動被 Laravel 提供的[服務容器](https://learnku.com/docs/laravel/8.x/container)自動解析。 ## 手動創建驗證器 如果您不想再請求中使用`validate`方法,您可以使用`Validator`[門面](https://learnku.com/docs/laravel/8.x/facades)手動創建一個驗證器實例。門面中的`make`方法將會生成一個新的驗證器實例: ~~~php <?php namespace App\Http\Controllers; use App\Http\Controllers\Controller; use Illuminate\Http\Request; use Illuminate\Support\Facades\Validator; class PostController extends Controller { /** * 存儲一篇博客文章 * * @param Request $request * @return Response */ public function store(Request $request) { $validator = Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ]); if ($validator->fails()) { return redirect('post/create') ->withErrors($validator) ->withInput(); } // Store the blog post... } } ~~~ `make`方法中的第一個參數是期望校驗的數據。第二個參數是應用到數據上的校驗規則。 如果校驗失敗,您可以使用`withErrors`方法將錯誤信息閃存至 session 中。使用該方法時,`$errors`會自動與之后的視圖共享,您可以很方便將其回顯給用戶。`withErrors`方法接受驗證器實例,`MessageBag`或是 PHP`數組`。 ### 自動重定向 如果您想要在手動創建驗證器實例的同時,使用請求的`validate`方法的自動重定向功能,那么您可以在現有的驗證器實例上調用`validate`方法。如果校驗失敗,用戶將被自動重定向,或在 AJAX 請求下,將會返回一個 JSON 響應: ~~~php Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ])->validate(); ~~~ 如果校驗失敗,您可以使用`validateWithBag`方法將錯誤信息存儲到[命名錯誤包](https://learnku.com/docs/laravel/8.x/validation/9374#named-error-bags)中。 ~~~php Validator::make($request->all(), [ 'title' => 'required|unique:posts|max:255', 'body' => 'required', ])->validateWithBag('post'); ~~~ ### 命名錯誤包 如果您的一個頁面中存在多個表單,您可以為錯誤的`MessageBag`命名,用于檢索指定表單的錯誤信息。只需將名稱作為`withErrors`的第二個參數傳遞給它: ~~~php return redirect('register') ->withErrors($validator, 'login'); ~~~ 您可以通過`$errors`變量訪問命名后的`MessageBag`實例: ~~~php {{ $errors->login->first('email') }} ~~~ ### 驗證后鉤子 驗證器允許您在完成驗證操作后執行附加的回調。以便您處理下一步的驗證,甚至是往信息集合中添加更多的錯誤信息。您可以在驗證器實例上使用`after`方法以實現之: ~~~php $validator = Validator::make(...); $validator->after(function ($validator) { if ($this->somethingElseIsInvalid()) { $validator->errors()->add('field', 'Something is wrong with this field!'); } }); if ($validator->fails()) { // } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看