thinkphp $this->success方法不跳转页面


使用fastadmin(thinkphp)在控制器中执行以下代码,但是前台页面并没有跳转

$this->success('注册成功', url('index/login'), ['url' => url('index/login'), 'id' => $admin->id, 'username' => $username, 'avatar' => '/assets/img/avatar.png']);

这说明你的代码很有可能放到了try catch语句中了,例如:

Db::startTrans();
try {
    Db::commit();
    $this->success('注册成功', url('index/login'), ['url' => url('index/login'), 'id' => $admin->id, 'username' => $username, 'avatar' => '/assets/img/avatar.png']);
} catch (\Exception $e) {
    Db::rollback();
    $this->error($e->getMessage());
}

正确的做法是放在外面,参考如下:

Db::startTrans();
try {
    Db::commit();
} catch (\Exception $e) {
    Db::rollback();
    $this->error($e->getMessage());
}
$this->success('注册成功', url('index/login'), ['url' => url('index/login'), 'id' => $admin->id, 'username' => $username, 'avatar' => '/assets/img/avatar.png']);

我们可以在源代码中看到success方法中有下面一行代码:

如果把代码放在try catch中,会被catch捕获,也就会调用$this->error($e->getMessage());代码,输出错误的返回结果,状态为0,url为空,错误信息为空。