我有一个开关盒,根据情况返回不同的功能,在发送xml响应后从上一个功能导航到下一个功能时遇到问题
到目前为止,我已经对xml响应进行了检查,然后您可以返回到另一个函数。
build.gradle
我希望在第一个XM1响应之后移到另一个响应,这是一个逐步过程,在用户进入手机后,它应该更新进度值,并返回userStart()并转到下一个CASE。
答案 0 :(得分:0)
从您的代码中,我可以看到您在返回XML响应后正在设置$progress = 2
。这样$progress = 2
就不会执行。那么,在尚未设置$progress = 2
的情况下,如何期望转移到另一个函数呢?
此外,您应该将$progress
保存在数据库中的某个位置,以便从数据库中检索先前的$progress
。这样,每次用户发送请求时,您就知道用户是什么状态以及用户成功通过了什么状态。
这意味着每次$progress
要更改时,您都应该在数据库中更新其值(而您的代码中并未这样做)。
除了提到的问题。您的代码实际上不正确。它将面临错误。 $data
未定义,并且$progress
未保存在数据库中。但是改变的地方也是错误的。尚不清楚如何(或在何处)检索$progress
值。
例如看一下stepCellphone
方法
public function stepCellphone(Request $request, $progress)
{
if ($progress = 1) {
Log::info($progress); // 2
\Log::info('At stepCellphone');
$config = [
'template' => '<ussd></ussd>',
'rowName' => 'name',
];
$text = $request->get('msg'); // get text from msg
//if this method is going to run when $progress = 1 the function is done here. nothing will execute after
//Also $data is not defined
//you should change the $progress value here
return response()->xml($data, 200, $config);
}
//if this method is going to run when $progress = 1 how do you even think the code might reach to this line?
$progress = 2;
//even if the code reach this line, why $progress is not being saved anywhere!
//
return $this->userStart($request, $progress);
}
我建议重新考虑以寻求更好的算法。
我个人将类名和下一个方法保存在数据库中,并根据保存的数据进行操作。