我正在使用资源丰富的路由,我需要将参数传递给控制器的index
函数。
public function index($id){
// do something with $id
}
如果我尝试创建一个类似(例如$ user-> id = 3)的表单:
{{ Form::open(array('route' => array('scopes.index', $user->id))) }}
{{ Form::close() }}
我进入html这个链接:
http://alumni.app/scopes?3
这不好,因为它不遵循该命名路由的URI。那么,我该怎么办?
讨论:我正在尝试根据当前用户加载scopes
列表。我独立了
scopes
控制器。
答案 0 :(得分:3)
资源控制器/路由的index
操作不会按设计采用任何参数。
对于过滤,我建议您使用查询参数。
/scope?userId=1
{{ Form::open(array('route' => array('scopes.index', array('userId' => $user->id)))) }}
另一种方法是nested resources(向下滚动一下)
如果您将范围资源嵌套在用户中,则可以获得此类网址:
/user/1/scope
答案 1 :(得分:1)
您可以改为创建单独的路由:
Route::get('scopes/{id}', ['as' => 'scopes.index', 'uses' => 'ScopeController@index']);
并将其从您的资源路由中排除:
Route::resource('scopes', 'ScopesController', ['except' => ['index']]);