Вы можете использовать встроенный validate
метод контроллера вместо создания нового экземпляра Validator.
public function update($id, Request $request) {
$valid = $this->validate($request, [
'name' => 'max:255',
]);
dd($valid);
}
Так что даже если кто-то отправляет другие параметры, которые не включены в правила,он не будет включен.
В нашем случае, если вы выполните запрос curl, как упомянуто, $valid
вернет пустой массив.
И затем вы можете проверить, является ли массив пустымили нет:
if (empty($valid)) {
// Do what you want
}
Примечание:
Я заметил, что вы используете Container::find($id);
, но вы также можете использовать привязку встроенной модели в файле маршрутов:
Route::put('your-path/{container}', 'ContainerController@update');
Вместо
Route::put('your-path/{id}', 'ContainerController@update');
Что бы разрешить это в вашем контроллере:
public function update(Container $container, Request $request)
{
// $container would be the Container instance already
}
Обновление
Если вы все еще хотитесделав новый экземпляр Validator, вы можете сделать это следующим образом:
$validator = \Validator::make($request->all(), $rules);
if ($validator->fails()) {
// ...
}
if (! $valid = $validator->validated()) {
// Nothing has been validated
}
В основном вам следует использовать $validator->validated()
вместо $validator->valid()
, чтобы получить поля только из ваших правил.