【问题标题】:How to implement array type route in Laravel?如何在 Laravel 中实现数组类型路由?
【发布时间】:2019-05-17 16:58:48
【问题描述】:

我正在尝试在 Laravel 5.8 中实现数组类型路由。
这是我尝试过的:

Route::get('/','/myroute', 'MyController@index');
Route::get(['/','/myroute'], 'MyController@index');
Route::get([('/','/myroute')], 'MyController@index');
Route::get('/' || '/myroute', 'MyController@index');  

基本上,我要做的是创建一个带有“OR”条件的路由。
假设我想使用 mydomain.dev/mydomain.dev/myroute 访问 MyController index,但我得到了 404|Not Found

尝试阅读Laravel documentation,但我找不到可以指出我正在尝试做的事情的内容。

【问题讨论】:

    标签: php laravel


    【解决方案1】:

    这是您要实现的示例。

    Route::get('/{param?}', 'MyController@index')
        ->where('param', '(myroute|myroute2)');
    

    通过上述路由,您可以为相同的控制器功能创建以下网址

    www.site.com/
    www.site.com/myroute
    www.site.com/myroute2
    

    试试这个,我想这会对你有所帮助。

    【讨论】:

      【解决方案2】:
      Route::get('/{myroute?}', function () {
          echo 'test';
      })
          ->where('myroute', '(myroute|mysecondroute)');
      

      这是一个例子。您在路由中定义一个变量,该变量可以获取您在 where 类中的值

      这意味着端点

      api/myroute 
      api/
      api/mysecondroute
      

      将访问相同的路由并详细说明相同的控制器

      【讨论】:

      • {myroute} 虽然我认为应该是可选的。
      【解决方案3】:

      您不能将数组分配为路由(也就是 get 方法中的第一个参数),它应该是一个字符串。如果您需要 2 条路由去同一个控制器,请为此定义 2 条单独的路由。

      Route::get('/route', 'Controller@method');
      Route::get('/another-route', 'Controller@method');
      

      【讨论】:

      • 是的,这和@Mihkel 给出的想法是一样的
      【解决方案4】:

      如果您要定义重定向到另一个 URI 的路由,您可以使用 Route::redirect 方法:

      Route::redirect('/here', '/there');
      

      【讨论】:

      • 不,我需要为一个控制器定义不重定向的路由
      【解决方案5】:

      Laravel Router 不提供该功能,但由于它是Macroable,您可以添加一个简单的宏来解决这种情况。我将在下面提供一个示例。

      RouteServiceProvider 或任何服务提供者中,注册一个宏:

      Route::macro('gets', function(array $urls, $action) {
           foreach($urls as $url) {
                Route::get($url, $action);
           }
      }
      

      现在在你的routes.php中使用它

      Route::gets(['/', '/myroute'], 'MyController@index')
      

      【讨论】:

      • 是的,但我想按照我上面解释的方式进行
      猜你喜欢
      • 2018-12-18
      • 2018-10-30
      • 1970-01-01
      • 2019-02-09
      • 2019-12-19
      • 1970-01-01
      • 2016-06-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多