【问题标题】:Yii2 - Render view located in subfolderYii2 - 位于子文件夹中的渲染视图
【发布时间】:2023-04-07 07:57:01
【问题描述】:

我正在使用 Yii2,我想知道哪种方法是从控制器呈现位于视图目录中子文件夹中的文件的正确方法。比如我有以下情况:

views
-campus (carpeta)
--actividad (subcarpeta)
---2020.php (vista)

到目前为止,我已经尝试过这个选项,但没有成功:

return $this->render('/actividad/2020',[]); 
return $this->render('/actividad/2020',[],$this->context); 
return $this->render('2020',[],$this->context); 
return $this->render('@app/views/campus/actividad/2020',[]); 
return $this->render('//actividad/2020',[]);

我的控制器CampusController

<?php

namespace frontend\controllers;
class CampusController extends \yii\web\Controller
{  
    public function action2020()
    {
        return $this->render('actividad/2020');
        //return $this->render('/campus/actividad/2020');
        //return $this->render('//campus/actividad/2020');
        //return $this->render('@app/views/campus/actividad/2020');
    }
}

【问题讨论】:

  • 试试return $this-&gt;render('actividad/2020',[])
  • 我也试过@rob006
  • 你可以试试return $this-&gt;render('@frontend/views/campus/actividad/2020'); 吗?
  • 我已经这样做了。同样的,找不到页面!
  • @4aLifeTime 如果出现“page not found”错误,则表示框架无法找到您的action,因此永远不会执行视图渲染代码。您应该专注于首先尝试调用您的操作。您可以尝试使用简单的return 'test'; 而不是视图渲染,并检查是否有效。

标签: php view yii2 render subdirectory


【解决方案1】:

如果您在CampusController 上,想要渲染2020.php,并拥有您在问题中显示的文件夹结构:

views
-campus (carpeta)
--actividad (subcarpeta)
---2020.php (vista)

以下所有方法都可以:

return $this->render('actividad/2020');
return $this->render('/campus/actividad/2020');
return $this->render('//campus/actividad/2020');
return $this->render('@app/views/campus/actividad/2020');

如果你不给视图传递任何参数,你可以传递一个空数组,但你也可以去掉第二个参数。

您确实需要返回 $this-&gt;render(...) 的结果,在您的问题中,您似乎正在调用 return after,这将返回一个空响应而不是渲染视图文件的结果。

【讨论】:

  • 谢谢。这是一个错字。我无法访问,它说“找不到页面”。我将使用我的控制器代码编辑我的问题。
猜你喜欢
  • 2015-12-31
  • 2015-09-14
  • 1970-01-01
  • 2015-03-08
  • 1970-01-01
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 2017-05-07
相关资源
最近更新 更多