как исправить отсутствующие обязательные параметры в laravel - PullRequest
0 голосов
/ 19 июня 2019

прошлой ночью я несколько раз пытался и проверял, пытался найти "konsuman" в моем маршруте, модели, контроллере, базе данных и представлениях. но я ничего не нашел. правильное значение - "konsumen", но после запуска в браузере отобразится ошибка

ErrorException (E_ERROR)
Missing required parameters for [Route: konsumen.update]
[URI: konsumen/{konsuman}]. (View: D:\xampp\htdocs
\skh\resources\views\konsumen\edit.blade.php).

Я проверяю несколько раз, чтобы убедиться, что его "konsumen" не "konsuman", а ошибка показа laravel, как указано выше.

есть ли ошибка в моем коде или, возможно, другой erorr. приложил мою полную работу.

konsuman shows in route list, actualy there is no konsuman. the true value is konsumen

laravel show error because can't find konsuman

вот ссылка моего полного кода в маршруте, модели, контроллере, базе данных и представлении. спасибо за внимание

Ответы [ 5 ]

1 голос
/ 19 июня 2019

Вы забыли добавить параметр к route('konsumen.update').

Это должно быть route('konsumen.update', ['konsuman' => $id])

$id - это идентификатор редактируемой вами записи.

0 голосов
/ 19 июня 2019

Вам не хватает одной вещи. В вашем контроллере вы принимаете объект модели $konsumen. Но вы не определили, как ваш $konsumen преобразуется в объект модели. Потому что из URL вы получаете идентификатор.

Чтобы решить эту проблему, вам нужно выполнить некоторые настройки в вашем классе RouteServiceProvide. Ниже приведен код, который вы должны добавить в свой провайдер: -

public function boot()
{
    Route::model('konsumen', \App\Konsumen::class);

    parent::boot();
}

После этого ваш код будет работать.

0 голосов
/ 19 июня 2019

Это один из недостатков использования resource в маршруте Ларавелла.Он создает все маршруты CURD, но у него есть свои собственные стандарты, которым вы должны следовать.Поэтому, когда вы создали

 Route::resource('konsumen', 'KonsumenController');

, это, в свою очередь, сгенерировало маршруты, которые вы видите на скриншоте.Посмотрите на update route, он ожидает параметр.Поэтому, где бы вы ни использовали konsumen.update маршрут, вам также необходимо передать параметр konsuman.Так было бы так

route('konsumen.update', ['konsuman' => <someValue>])

Так же, как @PhucLam сказал

0 голосов
/ 19 июня 2019

Попробуйте заменить значение тега действия формы в

edit.blade.php

до <form action="{{ '/konsumen/'. $konsumen->kde_konsumen) }} " method="POST">

0 голосов
/ 19 июня 2019

Вы забыли написать обязательно в kde_konsumen

$request->validate([
        'kde_konsumen',
        'nma_konsumen' => 'required',
        'alm_konsumen' => 'required',
        'tlp_konsumen' => 'required',
    ]);

до

$request->validate([
        'kde_konsumen' => 'required',
        'nma_konsumen' => 'required',
        'alm_konsumen' => 'required',
        'tlp_konsumen' => 'required',
    ]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...