问题标签 [symfony-console]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
973 浏览

php - 如何隐藏或删除默认可用的控制台命令?

我通过symfony new my_project_name.

目前,当我执行时./bin/console,输出显示

控制台输出

我将创建一些自定义控制台命令,并且我只想显示我的自定义命令./bin/console

也许我应该从头开始创建一个自定义的可执行“控制台”,但我不知道该怎么做。

0 投票
2 回答
1710 浏览

php - 提前退出 Symfony 控制台执行()?

我使用 Sympfony Console 作为独立组件。

假设我有一个命令定义如下:

显然使用它很可能不正确return false; 那么正确的方法是什么,我似乎无法在文档中找到参考或示例?我能找到的最接近的东西是参考,ConsoleEvents::TERMINATE但使用事件来实现我的目标似乎有点矫枉过正?

0 投票
1 回答
373 浏览

php - 本地主机无法与 Symfony 的全新安装一起使用

我知道上面有一个线程(“Symfony 全新安装无法在我的本地主机上运行”)但该解决方案没有帮助我。

我是 Symfony 的新手,我尝试创建我的第一个项目。我安装了一个新的 Symfony 副本,然后尝试启动服务器,但我无法访问 localhost:8000,它永远加载并且没有任何反应。

我的文件夹:

屏幕安装

我运行了这个命令: php bin/console server:run 它说一切正常,我现在可以访问它。

命令结果

..但是当我尝试访问它时,标签会永远加载。

永远加载标签

服务器状态

例如,我已经尝试在另一个端口上启动服务器php bin/console server:start *:8080,但同样的问题发生了。难道我做错了什么 ?感谢您的帮助,并为我糟糕的英语感到抱歉。

0 投票
1 回答
514 浏览

php - 在 null 上调用成员函数 addArguments()

我尝试模拟我的 laravel 控制台命令以进行 PHPUnit 测试。作为构造函数参数,它需要一个 laravel 配置存储库的实例:

我的控制台命令的相应构造函数如下所示:(其中Repository类型为Illuminate\Config\Repository

因此,如果我现在运行单元测试,我会收到此错误:

1) Tests\Unit\Commands\ AmazingCommandTest::test_something_to_be_working 错误:在 null 上调用成员函数 addArguments()

/Users/xyz/Projects/packages/amazingpackage/foobar/vendor/laravel/framework/src/Illuminate/Console/Command.php:144

这指向方法中的一行protected function configureUsingFluentDefinition() {}

$this->getDefinition()->addArguments($arguments);其中 getDefinition() 返回一个 InputDefinition:

getDefinition()只检查是否$this->definition已定义,如果没有则抛出 LogicException。

那么,我在这里做错了什么?有什么我可能想念的吗?

0 投票
1 回答
223 浏览

symfony - 使用 Symfony 控制台在后台启动服务器时出现问题

我将 Symfony 控制台更新到 v4.12.0 。现在,当我使用 Symfony 控制台在后台启动服务器时,会symfony server:start -d显示以下错误:

|错误| SERVER 无法进入后台错误=“无法观看状态文件:参数不正确。”

我该如何解决这个错误?

0 投票
2 回答
592 浏览

php - 诗篇:返回多种类型的句柄方法

编辑这是 Psalm 的事情,而不是 PHP MD 的事情。

我正在编写一个 Symfony 控制台命令。在其execute方法中,我使用该方法检索参数$input->getArgument('argument_name')。我将这个值传递给一个服务,它期望这个值是字符串类型的。

整体代码:

PHP MD Psalm 没有看到我已经确认这$identifier是一个字符串,然后将它作为参数传递给其中一个vehicleService方法并抛出PossiblyInvalidArgument错误,因为Argument 1 ... expects string, possibly different type array<array-key, string>|null|string provided.

如何确保 PHP MD 这是一个字符串?

0 投票
0 回答
53 浏览

php - 使用 Symfony 控制台(或 PHP)更新行文本

我想制作一个控制台应用程序,为长时间运行的进程显示用户反馈。例子:

我想在不写新行的情况下更新5mb字,完成后继续下一行。我不能使用进度条,因为在运行命令之前我无法获得总数......

有没有办法用 Symfony 控制台做到这一点?

0 投票
0 回答
71 浏览

symfony - 从控制台命令运行时,mpdf 无法打开图像

我正在使用 Symfony 4.3
我有一个InvoiceService,它将发票生成为 pdf 文件。
对于 html 内容,我使用\Twig\Environment::render()方法。在模板中,我asset()对图像使用了 twig 函数。

当我从控制器运行此服务时,发票生成没有问题,但是当我从控制台命令运行此服务时,我收到错误:

警告:fopen(/img/core-img/logo.png):无法打开流:没有这样的文件或目录

当不从控制器运行时,是否应该以不同的方式使用 Twig 环境?

这是负责的代码:

通过依赖注入$this->twig并被 传递\Twig\Environment
$this->mpdf

我试图通过asset('path/to/image')和包含图像absolute_url(asset('path/to/image')),两者都导致白色正方形中的红色 X 代替图像。从控制器运行时,图像就在那里。

0 投票
1 回答
989 浏览

php - 从 Symfony 5 OutputInterface 获取整个控制台输出

我有一个像这样的 Symfony 5 命令:

此命令会生成大量带有$this->io->caution(...)$this->io->block(....)等 的输出$this->io->text(....)

有时(并非总是:存在一些运行时条件),在执行结束时,我想访问命令生成的整个输出,然后通过电子邮件发送。所以....我怎样才能取回OutputInterface所显示的一切?有没有一种$this->output->getBuffer()

只要我现在仍然可以在标准输出(我的终端)上显示所有内容,我就可以毫无问题OutputInterface $output地与其他东西(logger ,也许?)交换。

0 投票
1 回答
188 浏览

php - 如何将通配符 GLOB 传递给由 Symfony 控制台包装的 rsync?

我想做的事

我想将所有 XML 文件/source//target/

我如何尝试做到这一点

我正在使用 Symfony 进程/控制台组件作为 rsync 的包装器。

  • 流程组件 ^5.0
  • Symfony 控制台 ^4.3
  • PHP 7.2。

我的问题

php bin/console command:moveFiles /source/*.xml /target/通过运行结果调用我的命令:

Too many arguments, expected arguments "command" "source-path" "target-path".

似乎 /source/*.xml 中的 * 会抛出 Symfony (?) 并且不会让它识别提供的正确数量的参数。转义 * 会rsync -avz --remove-source-files /source/\*.xml /target/导致:

rsync: link_stat "/source/*.xml" failed: No such file or directory (2)

如何将通配符 GLOB 传递给 symfony 包装的 rsync?有没有另一种方法可以使用控制台来实现这一点?