besogonskiy
@besogonskiy
работаю php laravel разработчиком.

Как в реквесте валидировать id сущности?

Как валидировать поля в requst при отправке post запроса - это понятно - Создаётся Request с правилами валидации по всем полям, которые нужно проверить.

А если еще нужно провалидировать ID подели, то как это сделать красиво, желательно внутри того же requst чтоб не писать лишний код в контроллере?

Например, роут такой:
Route::post("article/{id}", [ActicleController::class, 'update')->name('article.update');

и нужно чтоб помимо title, desctiption, user_id мы провалидировали еще id самого поста.
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
delphinpro
@delphinpro Куратор тега Laravel
frontend developer
При использовании биндинга вы получите 404 при некорректном ID
Кроме того, вам не нужно получать модель в контроллере, она сразу туда попадет.

Route::post("article/{article}", [ArticleController::class, 'update')
    ->name('article.update');

class ArticleController extends Controller
{
    public function update(Article $article, ArticleUpdateRequest $request)
    {
        $article
            ->fill($request->validated())
            ->save();

        return redirect(route('article.edit', $article));
    }
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
JhaoDa
@JhaoDa
LaravelRUS Team
Во-первых, id поста не относится к данным для валидации.

Во-вторых, если таки хочется велосипедить на квадратных колёсах и валидировать через реквест — ответ есть в документации.

В-третьих, чем не устраивает в контроллере что-то типа Article::query()->findOrFail($id), что более правильно?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы