Laravel-从控制器方法重定向不起作用

时间:2019-03-03 08:54:02

标签: laravel laravel-5

我在DocumentsController中有此方法,并且正在尝试实现一些简单的权限系统,因为在添加,编辑或删除{之前,必须为非管理员用户分配一个分支和一个部门。 {1}}。 这是该方法的代码

Document

这是在映射到路由 /** * Check the credentials of the user that is not an admin * to add, modify a document */ private function checkCredentials() { $user = auth()->user(); // dd((!is_admin() && !$user->branch_id && !$user->department_id)); if (!is_admin() && !$user->branch_id && !$user->department_id) { // dd(redirect()->route('documents')); return redirect()->route('documents')->with([ 'class' => 'alert-danger', 'message' => 'Ask your administrator to assign you a branch and department first', ]); } } 的我的一种控制器方法中如何调用它

Route::get('/documents/add', ['as' => 'documents.add', 'uses' => 'DocumentsController@create',]);

问题是重定向无法继续进行,因为它继续显示表单,即使尚未为用户分配分支或部门,也就是public function create() { $this->checkCredentials(); ... return view('main/documents/create', $data); } branch_id都被使用时等于department_id

这可能是什么原因?谢谢。

1 个答案:

答案 0 :(得分:1)

您没有从控制器返回重定向,请尝试以下操作:

 /**
 * Check the credentials of the user that is not an admin
 * to add, modify a document
 */
private function checkCredentials() {
    $user = auth()->user();
    // dd((!is_admin() && !$user->branch_id && !$user->department_id));
    if (!is_admin() && !$user->branch_id && !$user->department_id) {
        // dd(redirect()->route('documents'));
      return false;
    }
}

public function create()
{
    if(!$this->checkCredentials()) {
        return redirect()->route('documents')->with([
            'class' => 'alert-danger',
            'message' => 'Ask your administrator to assign you a branch and department first',
        ]);
     }

    ...

    return view('main/documents/create', $data);
}