簡體   English   中英

Yii2:從供應商目錄中的控制器運行控制台命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM