【发布时间】:2020-01-28 13:26:24
【问题描述】:
我有一个具有某些功能的控制器。在每个函数中,我都通过Contoller.php 共享用户数据来获取用户数据
在controller.php中
public function share_user_data() {
$user = Auth::user();
$this->checkValidation($user);
$this->user = $user;
View::share('user', $user);
}
public function checkValidation($user){
if($user->email_activated == 0){
var_dump($user->email_activated); // I get: int(0)
return redirect('/verifyEmail');
}
}
在另一个控制器中
public function viewCategory(Category $category){
$this->share_user_data(); // here's the check
$this->get_site_lang();
$products = $category->products;
return view('category', compact('category','products'));
}
但我得到了类别视图,并没有重定向到 verifyEmail 路由。如何解决这个问题以及为什么会这样?
【问题讨论】:
-
您的
var_dump将数据写入输出流,这告诉 PHP 发送标头并开始渲染正文。标头发送后无法修改,因此无法重定向。 -
最好从 Contoller.php 返回某种响应并根据控制器中的响应重定向,但您仍然可以尝试 public function checkValidation($user){ if($user-> email_activated == 0){ return redirect('/verifyEmail')->send(); } }
-
@EmanuelVintilă 问题不在于 var_dump 我添加它只是为了确保值为 0。我删除了它但仍然没有重定向
-
@SagarSainkar 我只是不想在每个函数中单独验证它我可以有一个单独的函数来返回验证结果但打算让它只有一个函数