Php 是否可以将2种不同类型的参数传递给Laravel控制器?

Php 是否可以将2种不同类型的参数传递给Laravel控制器?,php,laravel,model-view-controller,routes,Php,Laravel,Model View Controller,Routes,我已经有一个URI为/projects/{id}的GET路由,它显示具有给定id的项目的信息。我还有一个GET索引路由(/projects),它显示我的所有项目 我的问题是,我目前试图创建不同的索引(例如,仅显示分配给我的项目[例如,在/projects/mines]上],或待管理员批准的项目[例如,在/projects/propositions]上],还有其他项目显示) 所以我想知道我是否可以有两个GET路由/projects/{id}和/projects/{display\u mode},它

我已经有一个URI为
/projects/{id}
的GET路由,它显示具有给定id的项目的信息。我还有一个GET索引路由(
/projects
),它显示我的所有项目

我的问题是,我目前试图创建不同的索引(例如,仅显示分配给我的项目[例如,在
/projects/mines
]上],或待管理员批准的项目[例如,在
/projects/propositions
]上],还有其他项目显示)

所以我想知道我是否可以有两个GET路由
/projects/{id}
/projects/{display\u mode}
,它们将调用我的
ProjectController
的两个不同方法(分别是
show
index


谢谢你的帮助!:)

我不确定路由定义的特定Laravel选项(抱歉!),但是如果
{id}
始终是一个整数,并且
{display\u mode}
中始终包含非数字,那么您可以只保留一条路由,但在控制器中执行条件处理。只要让主动作做一些像

return preg_match('/^\d+$/', $param) ? idHelperAction($param) : displayModeHelperAction($param);
然后创建这两个helper函数,并让它们返回您想要的任何内容

$param
应该是从该路由参数获得的任何内容--
/projects/{param}

对于
$param
都是数字而不是其他的路由,应该调用idHelperAction;否则,它应该调用displayModeHelperAction。无论哪种方式,它都会向helper函数发送相同的
$param
,并返回该helper函数返回的任何内容——有效地将一个路由定义拆分为两个可能的操作


当然,您可能需要在代码示例中添加一些上下文。如果所有函数都在同一个类中定义,则可能需要使用
$this->idHelperAction($param)
self::idHelperAction($param)
(与其他helper操作相同),具体取决于它是否是静态的;或者,如果您将函数放在另一个类中,告诉它在哪里可以找到这些函数,等等——所有正常的上下文要求。

您可能有一个路由
/projects
,它将所有项目作为默认值返回。 如果有如下查询参数

/projects?displayMode=proposals
然后可以应用过滤器

在您的控制器中,它看起来像这样

$projects = Project::query();
if ($request->query('displayMode') == 'proposals')
    $projects->where('pending', true)

return $projects->get();
您也可以以相同的方式添加多个过滤器