如何在 Laravel 中声明无限参数?
Posted
技术标签:
【中文标题】如何在 Laravel 中声明无限参数?【英文标题】:How to declare unlimited parameters in Laravel? 【发布时间】:2015-10-03 03:52:06 【问题描述】:Laravel 5 的路由中是否有类似 Codeigniter 的方法来声明无限数量的参数?
我要构建一个大型应用程序,并且不可能在路由文件中为每个函数声明每个参数。我尝试了很多,但没有得到任何解决方案。
【问题讨论】:
看看this answer第二部分 所以这意味着我需要为每个控制器声明路由。有没有类似于 Codeigniter 的选项? 您是否阅读了答案的第二部分?它可能与 codeigniter 中的不同(反正我对此不太了解),但您可以拥有一个采用包含斜杠的路由参数的路由。然后你必须拆分那个参数,你会得到一个包含所有段的数组...... @lukasgeiter 它成功了,但并不完全。我必须将它用于所有控制器。这就是所说的部分。 【参考方案1】:你可以用这个
//routes.php
Route::get('id/params?', 'YourController@action')->where('params', '(.*)');
请记住将上述内容放在 routes.php 文件的最后(底部),因为它就像一条“包罗万象”的路线,因此您必须首先定义所有“更具体”的路线。
//controller
class YourController extends BaseController
public function action($id, $params = null)
if($params)
$params = explode('/', $params);
//do stuff
【讨论】:
这会生成 SEO 好友 URL 吗?我想要网址example.com/controller/function/param1/param2/param3...? 我尝试了您的解决方案。它可以工作,但我必须在所有控制器的每个控制器功能中使用爆炸,这对于大型应用程序来说不是一个好的解决方案。 @NishantKango 我同意你的 cmets,所以你可以把它放在你的 BaseController __constructor 方法中,或者创建任何中间件文件并包含在你的 BaseController __constructor 方法中。 @LuckySaini 它对我很有帮助。谢谢 @Lakhwinder Singh 我不知道这是可能的——多么棒的选择。另一个注意事项,这在组中也很有效 - 这是一个很好的包罗万象,仅限于单个前缀以上是关于如何在 Laravel 中声明无限参数?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Laravel 4 中为 Route::group 设置正则表达式参数约束?