在布局视图中调用未定义的方法Yii :: app()

时间:2014-11-20 17:46:22

标签: php yii yii2

我最近开始使用Yii 2并且我遇到了布局文件的一些问题,并收到以下错误:

Call to undefined method Yii::app()

这是我的布局文件:

<?php

use yii\helpers\Html;

/* @var $this yii\web\View */
/* @var $content string */

?>

<?php $this->beginPage() ?>

<!DOCTYPE html>
<html lang="<?=Yii::$app->language?>">
<head>
    <title><?=Html::encode($this->title)?></title>
    <meta charset="<?=Yii::$app->charset?>"/>
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <?=Html::csrfMetaTags()?>
    <link href="<?=Yii::app()->request->baseUrl;?>/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="<?=Yii::app()->request->baseUrl;?>/css/custom.css" rel="stylesheet" media="screen">



    <script type="text/javascript" src="<?=Yii::app()->request->baseUrl;?>/js/bootstrap.min.js"></script>
    <script type="text/javascript" src="<?=Yii::app()->request->baseUrl;?>/js/scripts.js"></script>

    <!--[if lte IE 8]>
        <script src="<?=Yii::app()->request->baseUrl;?>/js/html5shiv.min.js"></script>
        <script src="<?=Yii::app()->request->baseUrl;?>/js/respond.min.js"></script>
    <![endif]-->

    <?php $this->head() ?>

</head>
<body>

<?php $this->beginBody() ?>

<?=$content?>

<?php $this->endBody() ?>

</body>
</html>

<?php $this->endPage() ?>

当我使用Yii::$app时,我没有遇到任何问题,但如果我使用Yii::app(),则会收到该错误。

我在一些地方开始使用Yii::app(),因为我正在阅读并被告知您应该使用以下内容确保在视图中包含绝对路径名称:

Yii::app()->request->baseUrl

...并包含jQuery使用:

Yii::app()->clientScript->registerCoreScript("jquery");

但是当我对app()做任何事情时,我都会收到上述错误。

我尝试用app()替换$app;页面加载正常,但Yii::$app->request->baseUrl中有一个空白值。

我在这里做错了什么!?

3 个答案:

答案 0 :(得分:13)

在Yii 2中,$app是Yii的属性,而不是方法,因此您应该使用Yii::$app->blah

Source

答案 1 :(得分:2)

试试这个:Yii::$app->request->baseUrl;

Yii::$app是Yii2 Application类的静态var,'yii \ web \ Application'。它指的是Yii Application类的一个实例。由于Request类默认配置为应用程序组件,因此您可以访问大量有用的属性:Request Class Reference

Yii2还附带了许多辅助类,可以执行许多相同的操作:BaseUrl Helper

用法是:Url::base(); ...确保通过将use yii\helpers\Url;置于控制器顶部(主命名空间下方)来使用命名空间。

答案 2 :(得分:-1)

Yii::$app->homeUrl

Yii::$app是Yii2 Application类的静态变量,'yii \ web \ Application'。它指的是Yii Application类的一个实例。由于request类被配置为应用程序组件,因此默认情况下您可以访问所有有用的属性。