【问题标题】:Laravel assigning single route with varying sized slugsLaravel 使用不同大小的 slug 分配单个路线
【发布时间】:2019-05-06 13:07:16
【问题描述】:

我需要一种方法来创建允许可变数量的 slug 的路由,因此我不需要为同一个控制器方法创建 10 多个路由。这应该允许站点管理员在没有限制的情况下创建分类页面和内容的文件夹样式结构。

然后该路由将排除其中任何一个并将 slugs 数组传递给控制器​​:

  • www.site/designs/paint/
  • www.site/designs/paint/pointalism/
  • www.site/designs/paint/pointalism/portrait

如何在不使用 get params 的情况下实现这一点?

当前路线:

 Route::get('/designs/{catagory1}', 'DesignController@catagories')->name('design.items');
 Route::get('/designs/{catagory1}/{catagory2}', 'DesignController@catagories')->name('design.items');
 Route::get('/designs/{catagory1}/{catagory2}/{catagory3}', 'DesignController@catagories')->name('design.items');
 Route::get('/designs/{catagory1}/{catagory2}/{catagory3}/{catagory4}', 'DesignController@catagories')->name('design.items');
 Route::get('/designs/{catagory1}/{catagory2}/{catagory3}/{catagory4}/{catagory5}','DesignController@catagories')->name('design.items');
 ..etc

所需路线:

 Route::get('/designs/{catagories}', 'DesignController@catagories')->name('design.items');

【问题讨论】:

    标签: php laravel routes


    【解决方案1】:

    要告诉 Laravel,要将完整的参数提供给控制器,您必须像这样添加 where clause

    Route::get('designs/{query}', 'DesignController@catagories')->where('query','.+')
    

    基本上,它的作用是将.+ 匹配为{query},在这种情况下,它只会匹配任何东西。

    然后您可以在代码中使用explode('/', $theUrlParam),以接收数组中的所有部分。

    【讨论】:

      猜你喜欢
      • 2016-05-05
      • 1970-01-01
      • 1970-01-01
      • 2015-11-05
      • 2014-03-10
      • 2020-01-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-06
      相关资源
      最近更新 更多