2015-12-15 174 views
1

嗨,我有這個控制器在Yii2中呈現給我看。然後,我可以在控制檯yii generator/generate示例中編寫示例,然後這個動作生成我的框架od模型和控制器,這些在我的視圖中都有。這是代碼賦值給一個字符串變量,其中是另一個變量

<?php 

namespace console\controllers; 

use yii\console\Controller; 

class GeneratorController extends Controller { 

    private $viewControllerPath = "rest/modules/crm/v1/controllers/"; 
    private $viewModelPath = 'rest/modules/crm/v1/models/'; 

    public function actionGenerate($className, $modelClass) { 

     $controller = $this->renderFile('@app/views/generator/restController.php', ['className' => $className, 'modelClass' => 
      $modelClass]); 
     file_put_contents(\Yii::getAlias($this->viewControllerPath . $className . 'Controller' . '.php'), $controller); 

     $model = $this->renderFile('@app/views/generator/restModel.php', ['className' => $className, 'modelClass' => $modelClass]); 
     file_put_contents(\Yii::getAlias($this->viewModelPath . $className . 'Model' . '.php'), $model); 
    } 
}` 

這是這個觀點:

` 
    <?php 
echo "<?php\n"; 
?> 

namespace rest\modules\<?= $modelClass ?>\v1\models; 


use common\models\<?= $modelClass ?>\<?= $className ?> as CommonModel; 

class <?= $className ?> extends CommonModel { 

}` 

最後覺得我應該做的就是把MZ變量$ modelClass在這條道路

private $viewControllerPath = "rest/modules/crm/v1/controllers/"; 

,而不是客戶關係管理。然後我的模型和控制器將出現在適當的文件夾中。 我嘗試這樣做,但它不是工作:

private $viewControllerPath = "rest/modules/'.$modelClass.'/v1/controllers/"; 

任何人都可以幫我嗎?也許我可以用__constructor有,但我不知道如何做到這一點

回答

1

只是$modelClass取代你actionGenerate函數內部crm字的變量是這樣的:

public function actionGenerate($className, $modelClass) { 
    // replacing 'crm' with $modelClass 
    if(! empty($modelClass)) { 
     $this->viewControllerPath = str_replace ('crm' , $modelClass , $this->viewControllerPath); 
     $this->viewModelPath = str_replace ('crm' , $modelClass , $this->viewModelPath); 
    } 

    $controller = $this->renderFile('@app/views/generator/restController.php', ['className' => $className, 'modelClass' => 
     $modelClass]); 
    file_put_contents(\Yii::getAlias($this->viewControllerPath . $className . 'Controller' . '.php'), $controller); 

    $model = $this->renderFile('@app/views/generator/restModel.php', ['className' => $className, 'modelClass' => $modelClass]); 
    file_put_contents(\Yii::getAlias($this->viewModelPath . $className . 'Model' . '.php'), $model); 
} 
相關問題