标签: symfony-console

是否可以从其默认目录移动控制台"Command"文件夹并避免异常:命令"name"未定义?

默认情况下,控制台命令文件夹位于:MyProject\MyBundle\Command并且所有操作都按预期工作,但如果我将文件夹移动到另一个目录中,例如:MyProject\MyBundle\MyFolder\Command在命令执行时,它会抛出: [InvalidArgumentException] Command "command_name" is not defined.

在通过互联网搜索并阅读可能与此问题相关的所有文档后,我找不到任何有用的东西......

问题是:存在移动该文件夹的模式还是我将被迫使用默认文件夹?

谢谢!

console symfony symfony-console

4
推荐指数
1
解决办法
1018
查看次数

Symfony控制台-显示不带参数的命令帮助

我正在开发一个非常简单的Symfony控制台应用程序。它只有一个带有一个参数的命令,以及几个选项。

我按照本指南创建了Application该类的扩展。

这是该应用程序的正常用法,并且工作正常:
php application <argument>

这也很好用(带有选项的参数):
php application.php <argument> --some-option

如果有人在运行时php application.php没有任何参数或选项,那么我希望它像用户在运行一样运行php application.php --help

我确实有一个可行的解决方案,但它不是最佳解决方案,可能有点脆弱。在扩展Application类中,我run()按如下方式覆盖了该方法:

/**
 * Override parent method so that --help options is used when app is called with no arguments or options
 *
 * @param InputInterface|null $input
 * @param OutputInterface|null $output
 * @return int
 * @throws \Exception
 */
