Laravel back() 或 redirect() 在 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();

    }

}

在上面的样品控制器中,方法有效,但不能!它们显示一个空页面。testingAbort()testingRedirect()testingBack()


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


慕慕森
浏览 95回答 1
1回答

米脂

当您调用本地方法并期望控制器执行操作时,您将需要返回它,否则控制器函数将返回 null,而不是对特征返回执行操作。public function testingBack(){    return $this->doBack();}public function testingRedirect(){    return $this->doRedirect();}public function testingAbort(){    return $this->doAbort();}}
打开App,查看更多内容
随时随地看视频慕课网APP