2

2.1 から 2.2 へのアップグレード時に問題が発生しました

私のアクションコントローラーでは、コンソールコマンドを呼び出して、このようなコマンドから出力を取得しています。

$input = new ArgvInput(array(
                                'object_id' => $object_id,
                                'client_id' => $client_id,
                                'email_address' => $email
                                )
                           );

    $output = new ConsoleOutput();

    $command = $this->get('mycommand');
    $returnCode = $command->run($input, $output);

    $response = stream_get_contents($output->getStream());

symfony 2.1 では動作しましたが、最初に 2.2 にアップグレードした後、「引数が不足しています。」という例外が発生しました。これを防ぐために、他のパラメーターの前にダミーパラメーターを追加しました。

しかし、この後コマンドが実行されますが、出力を読み取ることができず、常に空です。

これに対する解決策はありますか?

4

2 に答える 2

2

問題を解決するために ConsoleOutput を次のMemoryWriter クラスに置き換える次の要点を見つけました。

また、Symfony\Bundle\FrameworkBundle\Console\Application クラスを使用して、コマンドをサービスとして作成する必要がないようにすることも提案しています。

$application = new Application($this->getContainer()->get('kernel'));
$application->setAutoExit(false); 

// The input interface should contain the command name, and whatever arguments the command needs to run      
$input = new ArrayInput(array("doctrine:schema:update"));

// Run the command
$retval = $application->run($input, $output);

var_dump($output->getOutput());
于 2013-07-23T09:31:48.153 に答える