#laravel #laravel-routing
#laravel #laravel-маршрутизация
Вопрос:
я использую laravel 5
, когда я использую Route::resource
функцию laravel в своем route.php
файле, я могу получить свою коллекцию моделей внутри параметра моего метода следующим образом:
//**web.php** file
Route::resource('factors', 'FactorsController');
//called url localhost:8000/factors/1/edit
//**FactorsController**
/**
* @param Request $request
* @return IlluminateContractsViewFactory|IlluminateViewView
*/
public function edit(Request $request, Factor $factor)
{
//$factor is a collection of Factor Model that contains id '1' information in factor table
return view('factors.edit', compact('factor'));
}
это правильно и работает, но когда я создаю пользовательский URL, подобный этому:
Route::get('factors/{id}/newEdit', 'FactorsController@newEdit');
я не могу получить коллекцию внутри параметров метода, и она возвращает пустую коллекцию следующим образом:
//called url localhost:8000/factors/1/newEdit
1)
//**FactorsController**
/**
* @param Request $request
* @return IlluminateContractsViewFactory|IlluminateViewView
*/
public function newEdit(Request $request, Factor $factor)
{
return view('factors.newEdit', compact('factor'));
}
$factor
это пустая коллекция Factor Model
, но я хочу, чтобы моя выбранная строка была в базе данных. когда я использую это так, это работает правильно:
2)
//**FactorsController**
/**
* @param Request $request
* @return IlluminateContractsViewFactory|IlluminateViewView
*/
public function newEdit(Request $request, $id)
{
$factor = Factor::find($id);
return view('factors.newEdit', compact('factor'));
}
но я не хочу называть это как 2, я хочу называть это как 1
спасибо за любую помощь.
Ответ №1:
Для привязки модели у вас должны быть имена переменных с указанием типа, соответствующие имени сегмента маршрута :
Route::get('factors/{factor}/newEdit', 'FactorsController@newEdit');
Поскольку $factor
переменная указывается как Factor
модель, а имя переменной соответствует сегменту {factor}
URI, Laravel автоматически вводит экземпляр модели, идентификатор которого соответствует соответствующему значению из URI запроса.
Комментарии:
1. get перед ресурсом, а маршрут правильный. проблема в том, что я хочу, чтобы мой выбранный фактор, но он возвращает пустую коллекцию.
2. Маршрут ремесленника: команда списка… Как выглядят маршруты?