gpt4 book ai didi

php - Symfony 2.4 从 Controller 执行命令

转载 作者:行者123 更新时间:2023-12-02 21:30:03 24 4
gpt4 key购买 nike

我想从我的 Controller 执行命令 fos:elastica:populate。

我尝试了该代码,但它不起作用,我收到错误 = 1 var_dump 显示“”

$command = 'fos:elastica:populate';
$app = new Application($this->get('kernel'));
$app->setAutoExit(false);
$input = new StringInput($command);
$output = new ConsoleOutput;
$error = $app->run($input, $output);
var_dump($error);
var_dump(stream_get_contents($output->getStream());

有什么想法吗?

我尝试不同的代码......

    $command = $this->get('FosElasticaPopulateService');
$input = new StringInput('');

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

if(!$retval)
{
echo "Command executed successfully!\n";
}
else
{
echo "Command was not successful.\n";
}
var_dump(stream_get_contents($output->getStream()));

它说: “‘无互动’选项不存在。”在 输入->getOption('无交互')在填充命令中。

如果我更改代码:
$input = new StringInput('--no-interaction');

它说: “‘--no-interaction’选项不存在。”在
'ArgvInput ->addLongOption('无交互', null)'

最佳答案

逐步说明如何从 Controller 运行缓存清除命令:app/console cac:cle --env=(current_env)。

首先,确保将命令注册为服务(service.yml):

xxx.cache.clear:
class: Symfony\Bundle\FrameworkBundle\Command\CacheClearCommand
calls:
- [setContainer, ["@service_container"] ]

在 Controller 中Conde:

$command = $this->container->get('xxx.cache.clear');
$input = new ArgvInput(array('--env=' . $this->container->getParameter('kernel.environment')));
$output = new ConsoleOutput();
$command->run($input, $output);

仅此而已。 |在 symfony 2.4 上测试

关于php - Symfony 2.4 从 Controller 执行命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22535165/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com