Я настроил вложенные маршруты ресурсов RESTful так:
Route::group(array('prefix'=>'opening-hours'), function(){
Route::resource('library', 'LibraryController');
Route::resource('library.interval', 'LibraryIntervalController');
});
У меня есть блэйд-форма, в которой есть выпадающий список с опциями, заполненными из БД, например:
{{ Form::open(array('route' => 'opening-hours.library.show', 'method' => 'GET')) }}
<legend>Select a library to edit</legend>
<div class="form-group">
<label for="">Please select a library to modify its opening hours:</label>
<select class="form-control" name="id" required>
@foreach ($library_options as $id => $name)
<option value="{{ $id }}">{{ $name }}</option>
@endforeach
</select>
</div>
<button type="submit" class="btn btn-primary">Submit</button>
{{ Form::close() }}
Форма отправляется по названному маршруту:
opening-hours.library.show
Сама маршрутизация работает, но у меня есть пара вопросов по логистике (я немного запутался в том, как использовать маршрутизацию):
Вот мой метод показа контроллера библиотеки:
/**
* Display the specifed library.
*
* @param int $id
* @return Response
*/
public function show($id)
{
//
return "This is a library with id: " . $id . "!";
}
Когда я отправляю форму, отображается следующее:
Это библиотека с идентификатором: {библиотека}!
Конечно, я бы хотел, чтобы это отображалось:
Это библиотека с id: 3!
Я, очевидно, не понимаю что-то критическое о том, как REST или Laravel или оба работают здесь. Любые указатели будут очень признательны, я потратил целый день на это!
большое спасибо
Попробуйте использовать
$id = Input::get('id');
Я также рекомендовал бы использовать предоставленные помощники для форм:
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));
Выписывание проблемы, казалось, помогло мне найти решение. Казалось глупым использовать форму для отправки запроса ‘GET’, поэтому я подумал (bing!), Почему бы просто не сконструировать URI как атрибуты href якорного тега. Поэтому вместо использования формы я сделал:
@foreach( $library_options as $id => $name )
<a class="btn btn-primary" href="{{ URL::to('opening-hours/library/' . $id) }}">Edit {{ $name }}</a>
@endforeach
Это решило проблему хитрых URI, а также идентификатор был напрямую доступен из метода контроллера RESTful, например:
public function show($id)
{
return "This is a library with id: " . $id . "!";
}