【发布时间】:2015-01-12 07:00:35
【问题描述】:
我正在编写一个 Laravel 应用程序,它基本上允许您以各种格式运行锦标赛。现在我遇到的问题是,我希望每种不同的锦标赛形式都使用相同的路线。每种格式都有非常不同的逻辑和视图。
起初我只有一个 TournamentController 并在每个函数中使用 if 语句来检查类型并执行适当的逻辑,例如:
public function start($tournamentId){
$tournament = Tournament::find($tournamentId);
if($tournament->type == "single elimination"){
//single elimination logic
}elseif($tournament->type == "round robin"){
//round robin logic
}
}
现在我意识到,随着我添加更多锦标赛类型,在 TournamentController 的每个函数中都有这种类型的逻辑会变得混乱。因此,我创建了两个单独的控制器,SingleEliminationController 和 RoundRobinController,并在路由文件中通过执行以下操作使控制器动态化:
$tournament = Tournament::find(Request::segment(2));
$controller = str_replace(' ', '', $tournament->tournamentType());
Route::get('{tournamentId}/{slug}', $controller . 'Controller@showTournament')->where('tournamentId', '[0-9]+');
这似乎更易于管理,但似乎仍然有点 hacky,我确信必须有更好的方法来构建事物,但我无法弄清楚。任何帮助将不胜感激,谢谢!
【问题讨论】:
-
@cwallenpoole ,好吧.. OP 甚至没有看到使用全局范围的问题。我怀疑您的链接材料会产生任何影响。
-
@tereško 请随时发布更多有用的 cmets
标签: php laravel laravel-4 laravel-routing