gpt4 book ai didi

forms - Laravel 5 上表单和模型之间数据验证的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-02 03:21:00 27 4
gpt4 key购买 nike

我习惯于在另一个框架中同时进行模型和表单验证。但我正在迁移到 Laravel 并试图了解它的思维方式。

数据验证的最佳方法是什么?我有 seen一些 classes这有助于创建表单和验证请求,但是让模型在未验证数据的情况下保存数据是否不安全?

我如何整合表单(前端)、请求(后端)和模型验证,使它们能够很好地协同工作?或者 Laravel 世界根本没有这样做?

最佳答案

作为 Laravel 的初学者,我可以说出学习者的想法。

首先要了解的是,Laravel 是非常非常非常非常非常抽象的。它为您提供了针对单个问题的数千种解决方案。由于您刚刚起步,我假设您使用的是 Laravel 5(更具体地说是 5.1)。

来自 Controller 的 $this->validate()

You can use $this->validate() in your controllers .

class SomeController extends Controller {

public function store(Request $request){
$this->validate($request, [
'title' => 'required|unique:posts|max:255',
'body' => 'required',
]);

// This passed validation.
}
}

验证门面

config/app.php 中,您将找到一个 aliases 字段,该字段将 Validator Facade 定义为 'Validator' => Illuminate\Support\Facades\验证器::类You can make validators from basically anywhere .

public function store(Request $request) {
$validator = Validator::make($request->all(), [
'email' => 'required|unique:emails|email',
]);

if ($validator->fails()) {
// Error logic
}

// Store the blog post...
}

表单请求

就个人而言,我喜欢表单请求。它们允许您在您喜欢的任何 Controller 中重用一次定义的验证逻辑。你可以在你的项目中运行

php artisan make:request MyCustomRequest

这将在 app/Http/Requests 中生成一个新请求,您可以在 rules 方法 中编写规则。然后,当您想使用它时,只需键入提示您的 Controller 方法即可。

使用方法如下:

public function store(CompanyRequest $request){
// This code will only be executed if the rules inside CompanyRequest
// Are true.
}

这是定义 CompanyRequest 的文件。

class CompanyRequest extends Request {
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize() {
return true;
}

/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules() {
return [
'name' => 'required|max:255',
'domain' => 'required|max:40'
];
}

}

结论

可能还有几种方法可以做到这一点。例如,您可以在 Eloquent 模型中使用 Validator::make facade。 Laravel 提供了多种处理基本问题的方法。你只需要找到最适合你的东西并主修它。

关于forms - Laravel 5 上表单和模型之间数据验证的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33445927/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com