我一直在我所有的特质中使用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();
}
}