Laravel 8 編寫驗(yàn)證邏輯

2021-07-17 16:06 更新

現(xiàn)在我們開始在 store 方法中編寫用來驗(yàn)證新的博客文章的邏輯代碼。為此,我們將使用 Illuminate\Http\Request 類提供的 validate 方法。如果驗(yàn)證通過,你的代碼會(huì)繼續(xù)正常運(yùn)行。如果驗(yàn)證失敗,則會(huì)拋出異常,并自動(dòng)將對(duì)應(yīng)的錯(cuò)誤響應(yīng)返回給用戶。 在傳統(tǒng) HTTP 請(qǐng)求下,會(huì)生成一個(gè)重定向響應(yīng), 而對(duì)于 AJAX 請(qǐng)求則會(huì)發(fā)送 JSON 響應(yīng)。

為了深入理解 validate 方法,讓我們接著回到 store 方法中:

/**
 * 存儲(chǔ)一篇新的博客文章
 *
 * @param  Request  $request
 * @return Response
 */
public function store(Request $request)
{
    $validatedData = $request->validate([
        'title' => 'required|unique:posts|max:255',
        'body' => 'required',
    ]);

    // 博客文章驗(yàn)證通過...
} 

如你所見,我們將所需的驗(yàn)證規(guī)則傳遞至 validate 方法中。另外再提醒一次,如果驗(yàn)證失敗,會(huì)自動(dòng)生成一個(gè)對(duì)應(yīng)的響應(yīng)。如果驗(yàn)證通過,那我們的控制器會(huì)繼續(xù)正常運(yùn)行。

或者,驗(yàn)證規(guī)則可以使用數(shù)組而不是單個(gè) | 分隔的字符串:

$validatedData = $request->validate([
    'title' => ['required', 'unique:posts', 'max:255'],
    'body' => ['required'],
]); 

你可以使用 validateWithBag 方法來驗(yàn)證請(qǐng)求,并將所有錯(cuò)誤信息儲(chǔ)存在一個(gè) 命名錯(cuò)誤信息包 中:

$validatedData = $request->validateWithBag('post', [
    'title' => ['required', 'unique:posts', 'max:255'],
    'body' => ['required'],
]); 


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)