Как повторно использовать код контроллера laravel в пользовательской команде - PullRequest
0 голосов
/ 13 февраля 2019

У меня есть файл контроллера, в котором есть функция login (), которая регистрируется (аутентифицируется и возвращает токен) на какой-либо сторонний портал.Теперь я хочу использовать эту функцию контроллера в пользовательской команде.Пожалуйста, предложите, как это сделать.Мой файл контроллера выглядит следующим образом:

<?php

namespace App\Http\Controllers;
use Illuminate\Http\Request;
class mmt extends Controller {
public function login() {
 //code to login to third party portal
 // returns a token after successful login
}

Мой пользовательский командный файл, расположенный в app / Console / Commands, выглядит следующим образом:

<?php
namespace App\Console\Commands;
use Illuminate\Console\Command;
class RcvSurveyEmails extends Command {
   protected $signature = 'RcvSurveyEmails:name';
   protected $description = 'command description here';
   public function handle(){
  //I need to use the login() function here and get the token.
}
?>

Я ищу в Интернете аналогичное решение, но не смоглюбой

1 Ответ

0 голосов
/ 13 февраля 2019

Вы можете сделать это двумя способами:

Метод 1
Use Trait

trait LoginTrait{
   public function Login(){
   //put your code here
   }
}

И после этого вы можете использовать свою функцию внутри вашегокласс, как показано ниже:

namespace App\Http\Controllers;
use Illuminate\Http\Request;
class mmt extends Controller {
  use LoginTrait;//login is now available inside your class

  //rest of your codes
}

И в вашей команде все будет примерно так:

namespace App\Console\Commands;
use Illuminate\Console\Command;
class RcvSurveyEmails extends Command {
   use LoginTrait;//login Function is now avaiable inside your Command and you can call it
   protected $signature = 'RcvSurveyEmails:name';
   protected $description = 'command description here';

   public function handle(){
   login();//login function
   }
}

Метод 2

В случае, еслиу вашего класса контроллеров нет специальных constructor, вы можете создать экземпляр из вашего контроллера внутри вашего command и затем вызвать свой метод, как показано ниже:

namespace App\Console\Commands;
use Illuminate\Console\Command;
use App\Http\Controllers\mmt;
class RcvSurveyEmails extends Command {
   protected $signature = 'RcvSurveyEmails:name';
   protected $description = 'command description here';

   public function handle(){
   $controller = new mmt();//your controller name
   $controller->login();
   }
}


Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...