【问题标题】:Laravel 5 Routes combinedLaravel 5 条路线组合
【发布时间】:2015-03-17 06:12:46
【问题描述】:

是否可以结合新闻和内容的路线?两者都是不同的模型,并且有自己的控制器。

Link 1 = /news-item/  (news controller & model)    
Link 2 = /about-us/  (content controller & model)

正如您在链接 1 和链接 2 中看到的,我希望两个模型都是单数的,而不需要文件夹继续它们。

请看下面我认为可行但不行的示例代码:

Route::get( '/{page_url}/', 'NewsController@show' );
Route::get( '/{page_url}/', 'ContentController@show' );

我已经尝试过了,但它只获得了 2 个控制器之一。我可以看到明显的冲突。

是否有另一种方法可以在多个控制器上实现单个 url slug?

【问题讨论】:

    标签: laravel routes laravel-5


    【解决方案1】:

    我看到的唯一方法是像这样定义一条路线:

    Route::get( '/{page_url}/', 'SlugController@show');
    

    然后在controller方法中,检查slug是否存在于news表或content表中,然后显示相关内容。如果没有找到,则显示错误。

    我看到的另一种方式是在前面使用路径,

    Route::get( 'news/{page_url}/', 'NewsController@show');
    Route::get( 'content/{page_url}/', 'ContentController@show');
    

    【讨论】:

      【解决方案2】:

      嗯,这是一个非常糟糕的做法,因为请求-响应唯一性之间的范式丢失了,因此对于未来的优化,您将度过一段糟糕的时光。如果 url 没有区别,你就无法实现你想要的:

      Route::get( '/foo', 'NewsController@show' );
      Route::get( '/foo', 'ContentController@show' );
      

      您可以看到明显的冲突,您如何在请求中注意到它们之间的差异?这不可能。 Lavaral 将使用相同的值(url)覆盖每个路由“键”

      【讨论】:

      • 我可以看到 iv 的做法很糟糕,但是有办法吗?我是 Laravel 的新手,有点惊讶于 laravel 提供的惊人的灵活性无法满足这样的要求。但如果它不能,它就不能
      • 这不能容纳在 lavarel 中,因为这不是好的做法,就像“打破规则”一样。 Laravel 旨在解析每个唯一 url 的请求。路由类的工作方式类似于 HashMap,其结构基于 'key' => 'value' ,它有助于创建所有 url/路由的缓存映射,以提高响应速度。
      猜你喜欢
      • 2016-05-16
      • 1970-01-01
      • 2016-10-14
      • 2015-12-11
      • 2016-08-24
      • 1970-01-01
      • 1970-01-01
      • 2014-12-19
      • 1970-01-01
      相关资源
      最近更新 更多