2016-12-11 1 views
2

КонтроллерОтсутствует аргумент 2 для App Http Контроллеры UserController :: магазин()

public function store(Request $request,$id) 
{ 
    $new = Car::find($id); 

    $new->status = $request ->input('field'); 
    $new->save(); 

    redirect('home'); 
} 

Посмотреть

@foreach($users as $user) 
       @foreach($user->cars as $users) 
       {!! Form::open(['route' => 'user.store', 'method'=>'post','id'=> '$users->id']) !!} 
       <th scope="row">1</th> 
       <td>{!! Form::label($cars->name)!!}<td> 
       <td>{!! Form::label($cars->age)!!}<td> 
       <td>{{Form::select($cars->status, ['R' => 'Requested', 'C' => 'Coming', ['name' => 'field']])}} // name is worong but I dont know the alternative 
       <td>{!! Form::submit('Update Profile', ['class' => 'btn btn-primary']) !!}</td> 
       {{ Form::close() }} 

Маршрут

Route::Resource('user', 'UserController'); 

Задача

Попытка сохранить выбранное значение от status в модели автомобиля. но я получаю сообщение об ошибке. Может кто-нибудь покажет мне, где моя ошибка? Я новичок в Laravel.

ответ

1

Вы не можете передавать дополнительные данные в store действий таким образом.

Вы можете посмотреть этот маршрут, используя команду php artisan route:list. Как вы можете видеть, он не ожидает и не передает никаких данных.

Итак, вам нужно передать идентификатор скрытого ввода:

{!! Form::hidden('userId', $user->id) !!} 

и получить данные в контроллер с $request->userId

Не забудьте удалить $id из store() и $users->id от Form::open()

Кроме того, правильный синтаксис (с фиксированными опечатками) для Form::open():

{!! Form::open(['method' => 'post', 'route' => 'user.store']) !!} 
+0

Благодарю вас за помощь. Но он все еще дает мне «Отсутствует аргумент 2 для App \ Http \ Controllers \ UserController :: store()' Я думаю, что ошибка находится где-то в моем контроллере @Alexey Mezenin – leo0019

+0

'$ new-> status = $ request -> input (' поле '); 'Я не уверен в этой строке кода – leo0019

+0

, он возвращает правильный идентификатор пользователя (который является идентификатором автомобиля) – leo0019