2017-12-02 13 views
3

私はZend Framework 2でCLIコマンドを開発しました。コントローラから実行したいです。 Zend Framework 2でこれをどうすればできますか?Zend Framework 2のコントローラからコンソールコマンドを実行する方法は?

+0

コンソールルートを定義しましたか?それらを追加しましたか?コントローラとアクションの名前は何ですか?あなたの行動にパラメータを渡しますか? –

答えて

-1

あなたはこのようにそれを行うことができます。

$cmd = "php filenameToRun.php"; 
shell_exec($cmd); 

またはこのような:

$cmd = "pwd"; 
shell_exec($cmd); 

またはこのような:

$cmd = "mkdir myNewFolder"; 
shell_exec($cmd); 

あなたは括弧に入れて任意の正規コマンドが動作します。

+0

英語が母国語であるため、自分で修正することができます –

0

あなたが気にしている特定のCLI ConsoleControllerにリクエストを転送する必要があります。これを実現するには、Forwardプラグインを使用します。例えば:私は最初の引数内ConsoleController::classを呼び出す

class HttpController extends AbstractActionController 
{ 
    public function indexAction() 
    { 
     // do some stuff 
     $response = $this->forward()->dispatch(ConsoleController::class, ['action' => 'process']); 
     // do stuff with your response | array 
     $bar = $response['foo']; 
    } 

} 

class ConsoleController extends AbstractActionController 
{ 
    public function processAction() 
    { 
     // do stuff 
     return ['foo' => 'bar']; 
    } 

} 

注意。あなたはあなたの設定内でどのようにコントローラが登録されているかを一致させるべきです。

return [ 
    'controllers' => [ 
     'factories' => [ 
      HttpController::class => InvokableFactory::class, 
      ConsoleController::class => InvokableFactory::class, 
     ], 
     'aliases' => [ 
      'ConsoleController' => ConsoleController::class, 
     ], 
    ], 
]; 

発送は登録のコントローラを探して$this->forward()->dispatch('ConsoleController', ['action' => 'process'])を呼び出すことも有効なオプションであることに注意してください。

関連する問題