拉拉维尔验证的最佳实践

我创建新表单请求并将其用于所有 CRUD 操作

并用于检查请求之间的差异$this->getMethod();

然后我面临逻辑问题

  1. 在更新方法中,存储方法中所需的所有字段是否都应该是必需的

    =>这里的问题是API的消费者是否应该发送所有密钥对象来更新特定密钥

  2. 如果不应该,并且从 API 发送的键名称与数据库表列名称不同

    =>我不能使用,因为键与列名不同,那么我需要循环所有请求键以忽略具有null的键 - 也可以通过多重检查来完成update($request()->all()); -

那么请问最佳实践是什么?


陪伴而非守候
浏览 102回答 3
3回答

阿波罗的战车

在拉拉维尔中,有许多方法可以验证数据。我更喜欢的不是在控制器中编写验证检查并将其写入单独的表单请求,并将该请求对象用作参数。假设我们有一个用户模型,并且需要一个名称和控制器的唯一in和方法,你可以简单地使用对象,如下所述。storeupdateUserRequest创建表单请求类php artisan make:request UserRequestclass UserRequeset extends Request{    /**     * Get the validation rules that apply to the request.     *     * @return array     */    public function rules()    {        $id = request('id') ?: 'NULL'; // To identify if a request is for store or update just take autoincremented id parameter from request         return [             'name' => "required|unique:users,name,$id"         ];        // You can also customize your validation for different methods as below        switch ($this->method()) {            case 'POST':                return [                    // validation for post method                ];            break;            case 'PUT':                return [                    // validation for put method                ];            break;            default:                return [];            break;        }    }    public function messages()    {        return [            "name.required" => "User name is required",            "name.unique" => "User name should be unique"            // or you can customize this using language            "name.required" => __("user.required_message"),            "name.unique" => __("user.unique_message")        ];    }}在UserControlleruse App\Http\Requests\UserRequest;class UserController extends Controller{    public function store(UserRequest $request)    {        // Enter your code just after validation part no need of any validation code here    }    public function update(UserRequest $request)    {        // Enter your update code just after validation part no need of any validation code here    }}

慕丝7291255

您可以使用以下方法执行此操作:$this->validate(    $request,    [        'YOUR INPUT FIELD NAME' => 'required',    ]);你也可以使用自拉威尔5.5+:$request->validate()$request->validate(    [        'YOUR INPUT FIELD NAME' => 'required',    ]);

叮当猫咪

$validator = Validator::make($request->all(), [    'phone' => 'sometimes|max:255',    'name' => 'required|string|max:255',    'email' => 'required|string|email|max:255',    'pic_file' => 'sometimes|mimes:jpg,png,jpeg,gif|max:1000',]);if ($validator->fails()) {    return redirect('/')->withErrors($validator);}
打开App,查看更多内容
随时随地看视频慕课网APP