gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 03:00:45 26 4
gpt4 key购买 nike

我在所有 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();
}
}

在上面的示例 Controller 中,testingAbort() 方法有效,但 testingRedirect()testingBack() 无效!他们显示一个空白页面。

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

最佳答案

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

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

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

public function testingAbort(){
return $this->doAbort();
}

}

关于php - Laravel back() 或 redirect() 在 Traits 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60030653/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com