[英]Yii2: run console command from controller in vendor directory
我正在做一些重構我們的大型工作應用程序。 這涉及將我構建的一些工具(如命令行的模式/種子遷移工具)分離到他們自己的存儲庫以供多個應用程序使用。
如果它在控制台/控制器中,它會被拾取。 如果我將它們移動到他們自己的存儲庫並通過Composer需要它,我如何讓Yii知道我什么時候說php yii db/up
,我的意思是去new\\vendor\\namespace\\DbController@actionup
?
如果你創建一個擴展(當然是通過composer加載),你可以在里面找到Module.php
,它將保存控制台控制器的路徑(你可以用你的終端調用)。
我將為common\\modules\\commander
命名空間編寫我的示例,對於供應商擴展,您的命名空間將有所不同,但它以相同的方式適用於所有這些。 所以我的擴展程序有以下文件結構
<app>
common
modules
commander
controllers
• TestController.php
• Module.php
我的Module類看起來如下:
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
設置中注冊Module.php
'modules' => [
'commander' => [
'class' => \common\modules\commander\Module::className(),
],
...
],
現在,您可以使用以下命令:
yii commander/test/index
它會打印123
,顯示一切正常,控制台控制器位於不同的文件夾中!
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.