【发布时间】:2014-08-07 12:40:14
【问题描述】:
我喜欢在 Laravel 中使用资源控制器,因为它让我想到了数据建模。到目前为止,我已经过关了,但我现在正在开发一个具有公共前端和受保护后端(管理区域)的网站。
我创建了一个添加“admin”前缀的路由组,如下所示:
Route::group(array('before' => 'auth', 'prefix' => 'admin'), function()
{
Route::resource('article', 'ArticleController');
Route::resource('event', 'EventController');
Route::resource('user', 'UserController');
});
我可以使用默认的 URL 结构访问方法,即 http://example.com/admin/article/1/edit。
但是,我希望在前端使用一个不同的 URL 结构,这不符合资源控制器的期望。
例如,要访问一篇文章,我想使用如下 URL:http://example.com/news/2014/06/17/some-article-slug。如果这篇文章的 ID 为 1,它应该(在后台)转到 /article/1/show。
如何在 Laravel 中实现这一点?在那里,我可以对路线进行某种预处理,以将日期和 slug 与文章 ID 匹配,然后然后将其作为参数传递给我的资源控制器的 show() 方法?
【问题讨论】:
-
你想出答案了吗?另外,你考虑过路由过滤器吗??
-
@brianlmerritt 不要以为我解决了我在问题中谈到的 Laravel 4 应用程序,但对于 Laravel 5 应用程序,我已经开始使用路由参数(可能包含斜杠),然后在此基础上找到一个模型,因此“2014/06/17/some-article-slug”可以传递给我的
Article模型中的静态findBySlug()方法,然后在斜线处拆分它,并找到一个根据日期和 slug 匹配记录。