我不是Symfony的专家,我需要--country=XX
在symfony控制台中添加一个新的控制台选项。
此心不是一个命令,它的一个选项,其改变如何任何命令运行时,通过选择不同的数据库执行以通过构建doctrine.dbal.dbname参数如操作上api_fr
,api_de
,api_es
等。
我试图寻找一种方法来执行此操作,但是不幸的是,所有事情都回到了添加命令上,这不是我想要做的,我想添加一个选项。
我正在构建一个API,该API的一部分可与Symfony 2.8一起使用,另一部分正在使用Symfony3.x。我想答案在两个版本中可能是相同的,但是如果您知道两个版本中的操作方法又是分开的,请告诉我。
您可以添加一个EventListener,例如:
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到控制台命令并生成pid文件/
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句