【发布时间】:2016-05-06 09:51:28
【问题描述】:
我在 Laravel 5.1 中有一个接受通用永久链接的路由,并且需要确定它属于哪个对象(例如,它是“博客”还是“故事”的永久链接?)。
路线如下:
// .... Every other route in the routes.php file //
Route::get('{generic_url}', 'CMSController@generic');
那么我的控制器中的代码是这样的:
public function generic($generic_url) {
$blog = Blog::where('permalink', $generic_url)->first();
if(!is_null($blog)) {
// Load a blog entry page
}
// Something basically the same as above but for Story
}
我的 routes.php 文件中也有这条路由来查看博客文章:
Route::get('/blog/{blog_id}', 'BlogController@view');
第二条路线的目的是让我粗略地查看博客文章页面,以及快速调试特定文章的方法。
我希望避免将视图代码放在两个单独的控制器中。我的第一个想法是尝试找到一种方法让 CMSController 调用 BlogController 中的视图操作。对我来说,这听起来是个糟糕的主意,四处搜索证实这是一个糟糕的主意。
我的问题是,处理这种情况的最佳方法是什么?
【问题讨论】:
-
你考虑过使用特征吗?如果使用抽象基类或通过构造函数或 setter 方法注入的依赖项没有意义,我倾向于使用这种方法对代码进行重复数据删除。
-
我以前从未使用过特征,但它看起来很有希望。你能告诉我你会在 Laravel 项目中放置一个 trait 吗?
-
它的行为与一个类的位置完全一样吗?
-
这个特性效果很好。如果你给出一个实际的答案,我会把它作为答案。
标签: php laravel-5.1 laravel-routing