【问题标题】:Run Symfony app by calling index.php from command line (cli)通过从命令行(cli)调用 index.php 来运行 Symfony 应用程序
【发布时间】:2018-03-16 02:06:12
【问题描述】:

我开始使用 Symfony(我来自 Codeigniter),我正在尝试弄清楚如何使用命令行调用现有的 Web 应用程序。

在 Codeigniter 中,您可以使用 cli(一个 index.php)执行主入口脚本,并将路由(url 路径)作为参数传递。然后,Route 模块将调用适当的控制器,并且将写入浏览器的相同输出实际打印到 cli 中。

在 Symfony 中似乎并非如此。我可以调用public/index.php脚本,首页打印到cli中。但后来我尝试将路由(url路径)作为参数传递,它总是打印主页。

有没有办法通过从 cli 调用 public/index.php 并传递路由作为参数来运行整个应用程序?

我已经看到 Symfony 中有一个电源控制台组件,但看起来我需要编写额外的代码才能使用已经为 Web 请求编写的功能。

有什么想法吗?

非常感谢!

【问题讨论】:

  • 是什么阻止您在应用程序上运行 curl https://myapp.local/myroute 并获得输出?

标签: php symfony


【解决方案1】:

你需要使用控制台组件,这很简单。或者使用路由创建自定义控制器并通过 curl (API) 获取/传递数据。

【讨论】:

  • 感谢您的回答。但是如果我需要使用控制台组件,我必须为每个路由编写新代码,有效地复制 Web 控制器的相同功能。这个对吗?对我来说似乎不太理想...有没有办法共享 Web 控制器和控制台组件的代码,以避免重复?
  • 不正确。您不需要副本。您可以使用自己的逻辑创建服务容器。举个例子 - 每个功能都可以是一些服务,您可以从控制器或控制台命令或您想要访问此服务的位置获得访问权限。看看这个 Symfony 3 的例子ourcodeworld.com/articles/read/239/…
  • 谢谢。所以我想我可以将控制器注册为服务,然后从控制台命令调用控制器?这样我就可以只写一次业务逻辑(在控制器中)
  • 好吧,我正在尝试从命令调用控制器的方法,但在 ControllerTrait.php(第 222 行)中出现错误“调用成员函数 has() on null” .控制器作为服务加载。
  • 您是否将 ContainerAwareCommand 类包含到您的命令中,而不是扩展 Command 类?或者你能显示代码吗?
猜你喜欢
  • 2017-02-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-03
  • 2016-06-18
  • 1970-01-01
  • 2011-07-25
相关资源
最近更新 更多