在我目前的应用程序中,用户可以玩游戏。游戏包含5个步骤。我使用模型UserProgress来记录用户的进度。根据当前的下一步,用户必须执行一些操作。
目前我有一个控制器和一个函数来执行所有步骤的编排,这很糟糕。
但是我想在游戏的每一步都有一个功能,因为这更清楚。但是,每个步骤的URL应该相同。
我不太确定编排的最佳做法是什么?它应该在路由中完成还是应该在我的控制器中创建另一个处理业务流程的功能?
提前感谢您的提示!
答案 0 :(得分:0)
因为你没有提供任何代码我只能给你一个基本的音乐会。
1)如果用户提交状态/页面,我假设您使用POST请求。当然,也可以获取请求,但是您将数据保存在数据库中,因此我将使用POST请求。
2)因此,在每个请求中添加一个指示步骤的参数,这可以是一个额外的查询字符串,如?step=<nr>
,或者来自隐藏输入字段的另一个POST参数:
<input type="hidden" name="step" value="<nr>">
3)您的路由会将所有请求移交给您的公共控制器功能
public function nextStep(Request $request)
{
switch ($request->get('step'))
{
case 1: return $this->stepOne($request);
case 2: return $this->stepTwo($request);
case 3: return $this->stepThree($request);
case 4: return $this->stepFour($request);
}
}
protected function stepOne(Request $request)
{
// To Step One
return view(step_two);
}
protected function stepTwo(Request $request)
{
// To Step Two
return view(step_tree);
}
protected function stepThree(Request $request)
{
// To Step Three
return view(step_four);
}
protected function stepFour(Request $request)
{
// To Step Four
return view(step_final);
}