Laravel back() 或 redirect() 在 Traits 中不起作用

J. *_*Doe 2 php laravel

我在所有 Traits 中都使用了 Laravel 助手,假设助手函数在任何地方都可以工作。

但是,虽然有些功能像abort()工作一样,但我刚刚意识到return redirect()并且return back()不起作用!

有人可以解释一下为什么吗?

在此之后,我有点犹豫是否要相信 Laravel...我的意思是,如果下次在abort(403)某些地方不起作用(因为我不知道哪个功能在哪里起作用)并且有人做了他们不允许的事情怎么办去做!

简化示例:

namespace App\Http\Traits;
trait TestTrait{
    public function doBack(){
        return back();
    }

    public function doRedirect(){
        return redirect()->route('test');
    }

    public function doAbort(){
        abort(403);
    }
}


use App\Http\Traits\TestTrait;
class TestController extends Controller{
    use TestTrait;

    public function testingBack(){
        $this->doBack();
    }

    public function testingRedirect(){
        $this->doRedirect();
    }

    public function testingAbort(){
        $this->doAbort();
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例控制器中,testingAbort()方法可以工作,但testingRedirect()不能testingBack()!他们显示一个空白页面。

我假设我必须在控制器本身(而不是在 Traits 中)进行重定向,但这会导致在控制器方法中重复大量条件代码,而且我也不确定为什么会发生这种情况。

mrh*_*rhn 5

当您调用本地方法并期望控制器执行操作时,您需要返回它,否则控制器函数将返回 null 并且不对特征返回值执行操作。

public function testingBack(){
    return $this->doBack();
}

public function testingRedirect(){
    return $this->doRedirect();
}

public function testingAbort(){
    return $this->doAbort();
}
Run Code Online (Sandbox Code Playgroud)

}