2017-06-22 210 views
3

從控制器運行控制檯命令我做了大的工作的應用程序的一些重構。這涉及到將我構建的一些工具(如命令行的模式/種子遷移工具)分離到其自己的存儲庫以供多個應用程序使用。Yii2:在供應商目錄

如果是在控制檯/控制器,它就會回升。如果我將它們移動到自己的資源庫,並通過作曲家需要它,我怎麼Yii的知道,當我說php yii db/up,我的意思是去到new\vendor\namespace\[email protected]

回答

2

如果您創建了一個擴展(當然通過作曲者加載它),您可以在裏面找到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.phpyii\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,表明一切正常和控制檯控制器位於不同的文件夾!

+1

好yerke,這是一樣好一個解釋,任何人都可以給任何東西。釘住它,立即工作。謝謝! – diabetesjones

+0

歡迎你,diabetesjones =) – Yerke