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



我一直在我所有的特质中使用Laravel助手,假设辅助函数在任何地方都可以工作。

但是,虽然像abort()这样的某些功能有效,但我刚刚意识到return redirect()return back()不起作用!

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

在这之后,我有点犹豫要不要相信拉拉维尔......我的意思是,如果下次abort(403)在某个地方不起作用(因为我不知道哪个功能在什么地方工作(,而有人做了他们不允许做的事情怎么办!

简化示例:

namespace AppHttpTraits;
trait TestTrait{
public function doBack(){
return back();
}
public function doRedirect(){
return redirect()->route('test');
}
public function doAbort(){
abort(403);
}
}

use AppHttpTraitsTestTrait;
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 中(进行重定向,但这会导致在控制器方法中复制大量条件代码,我也不确定为什么会发生这种情况。

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

public function testingBack(){
return $this->doBack();
}
public function testingRedirect(){
return $this->doRedirect();
}
public function testingAbort(){
return $this->doAbort();
}

}

最新更新