2016-11-18 5 views
2

私はsymfonyの専門家ではないので、新しいコンソールオプション--country=XXをsymfonyコンソールに追加する必要があります。symfonyコンソールに新しいコマンドラインオプションを追加する方法

これは

など、どのようなコマンドを実行する方法を変更し、そのオプションは、このよう api_frapi_deapi_esとしてdoctrine.dbal.dbnameパラメータを構築することで動作するように別のデータベースを選択して実行し、コマンドをイマイチ

私はこれを行う方法を探そうとしましたが、残念ながらすべてが私のやりたいことではないコマンドの追加に戻ってきました。私はオプションを追加したいと思います。

私は、その一部がSymfony 2.8で動作し、別の部分でSymfony 3.xを使用しているAPIを構築しています。私は答えが両方のバージョンで同じかもしれないと思いますが、両方のバージョンでこれを行う方法を知っていて、それらが別々であるなら、私に知らせてください。

答えて

6

あなたはこのexempleのようにイベントリスナーを追加することができます。

use Symfony\Component\Console\Input\InputOption; 

class YourOptionEventListener 
{ 
    public function onConsoleCommand(ConsoleCommandEvent $event) 
    { 
     $inputDefinition = $event->getCommand()->getApplication()->getDefinition(); 

     // add the option to the application's input definition 
     $inputDefinition->addOption(
      new InputOption('yourOption', null, InputOption::VALUE_OPTIONAL, 'Description of the option', null) 
     ); 
    } 
} 

次に、それをサービスとして追加します。

<?xml version="1.0" ?> 
<container ...> 
    <services> 
     <service id="app_yourOption.console_event_listener" 
       class="App\YourOptionBundle\EventListener\YourOptionEventListener"> 
      <tag name="kernel.event_listener" event="console.command" method="onConsoleCommand" /> 
     </service> 
    </services> 
</container> 

あなたは、「グローバルコマンドオプションを追加」の章では、このマニュアルを確認することができます必要なものを見つけることができます: http://php-and-symfony.matthiasnoback.nl/2013/11/symfony2-add-a-global-option-to-console-commands-and-generate-pid-file/

関連する問題