使用Laravel资源路由将参数传递给'.index'控制器功能

时间:2014-12-28 03:53:59

标签: laravel laravel-routing

我正在使用资源丰富的路由,我需要将参数传递给控制器​​的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控制器。

2 个答案:

答案 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']]);