【问题标题】:How to declare unlimited parameters in Laravel?如何在 Laravel 中声明无限参数?
【发布时间】:2015-10-03 03:52:06
【问题描述】:

Laravel 5 的路由中是否有类似 Codeigniter 的方法来声明无限数量的参数?

我要构建一个大型应用程序,并且不可能在路由文件中为每个函数声明每个参数。我尝试了很多,但没有得到任何解决方案。

【问题讨论】:

  • 看看this answer第二部分
  • 所以这意味着我需要为每个控制器声明路由。有没有类似于 Codeigniter 的选项?
  • 您是否阅读了答案的第二部分?它可能与 codeigniter 中的不同(反正我对此不太了解),但您可以拥有一个采用包含斜杠的路由参数的路由。然后你必须拆分那个参数,你会得到一个包含所有段的数组......
  • @lukasgeiter 它成功了,但并不完全。我必须将它用于所有控制器。这就是所说的部分。

标签: php laravel laravel-5 laravel-routing


【解决方案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 我不知道这是可能的——多么棒的选择。另一个注意事项,这在组中也很有效 - 这是一个很好的包罗万象,仅限于单个前缀
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-23
  • 2017-07-21
  • 2021-10-09
  • 2012-01-15
  • 1970-01-01
  • 2020-03-31
  • 2020-10-11
相关资源
最近更新 更多