我已经设置了嵌套的RESTful资源路由,如下所示:
Route::group(array('prefix'=>'opening-hours'), function(){
Route::resource('library', 'LibraryController');
Route::resource('library.interval', 'LibraryIntervalController');
});
我有一个刀片表单,其中有一个选择下拉列表,其中包含从db填充的选项,如下所示:
{{ 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为{library}!
的库当然,我希望它显示:
这是一个id为3的图书馆!
我显然不理解关于REST或Laravel如何在这里工作的批评。任何指针都会非常感激,我花了一天时间来讨论这个问题!
非常感谢
答案 0 :(得分:0)
尝试使用
$id = Input::get('id');
我还建议使用提供的表单助手:
echo Form::select('size', array('L' => 'Large', 'S' => 'Small'));
答案 1 :(得分:0)
写出问题似乎有助于我提出解决方案。使用表格发送“GET&#39;”似乎很愚蠢。请求,所以我想(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控制器方法直接获得id,如下所示:
public function show($id)
{
return "This is a library with id: " . $id . "!";
}