2016-12-08 33 views
2

私はPermissionControllerpermission()という機能があり、別のコントローラで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(); 

    } 
} 
+0

などのいずれかの方法[Laravel 5内の別のコントローラからアクセスコントローラ方法]の可能性のある重複(http://stackoverflow.com/好きにしてください質問/ 30365169/access-controller-method-from-another-controller-in-laravel-5) –

答えて

1

私はあなただけの値を取得しているので、あなたの関数は、あなたのモデルの一つであるべきだと思います。

これはMVCに従ってより関連しています。

モデルをUserにすると、アプリケーションのすべてのインスタンスで1回の呼び出しで使用できるようになります。

2

それに目的球を移動し、あなたが使用したい場所に呼び出し、新しいヘルパー(例えばPermissionHelper.php)を作成します。

PermissionHelper::permission(); 

は、この情報がお役に立てば幸いです。

1

他のコントローラのメソッドを呼び出すことはできますが、これはひどい習慣です。コードをモデルに移動して呼び出す:

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

他のコントローラの方法でも同じことを行います。

1

あなたはこのようごPermissionControllerの「許可」メソッドを呼び出すことができます。

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

しかし、この方法では、すべてので良いアイデアではないことに注意してください。

複数のリファクタリングオプションが用意されています。ヘルパークラスの使用、対象モデルのメソッド、またはラーベルジョブの使用があります。

1

この

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

コールこの

$this->permission_controller->permission(); 
関連する問題