【问题标题】:Laravel 5 route returns view but changes urlLaravel 5 路由返回视图但更改 url
【发布时间】:2015-09-03 23:37:14
【问题描述】:

我什至不确定这是否可能,但我想要做的就是这个。我将不同的页面模块存储在数据库中。当有人进入带有这些模块之一的页面时,pageController 识别出它的一个模块并(使用与此模块一起存储在数据库中的重定向路径)将它们重定向到一个 get 路由,这就是我知道要提取和放置哪些信息的方式这页纸。

例如,如果有人要访问 /photo-album,pageController 会识别出这是一个页面模块并返回重定向 (redirect/photo/albums),然后将其重定向到该路由。

Route::get('redirect/photo/albums', ['uses' =>'PageController@getPhotoAlbums']);

问题是 url 然后变成 /redirect/photo/albums。我希望它维护 /photo-album

我这样做的原因是因为将存储多个模块,每个模块将包含不同的内容(想想博客、相册、视频库等)。我需要重定向来弄清楚该页面上发生了什么以及要显示什么视图。在这种情况下,PageController@getPhotoAlbums 转到 getPhotoAlbums 方法,拉取照片并提供照片相册视图。

可能有更好的方法来做到这一点,我愿意接受。提前致谢。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    我没有足够的代表发表评论,所以我会把这个作为答案并希望它有所帮助:

    你真的不应该从另一个控制器获取数据。您的所有数据都应该在 Eloquent 模型中可用。这对“MVC”架构很重要。

    这里有更多的讨论:Laravel: Load method in another controller without changing the url

    因此,本质上,当您的控制器将其识别为页面模块时,它应该使用 Eloquent 从数据库中提取该数据,然后将其传递给视图。这意味着原始请求 URL 仍然保留。

    【讨论】:

    • 嗨,汤姆,感谢您的回答。我浏览了该链接并对此进行了更多研究,您是 100% 正确的。我知道我走的路不对。我将所有内容都放在模型中,并使用了一个简单的 if 语句来返回正确的视图。问题解决了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-11
    • 2016-05-23
    • 1970-01-01
    • 2017-12-15
    相关资源
    最近更新 更多