Загружать только маршрут с существующим параметром - PullRequest
0 голосов
/ 24 января 2019

Я делаю Crud, я хочу показать данные элемента, используя идентификатор, у меня есть это в web.php:

Route::get('update/{id}', 'CrudController@update');

Как я могу отрицать, что пользователь изменяет идентификатор в пути на тот, которыйне существует?Это показывает только те, которые существуют и те, которые не, которые не загружаются?

1 Ответ

0 голосов
/ 24 января 2019

В вашем методе обновления вы можете сделать следующее:

public function update($id)
{
    MyModel::findOrFail($id);
    //...perform other actions
}

Будет выдано 404 ответа, если запрошенный $id не существует.

Тогда вы можете поймать его, если хотите, render() метод app\Exceptions\Handler.php:

use Illuminate\Database\Eloquent\ModelNotFoundException;
.
.
.
public function render($request, Exception $exception)
{
    if ($exception instanceof ModelNotFoundException) {
        if ($request->wantsJson()) {
            return response()->json([
                'data' => 'Resource not found'
            ], 404);
        } else {
           abort(404);
        }
    }
    return parent::render($request, $exception);
}

Или, если вы не хотите проходить через все трудности настройки его в обработчике, вы также можете сделать:

public function update($id)
{
    if (! $model = MyModel::find($id)) {
        abort(404);
    }
    //...perform other actions with $model
}

Метод abort(404) переводит пользователя на стандартную страницу Page not found laravel, что является подходящей вещью.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...