2015-12-15 177 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); 
} 
相关问题