我在所有 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 中)进行重定向,但这会导致在控制器方法中重复大量条件代码,而且我也不确定为什么会发生这种情况。
当您调用本地方法并期望控制器执行操作时,您需要返回它,否则控制器函数将返回 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)
}
| 归档时间: |
|
| 查看次数: |
503 次 |
| 最近记录: |