【问题标题】:Call controller function in another controller在另一个控制器中调用控制器函数
【发布时间】:2017-04-23 13:04:39
【问题描述】:

我有一个PermissionController 和下面的permission() 函数,我想在另一个控制器中调用permission() 函数。如何将我的permission() 函数调用到另一个控制器?

这里是我的PermissionController

class PermissionController extends Controller
{
    public function permission(){
    $checkPermission = User::leftJoin('employees', 'employees.user_id', '=', 'users.id')
    ->leftJoin('positions', 'employees.position_id', '=', 'positions.id')
    ->leftJoin('divisions', 'employees.division_id', '=', 'divisions.id')
    ->where(function($query){
        $query->where('division_name', 'Sales')
                ->orWhere('division_name', '=', 'Project Management')
                ->orWhere('position_name', '=', 'Dept Head');
    })
    ->get();

    }   
}

【问题讨论】:

标签: php laravel laravel-5.3


【解决方案1】:

我认为您的功能应该在您的模型之一中,因为您只会获得价值。

根据 MVC,这将更相关。

将它包含在您的 User 模型中,您只需一次调用即可在应用程序的每个实例上使用它。

【讨论】:

    【解决方案2】:

    创建新的 Helper(例如 PermissionHelper.php),然后将函数移至它并在您想要使用的位置调用它:

    PermissionHelper::permission();
    

    希望这会有所帮助。

    【讨论】:

      【解决方案3】:

      您可以调用另一个控制器的方法,但这是一种糟糕的做法。将您的代码移动到模型并调用它:

      class PermissionController extends Controller
      {
          public function permission()
          {
              $checkPermission = User::getEmployeePermissions();
          }
      }
      

      在其他控制器的方法中做同样的事情。

      【讨论】:

        【解决方案4】:

        您可以这样调用 PermissionController 的“权限”方法:

        app(PermissionController::class)->permission();
        

        但是,请注意,这种方法根本不是一个好主意

        您有多种重构选项可用,包括使用帮助类、相关模型上的方法或使用 laravel 作业。

        【讨论】:

          【解决方案5】:

          尝试这样做

          public function __construct(PermissionController $permission_controller)
          {
            parent::__construct();
            $this->permission_controller = $permission_controller;
          }
          

          像这样调用任何方法

          $this->permission_controller->permission();
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2017-07-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-12-11
            相关资源
            最近更新 更多