Один request для post и patch метода в Laravel
Всем привет.
Можно ли использовать один свой Request с валидацией для Post и Patch методов?
При добавлении поста нужно обязательно загрузить изображение, о чем валидация и говорит что типа поле image required
При обновлении поста, использую тот же Request, но при обновлении могут например изменить заголовок, но изображение менять не будут. Соответственно Request видит что поле image null и валидация не проходит.
Пока на ум приходит только создание отдельного request для обновления, но может есть другой выход?
Ответы (1 шт):
Создайте отдельный FormRequest для обновления. Стандартная команда Laravel тоже так делает:
php artisan make:model Post --requests
Единственная проблема такого подхода — дублирование кода. Вы можете устранить его, если вынесете правила проверки всех изображений в отдельный trait, который затем включите в оба класса:
trait Image
{
public function image_rules(): array
{
return ['image' => ['image']];
}
}
class StorePostRequest extends FormRequest
{
use Image;
public function rules(): array
{
$image_rules = $this->image_rules();
$image_rules['image'] = array_merge(['required'], $image_rules['image']);
return $image_rules;
}
}