从控制器运行控制台命令我做了大的工作的应用程序的一些重构。这涉及到将我构建的一些工具(如命令行的模式/种子迁移工具)分离到其自己的存储库以供多个应用程序使用。Yii2:在供应商目录
如果是在控制台/控制器,它就会回升。如果我将它们移动到自己的资源库,并通过作曲家需要它,我怎么Yii的知道,当我说php yii db/up
,我的意思是去到new\vendor\namespace\[email protected]
?
从控制器运行控制台命令我做了大的工作的应用程序的一些重构。这涉及到将我构建的一些工具(如命令行的模式/种子迁移工具)分离到其自己的存储库以供多个应用程序使用。Yii2:在供应商目录
如果是在控制台/控制器,它就会回升。如果我将它们移动到自己的资源库,并通过作曲家需要它,我怎么Yii的知道,当我说php yii db/up
,我的意思是去到new\vendor\namespace\[email protected]
?
如果您创建了一个扩展(当然通过作曲者加载它),您可以在里面找到Module.php
,这将保存控制台控制器的路径(您可以通过终端调用)。
我会写我的例子为common\modules\commander
命名空间,供应商扩展您的命名空间会有所不同,但对于所有的人都以同样的方式工作。 所以我有以下文件结构,我的分机
<app>
common
modules
commander
controllers
• TestController.php
• Module.php
我模块类看起来如下:
namespace common\modules\commander;
use yii\base\Module as BaseModule;
class Module extends BaseModule
{
public $controllerNamespace = 'common\modules\commander\controllers';
public function init()
{
parent::init();
}
}
而且TestController.php
从yii\console\Controller
继承:
namespace common\modules\commander\controllers;
use yii\console\Controller;
class TestController extends Controller
{
public function actionIndex()
{
echo 123;
}
}
与主要部分使一切工作是在console/config/main.php
设置
'modules' => [
'commander' => [
'class' => \common\modules\commander\Module::className(),
],
...
],
这是,现在你可以使用你的命令,如:
yii commander/test/index
,它会打印您123
,表明一切正常和控制台控制器位于不同的文件夹!
好yerke,这是一样好一个解释,任何人都可以给任何东西。钉住它,立即工作。谢谢! – diabetesjones
欢迎你,diabetesjones =) – Yerke