public function run(InputInterface $input = null, OutputInterface $output = null)
{
    if ($input === null) { …
Run Code Online (Sandbox Code Playgroud)

php symfony symfony-console

4
推荐指数
2
解决办法
1027
查看次数

Symfony 控制台:如何在发生错误/异常/警告时显示行号

当运行 Symfony 控制台应用程序并出现错误/异常/警告时,例如:

[Symfony\Component\Debug\Exception\ContextErrorException]
警告:为 foreach() 提供的参数无效

它没有显示问题所在的行号,因此很难定位。

有没有办法显示它?

php error-handling console-application symfony symfony-console

4
推荐指数
1
解决办法
1230
查看次数

PSR-4代码库中的doctrine生成器的解决方法

在我正在尝试的Windows机器上使用Symfony 2和Doctrine

  1. 从现有模式生成实体:

    php app/console doctrine:mapping:import --force CoreBundle annotation

  2. 在它们上生成getter/setter:

    php app/console doctrine:generate:entities --path=/path/to/codebase/src/MyProject/CoreBundle/Entities CoreBundle

  3. 使用Voryx在它们上生成REST CRUD控制器:

    php app/console voryx:generate:rest --entity="CoreBundle:User"

第一步工作正常,我可以在我的CoreBundle/Entity文件夹中找到具有正确命名空间的实体:

MyVendor\MyProject\CoreBundle\Entity
Run Code Online (Sandbox Code Playgroud)

目前很好.但是,运行其他2个命令将失败:

[RuntimeException]
Can't find base path for "CoreBundle" (path: 
"\path\to\codebase\src\MyProject\CoreBundle", destination: 
"/path/to/codebase/src/MyProject/CoreBundle").  
Run Code Online (Sandbox Code Playgroud)

我的composer.json中的自动加载看起来像这样:

"autoload": {
    "psr-4": {
        "MyVendor\\": "src/"
    }
},
Run Code Online (Sandbox Code Playgroud)

我发现Doctrine不能处理PSR-4命名空间,这可能是它失败的原因.

我真的希望这些实体能够存在于PSR-4 CoreBundle中 - 它有解决方法吗?

我试过这个,但它也不起作用:

"autoload": {
    "psr-0": {
        "MyVendor\\MyProject\\CoreBundle\\Entity": "src/MyProject/CoreBundle/Entity/"
    },
    "psr-4": {
        "MyVendor\\": "src/"
    }
},
Run Code Online (Sandbox Code Playgroud)

谢谢.

php symfony doctrine-orm psr-0 symfony-console

3
推荐指数
1
解决办法
1586
查看次数

如何在 Symfony 控制台中禁用命令的输出?

我编写了一个模块,实际上是 Magento 2 中的自定义命令。显然,Magento 2 控制台应用程序自豪地由Symfony Console提供支持。我关心的是如何禁用$output指定命令的输出?

例如:

$setupUpgradeCommand = $this->getApplication()->find('setup:upgrade');

$setupUpgradeArguments = array(
    'command' => 'setup:upgrade',
    '--quiet' => true,
);

$setupUpgradeInput = new ArrayInput($setupUpgradeArguments);

$start = microtime(true);
$output->writeln('<info>Start upgrading module schemas...</info>');
$setupUpgradeCommand->run($setupUpgradeInput, $output);
$output->writeln('...............................<info>OK</info>');

// My long logic-code start from here....
Run Code Online (Sandbox Code Playgroud)

不幸的是,即使我设置--quiet为 true,此命令的输出setup:upgrade仍然存在。

有任何想法吗?

php magento symfony symfony-console

3
推荐指数
1
解决办法
2337
查看次数

如何使用Symfony控制台工具检查环境?

我使用Symfony CLI工具,我正在寻找一种检查环境的方法.我找不到类似的东西

$ php bin/console get environment
Run Code Online (Sandbox Code Playgroud)

还有另外一种方法吗?有可能/如何找出当前活动的环境?


编辑

应用程序在具体环境中运行(然后使用app.phpfor prodapp_{env}for for other environment).

所以我真正想要实现的是找出应用程序当前正在使用哪个环境(当通过HTTP调用应用程序时,例如在浏览器中).

environment symfony symfony-console

3
推荐指数
4
解决办法
6802
查看次数

Symfony/Console:如何使用多个进度条?

我有一个Symfony/Console命令,它使用Guzzle Pool一次下载几个文件.我已经有Guzzle报告每个文件的下载进度,这很好.

现在我想使用Symfony/Console 的ProgressBar帮助器来改进它.问题是我为ProgressBar找到的所有示例只使用一个进度条.我需要几个独立的进度条 - 每个下载一个.你能给我一些提示如何实现吗?

php symfony guzzle symfony-console

3
推荐指数
2
解决办法
2848
查看次数

Symfony 进度条正在新线路上重新创建

Symfony 控制台进度条不是在同一行上前进,而是在新行上创建

 1/2 [==============>-------------]  50%
 ! [NOTE] No changes made to Categories/CategoriesSchema              


 2/2 [============================] 100%
 2/2 [============================] 100%
Run Code Online (Sandbox Code Playgroud)

我假设进度条只会在同一行上移动,直到操作完成。这是我的代码

$io = new SymfonyStyle($input, $output);
$progressbar = new ProgressBar($output, count($elements));
$progressbar->start();

foreach ($elements as $element) {

     //work on element
     io->note("No changes made to ".ucfirst($name));

     $progressbar->advance();
     $io->newLine();
}

$progressbar->finish();
Run Code Online (Sandbox Code Playgroud)

我做错了什么??

php symfony symfony-console

3
推荐指数
1
解决办法
4120
查看次数

PhpStorm终端:Cygwin颜色不起作用

我有PhpStorm 2016.2,并且在Shell路径中添加了Cygwin,如下所示: "C:\cygwin64\bin\env.exe" CHERE_INVOKING=1 /bin/bash.exe

它工作正常,但颜色不起作用。对于为例我?[32m Name不是已经Name在绿色。

我尝试了几种方法,例如添加插件Grep Console以支持ANSI Color,但是没有用。

使用具有多种ANSI颜色的线真的很难?[39m ?[32m Scheme ?[39m ?[32m Host ?[39m ?[32m Path

请随时询问有关该问题的更多信息。谢谢。

PS我在Windows 10上。

编辑

当我/usr/bin/which php在PHPStorm终端中执行操作时,我得到了/cygdrive/d/wamp2/bin/php/php5.6.16/php。我的WAMP中有php5.6.16和php7.0.0,目前正在使用php7.0.0。

编辑2我所以现在添加了php7.0.0一个$ PATH我有/cygdrive/d/wamp2/bin/php/php7.0.0/php,当我做/usr/bin/which php。但是主要问题仍然存在。

terminal cygwin wamp phpstorm symfony-console

2
推荐指数
1
解决办法
2805
查看次数

如何从控制器外的parameters.yml中检索参数?

我需要从参数parameters.yml中的Command\ContainerAwareCommand类.我没有看到$this->getParameter()那里.

有没有一种从parameters.yml外部控制器检索参数的简单方法?

比以下更简单:编写"友好配置",并将参数foo放入config.yml,然后检索参数DependencyInjection\Extension::load(),并设置它:$container->setParameter('foo', $foo),最后在Command\ContainerAwareCommand检索它$this->getContainer()->getParameter('foo')

php symfony symfony-console

2
推荐指数
1
解决办法
642
查看次数

从Symfony Command调用服务失败,并显示“由于尚未设置应用程序实例,因此无法检索容器”。错误,为什么?

我在以下服务定义IntegrationBundle/Resources/config/services.yml

services:
  event.subscriber.params.extractor:
    class: IntegrationBundle\Middleware\EventSuscriberParamsExtractor

  main.api:
    class: IntegrationBundle\API\MainAPI
    calls:
      - [setContainer, ['@service_container']]
  order.push.api:
    class: IntegrationBundle\API\OrderPushAPI
    calls:
      - [setContainer, ['@service_container']]

  process.account.api:
    class: IntegrationBundle\API\ProcessAccountData
    arguments:
      - '@event.subscriber.params.extractor'
    calls:
      - [setContainer, ['@service_container']]
  ...
Run Code Online (Sandbox Code Playgroud)

我需要main.api从一个Symfony命令中访问,这就是我的操作方式:

namespace IntegrationBundle\Command;

use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand;
use Symfony\Component\Console\Command\LockableTrait;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputDefinition;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Output\OutputInterface;

class SchneiderAPICommand extends ContainerAwareCommand
{
    use LockableTrait;

    protected function configure()
    {
        $this
            ->setName('api:execute')
            ->setDefinition(
                new InputDefinition([
                    new InputOption('source', '', InputArgument::OPTIONAL, '', 'Wonderware'),
                    new InputOption('object', '', InputArgument::OPTIONAL, '', 'Account,AgreementHistory'),
                    new …
Run Code Online (Sandbox Code Playgroud)

php symfony symfony-console symfony-3.2

2
推荐指数
1
解决办法
2269
查看次数

在 Symfony 命令中使用 Extbase 存储库

我正在升级一个扩展以与 TYPO3 v10 一起使用。由于命令控制器不能再使用,我将它们迁移到文档中指出的 symfony 命令。除了使用 extbase 存储库类之外,一切都运行顺利。无论我查询什么,我都不会得到结果。由于我在网络和文档上找不到任何有用的信息,我希望这可能只是一些小问题。

经过一段时间的调试后,我发现在构建查询设置时没有正确确定 pid。我觉得这很奇怪,因为我的根模板有这些行:

plugin.tx_myext.persistence.storagePid = 15403
module.tx_myext.persistence.storagePid = 15403
Run Code Online (Sandbox Code Playgroud)

存储库实例通过injectMyRepository() 方法正确注入。我尝试使用 extbase ObjectManager 来获取类实例,但“错误”保持不变。

我是否做错了什么或者是否无法在 symfony 命令中使用 extbase 存储库类?

typo3 extbase symfony-console typo3-10.x

1
推荐指数
1
解决办法
719
查看次数