2016-10-24 3 views
0

Так что у меня это успокоительные прокладывай Route::resource('user', 'UserController');Отсутствует аргумент 3 для App Http Controllers UserController :: edit() ошибка?

Я изменил редактировать метод контроллера так:

public function edit(Request $request, customer_user $user, $id)

с этим, я получаю Missing argument 3 for App\Http\Controllers\UserController::edit()

customer_user модели.

Но если я добавлю $id = null в метод контроллера Я получаю желаемый результат.

Но опять же, если я это сделать

dd($id) с URL http://x/3/edit он говорит, «нулевой» и не дает мне номер.

Но моя модель dd($user->take(1)->first()) показывает правильный номер с URL-адреса !?

Я действительно смущен этим и не смог найти никого с подобной проблемой.

Заранее спасибо

ответ

1

вам не нужно $ ID здесь

public function edit(Request $request, customer_user $user, $id) 

Почему? - когда вы используете Route::resource('user', 'UserController');, laravel создает маршруты, и один из них - /user/{user}/edit с методом GET - это один заполнитель. по умолчанию при создании контроллера ресурсов метод редактирования, как это public function edit($id) и значение $ ид устанавливается от того, что передается как {user}

Но в методе редактирования edit(Request $request, customer_user $user, $id)

- * Когда вызывается метод все параметры должны быть предоставлены, если параметр не имеет значения по умолчанию

-Кака вашего URL является http://x/3/edit Laravel передает запрос как значение первых паров

  • Затем он находит customer_user модели, но она имеет значение 3, так что установить значение параметра с 2 customer_user::find(3)

-Тогда приходит $ ID пары и Laravel не имеют ничего, чтобы назначить так приходит ошибка, но при установке $id=null, который по умолчанию значения, так что вы не получите какие-либо ошибок

  • так теперь позволяют изменить способ edit как таким образом public function edit(Request $request, Category $user, $id) предполагающей у вас есть Category модели и теперь посетить один и тот же адрес и проверить dd($user->take(1)->first()) вы найдете информацию о категории вместо cu stomer_user!
+0

Хорошо, теперь я вижу, Laravel в основном проверяет параметр и видит, что модель передана. Спасибо, что помогли мне. –