【问题标题】:Yii2-Smarty: Cannot Access Methods of $this-objectYii2-Smarty:无法访问 $this-object 的方法
【发布时间】:2015-07-08 22:08:52
【问题描述】:

Yii2-Smarty:无法访问对象方法

我用smarty extension 设置了Yii2。

现在我试图简单地将layouts/main.php 文件转换为 smarty 模板。为此,我需要访问当前的yii\web\View 对象,该对象是从扩展名$this-smarty-variable 给出的。

我已经通过var_dump()-ing 验证了 smarty $this 变量与视图对象相同,并进行了比较。

问题

根据 smarty3 文档,我应该能够从 smarty 模板中调用 $this-object 上的方法,如下所示:{var_dump($this->head())}

在模板中应用上述脚本总是返回NULL,这让我猜想没有发生任何方法调用。

问题

如何从 PHP 提供给 smarty 的对象中调用方法?

  1. 定义用于 smarty 的变量:$template->assign('app', \Yii::$app);
  2. 在 smarty 模板中调用变量方法:{$app->getSession();}

我做错了什么?

(我目前的智能布局:pastebin

【问题讨论】:

    标签: methods yii2 smarty3


    【解决方案1】:

    在模板中应用上述脚本总是返回 NULL,这让我猜想没有发生任何方法调用。

    head() 方法不返回任何内容,因此如果您看到 null 是正确的。

    你可以这样调用方法:

    {$this->head()}
    

    【讨论】:

    • 这是我实际问题的答案。我尝试在每次调用 yii\web\View::head() 方法时将资产包含在我的布局中。但是,如果不是在布局中设置了所有标记 (beginPage, beginBody, head, endBody, endPage),这 不起作用(对我来说)!
    猜你喜欢
    • 2015-05-25
    • 2017-11-26
    • 2018-02-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 2023-04-04
    • 2012-06-17
    • 2019-08-04
    相关资源
    最近更新 更多