【问题标题】:Pass parameters to '.index' controller function using Laravel resourceful routing使用 Laravel 资源丰富的路由将参数传递给“.index”控制器函数
【发布时间】:2015-02-24 17:39:54
【问题描述】:

我正在使用资源丰富的路由,我需要将参数传递给控制器​​的index 函数。

public function index($id){
// do something with $id
}

如果我尝试创建一个类似 (say $user->id = 3) 的表单:

{{ Form::open(array('route' => array('scopes.index', $user->id))) }}
{{ Form::close() }}

我进入 html 这个链接: http://alumni.app/scopes?3 这不好,因为它不遵循该命名路由的 URI。那么,我该怎么做呢?

讨论:我正在尝试根据当前用户加载scopes 的列表。我做了一个独立的 scopes 控制器。

【问题讨论】:

  • Route::resource的索引路由不带参数。

标签: laravel laravel-routing


【解决方案1】:

资源控制器/路由的index 操作在设计上不采用任何参数。

对于过滤我建议你使用查询参数。

/scope?userId=1

{{ Form::open(array('route' => array('scopes.index', array('userId' => $user->id)))) }}

另一种方法是nested resources(向下滚动一点)

如果您将范围资源嵌套在用户内部,您可以获得这种 url:

/user/1/scope

【讨论】:

  • 谢谢@lukasgeiter 我将嵌套路由以获得更好的设计。
【解决方案2】:

您可以改为创建单独的路线:

Route::get('scopes/{id}', ['as' => 'scopes.index', 'uses' => 'ScopeController@index']);

并将其从您的资源路径中排除:

Route::resource('scopes', 'ScopesController', ['except' => ['index']]);

【讨论】:

    猜你喜欢
    • 2018-06-17
    • 2016-05-16
    • 2017-01-12
    • 2015-01-25
    • 2015-06-23
    • 1970-01-01
    • 2012-09-20
    • 1970-01-01
    相关资源
    最近更新 更多