1

我需要根据控制器操作中的某些条件动态设置 viewPath。我通过在您的控制器中放置一个名为 getViewPath() 的方法来了解一种方法,如下所示:

public function getViewPath() {
  $controllername = $this->getId();
  $newPath = "application.views.extra";
  $newPath = YiiBase::getPathOfAlias($newPath);
    return $newPath;
}

但正如我之前所说,我需要根据条件设置 viewPath。像这样:

public function actionView($section) {
   switch ($section) {
     case 'yoga':
       $viewpath = 'yoga';
     break;

      case 'cycling':
        $viewpath = 'cycling';
      break;
   }

    // Now this should render from either:
    1.  protected/views/yoga/  
    2.  protected/views/cycling/
     $this->render('view');
}

控制器类有 getViewPath() 但没有 setViewPath() 并且 viewPath 属性也是只读的。

感谢您对此的任何帮助。

4

1 回答 1

0

//在渲染路径中使用默认为protected/views/,因此您可以执行以下操作:

public function actionView($section) {
   switch ($section) {
     case 'yoga':
       $viewpath = '//yoga/';
     break;

      case 'cycling':
        $viewpath = '//cycling/';
      break;
   }

    // Now this should render from either:
    //1.  protected/views/yoga/  
    //2.  protected/views/cycling/
     $this->render($viewpath.'view');
}
于 2012-11-20T08:47:31.217 回答