【发布时间】:2014-11-17 04:14:14
【问题描述】:
我已经设置了嵌套的 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
路由本身有效,但我有几个关于物流的问题(我对如何使用路由有点困惑):
- 如果我将表单设置为 'GET' 请求(GET/HEAD 开放时间/图书馆/{图书馆} => opening-hours.library.show),因为对应的 POST 路由没有 存在
- 如何将用户选择的 $id 传递给控制器 show($id) 方法?
- 当我提交表单时,它会转到 URI “../开放时间/图书馆/%7Blibrary%7D?id=3”。所以如果用户选择 id=3 的库,如何使 URI “../opening-hours/library/3”?
这是我的库控制器显示方法:
/**
* 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 或两者在这里如何工作的关键。任何指点都将不胜感激,我花了一天的时间来解决这个问题!
非常感谢
【问题讨论】:
标签: php forms rest laravel-4 laravel-routing