command-line - Lithium:如何通过命令行访问操作?

标签 command-line lithium

我正在尝试通过 CLI 运行操作。操作是UsersController::test()

所以,我运行这个: php libraries/lithium/console/lithium.php \\app\\controllers\\UsersController test

但是我一直遇到这个错误: PHP Fatal error: Call to undefined method lithium\console\Request::get() in /var/www/example.com/libraries/lithium/action/Controller.php on line 154

我做错了什么?

最佳答案

参见http://li3.me/docs/lithium/console供引用。

据我所知,不可能直接从命令行调用 Controller 。尽管从您的错误来看,它似乎正在尝试做某事。

相反,创建一个从 \lithium\console\Command 扩展的类,并将其放置在 命名空间 app\extensions\command 中。例如,将该类命名为 Users。在该类中,创建一个名为 test() 的方法,该方法将在您通过 cli 调用命令时运行。

现在,当您运行 li3(或lithium.php)时,它应该打印所有可用的命令,并且您应该在列表中看到您的命令。您将调用 li3 users test,如果您已将 lithium/console/li3 添加到 bin 路径,则应该运行它。或者你可以调用 php -f path/to/lithium.php -- users test 应该做同样的事情。如果您遗漏了 test,它将在您的 app\extensions\console\Users 类中查找名为 run() 的方法并调用该方法。

您可能会创建 Controller 的实例并调用 test() 方法,但正如您所见,从 Web 浏览器运行时可用的 Request 类与从命令行运行时可用的 Request 类不同。最好将 Controller 方法中的业务逻辑移至另一个类,然后将请求参数从 Controller 传递到该方法。然后,您可以从控制台命令类中类似地调用相同的集中方法。

关于command-line - Lithium:如何通过命令行访问操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14719158/

相关文章:

windows - 如何在 Windows 8 上从 PowerShell 运行 Metro-App?

java - TestNG:如何在命令行上放置 java 方法的参数?

linux - 命令在终端中运行,但不在 bash 脚本中运行

c - 尚未创建的文件

linux - 如何找到文件中特定行的字节位置

php - 生成登录 token 的最佳方法是什么?这种身份验证方法是否容易受到攻击?

error-handling - 为什么 li3 HTML 助手有时不能生成正确的路径?

php - 在 Mongo 中更新数组时出错

php - 用户和 friend 的锂模型

php - 锂和验证复杂形式的输入 - 如何?