有没有办法返回响应,然后返回一个函数?

时间:2019-09-04 07:49:32

标签: php laravel

我有一个开关盒,根据情况返回不同的功能,在发送xml响应后从上一个功能导航到下一个功能时遇到问题

到目前为止,我已经对xml响应进行了检查,然后您可以返回到另一个函数。

build.gradle

我希望在第一个XM1响应之后移到另一个响应,这是一个逐步过程,在用户进入手机后,它应该更新进度值,并返回userStart()并转到下一个CASE。

1 个答案:

答案 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);

}

我建议重新考虑以寻求更好的算法。

  1. 检查用户状态是您应该做的第一件事。
  2. 根据州做事
  3. 保存应该在与用户相关的数据库中运行的下一个状态
  4. 向用户发送包含指令的响应,以便用户知道该怎么做。

我个人将类名和下一个方法保存在数据库中,并根据保存的数据进行操作。