1

背景:基本上,我的应用程序有一个插件,其中有一个 Shell。这个 Shell 位于插件的 Console > Command 文件夹中。此 shell 中的函数旨在从命令行运行。

我的数据库配置文件 (database.php) 位于应用程序的根 Config 文件夹中。我在其他几个实例中访问数据库,所以我知道数据库配置没有问题。

当我尝试使用任何模型数据检索方法(例如 find(...))时,我收到错误消息:

在 database.php 中找不到数据源配置“默认”

发生这种情况是因为它正在插件的 Config 文件夹中查找 database.php 文件,而不是根 Config 文件夹。这只发生在使用 Shell 时,而不是在控制器中。

我的问题:当使用 Shell 时,如何告诉我的插件使用 root 的 database.php 文件,而不是尝试在它自己的 Config 文件夹中找到它?

重申一下:插件在从 Controller 中的模型检索数据时使用根 Config/database.php 文件,但在从 Shell 中的模型检索数据时尝试使用其自己的 Config/database.php 文件。

我尝试过的两件事会起作用: 1)将 database.php 移动到插件的 Config 文件夹中,2)创建一个符号链接。

这两种解决方案似乎都不可接受,因为我不想有两个我的 database.php 文件的副本,并且创建符号链接不是一个很好的解决方案,因为这个应用程序可能必须分布在不同的系统之间。

谢谢。我应该提到这是 Cakephp 2.3.6

回答(感谢user221931):您的工作路径需要是应用程序路径,而不是插件路径。您可以使用插件点表示法运行插件外壳。像这样:

cake -app /path/to/app Plugin.shellName shellFunction

与我之前的错误做法相反:

cake -app /path/to/app/Plugin/pluginName shellName shellFunction
4

1 回答 1

1

如何使用运行插件外壳-app

更改路径:您的工作路径应该与您的应用程序路径相同。要更改路径,请使用“-app”参数。示例:-app relative/path/to/myapp 或 -app /absolute/path/to/myapp

于 2013-09-20T20:48:26.670 回答