我试图使我的symfony 3.0应用程序能够使用多个内核。 真正的目标:一个项目中的多个应用程序
一般来说一切都好。我编辑了bin / console它的内容完全如下。它完全正常,并通过php bin/console --app=api
得到我需要的结果
但是,当我执行composer install
bin/console
抛出异常时,它自然不会知道--app
参数。我希望制作类似composer install --app=api
的内容以及将参数传递给bin/console
的所需行为。我检查了文档,几乎互联网的每个像素都无法找到解决方案。
#!/usr/bin/env php
<?php
use Symfony\Bundle\FrameworkBundle\Console\Application;
use Symfony\Component\Console\Input\ArgvInput;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Debug\Debug;
// if you don't want to setup permissions the proper way, just uncomment the following PHP line
// read http://symfony.com/doc/current/book/installation.html#configuration-and-setup for more information
//umask(0000);
set_time_limit(0);
/**
* @var Composer\Autoload\ClassLoader $loader
*/
$loader = require __DIR__.'/../apps/autoload.php';
$input = new ArgvInput();
$env = $input->getParameterOption(array('--env', '-e'), getenv('SYMFONY_ENV') ?: 'dev');
$app = $input->getParameterOption(array('--app', '-a'));
$debug = getenv('SYMFONY_DEBUG') !== '0' && !$input->hasParameterOption(array('--no-debug', '')) && $env !== 'prod';
if ($debug) {
Debug::enable();
}
switch ($app) {
case 'api':
$kernel = new ApiKernel($env, $debug);
break;
case 'frontend':
$kernel = new FrontendKernel($env, $debug);
break;
default:
throw new \InvalidArgumentException("[--app|-a=<app>] app: api|frontend");
break;
}
$application = new Application($kernel);
$application->getDefinition()->addOptions([
new InputOption('--app', '-a', InputOption::VALUE_REQUIRED, 'The application to operate in.'),
]);
$application->run($input);
答案 0 :(得分:1)
您可以使用composer install --no-scripts
阻止安装后自动运行app/console
。
或者您可以完全删除bin/console
中scripts
部分中的composer.json
命令,这可能更有意义。见https://github.com/symfony/symfony-standard/blob/master/composer.json#L33-L34
或者您可以使用环境变量而不是参数。