为了账号安全,请及时绑定邮箱和手机立即绑定

Yii2:从小部件内部渲染视图

Yii2:从小部件内部渲染视图

PHP
隔江千里 2021-11-19 15:15:35
我试过什么?我CustomWidget通过扩展Widget类创建在run方法体的末尾,我尝试通过调用渲染方法的不同方式进行放置。我试过这种方法$this->render( '//widgets/custom' )$this->render( 'custom' )$this->render( '@frontend/views/widgets/custom' )$this->renderFile(/*absolute path to file*/)但这一切都是徒劳的。和另一个观点,例如$this->render('//site/404') - 作品我想也许是小部件搜索与所有其他视图不同的目录的问题。我已经覆盖了Widget方法getViewPath并有意返回了我的观点的路径。默认情况下getViewPath返回 .../components/views。但错误仍然存在。我试图将小部件目录放置到组件/视图中,但没有结果。一段CustomWidget代码class CustomWidget extends Widget {    public function run() {        return $this->render( '/widgets/custom' );    }}对于解决此问题的任何线索、建议和建议,我将不胜感激!
查看完整描述

3 回答

?
炎炎设计

TA贡献1808条经验 获得超4个赞

您可以在小部件内呈现如下所示的视图,我views/site/about.php在以下示例中使用该视图

echo \Yii::$app->view->render('@app/views/site/about');

您也可以使用别名或仅/site/about在上一行中使用,但请注意开头/很重要,以防您尝试从应用程序的view文件夹加载视图,否则它将指向加载小部件的当前视图文件夹。

Yii2 可用的路径别名列表basicadvanced-app

Yii2 基本应用

  • @app:您的应用程序根目录

  • @vendor:您的根应用程序安装目录中的供应商目录

  • @runtime:您的应用程序文件运行时/缓存存储文件夹

  • @web:您的应用程序基本 url 路径

  • @webroot:您的应用程序网络根

  • @tests:您的控制台测试目录

Yii2 高级应用

  • @app:您的应用程序根目录(前端或后端或控制台,取决于您从何处访问它)

  • @vendor:您的根应用程序安装目录中的供应商目录

  • @runtime:您的应用程序文件运行时/缓存存储文件夹

  • @web:您的应用程序基本 url 路径

  • @webroot:您的应用程序网络根

  • @tests:您的控制台测试目录

  • @common:根应用程序安装目录中公共根文件夹的别名

  • @frontend:根应用程序安装目录中前端根文件夹的别名

  • @backend:您的根应用程序安装目录中的后端根文件夹的别名

  • @console: 根应用程序安装目录中控制台根文件夹的别名


查看完整回答
反对 回复 2021-11-19
?
largeQ

TA贡献2039条经验 获得超7个赞

除非您使用别名,否则 render 不会识别与其各自控制器无关的相对路径。

因此,如果您想使用相对于组件或小部件的路径,例如:

小部件/MyWidget/MyWidget.php

小部件/MyWidget/views/custom.php

在 MyWidget.php 中使用它:

$this->renderFile(dirname(__FILE__). '/widgets/custom.php' )


查看完整回答
反对 回复 2021-11-19
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

问题是ftpphp用户有不同的组。

我通过ftp创建了文件,该文件的组与php用户开始时的组不同。

更改组widgets/custom.php和目录组widgets以适合php并设置权限以0770修复该问题


查看完整回答
反对 回复 2021-11-19
  • 3 回答
  • 0 关注
  • 132 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信