Итак, я добавил функциональность формы просто отлично в Laravel 5 и использовал ее в этих уроках. Я новичок в Laravel в целом и не могу понять, что происходит не так. У меня есть вложенный маршрут todos.items.create, поэтому для создания нового элемента в этом списке мне нужно будет передать этот идентификатор в тег Form :: open. Однако при этом я получаю Упс, похоже, что-то пошло не так. Теперь, если я удаляю параметр $ todo_list-> id, страница загружается нормально, но при этом я всегда получаю эту ошибку. Вот мой код
контроллер:
public function create($list_id)
{
$todo_list = TodoList::findOrFail($list_id);
return view('items.create', ['TodoList' => $todo_list]);
}
Создать представление (create.blade.php в папке my items внутри папки views)
{!! Form::open(array('route' => ['todos.items.store', $todo_list] )) !!}
Когда вы просто делаете ниже, это хорошо, но, делая то, что нужно, это не так. Это потому, что мне нужен идентификатор списка, в котором нужно создать новый элемент.
{!! Form::open(array('route' => ['todos.items.store'] )) !!}
Маршруты:
Route::get('/', 'TodoListController@index');
Route::resource('todos', 'TodoListController');
Route::resource('todos.items', 'TodoItemController', ['except' => ['index', 'show'] ]);
Есть идеи, что я здесь делаю не так? Я запустил var_dump с $ todo_list-> id перед возвратом представления только для проверки, и он вернул правильный идентификатор.
Вы создали объект $ todo_list, но передали его в ваше представление как $ TodoList.
Попробуйте использовать следующее вместо
return view('items.create', ['todo_list' => $todo_list]);
При вызове представления из контроллера ключ, используемый в вашем массиве данных, определяет, какая переменная будет доступна на страницах.
Других решений пока нет …