我正在尝试使用Symfony第一次创建自定义命令。 该命令应该一次执行3个命令。
这是我的命令类
class DoctrineFullFixturesLoadCommand extends ContainerAwareCommand
{
protected function configure()
{
$this
->setName('doctrine:full-fixtures:load')
->setDescription('...')
->addArgument('argument', InputArgument::OPTIONAL, 'Argument description')
->addOption('option', null, InputOption::VALUE_NONE, 'Option description')
;
}
protected function execute(InputInterface $input, OutputInterface $output)
{
$argument = $input->getArgument('argument');
if ($input->getOption('option')) {
// ...
}
$arrCommands = [
[
'command' => 'doctrine:database:drop',
'--force' => true
], [
'command' => 'doctrine:database:create'
], [
'command' => 'doctrine:schema:update',
'--force' => true,
'--complete' => true
]
];
foreach ($arrCommands as $arrInput) {
$this->getApplication()->run(
new ArrayInput($arrInput),
$output
);
}
$output->writeln('Command result.');
}
}
迭代开始时会出现问题。
它实际上只执行行中的第一个命令而不是全部三个命令。
似乎迭代在执行第一个命令之后由于某种原因而停止,我不明白,事实上最后的方法$output->writeln
根本没有被调用。
答案 0 :(得分:0)
您应该启用控制台的调试以了解问题。
控制台命令在.env文件的APP_ENV变量中定义的环境中运行,默认情况下为dev。它还读取APP_DEBUG值以打开或关闭“调试”模式(默认为1,打开)。
要在其他环境或调试模式下运行该命令,请编辑APP_ENV和APP_DEBUG的值。