2014-11-20 13 views
7

I niedawno zaczął używać Yii 2 i mam pewne problemy z pliku arkusza z coraz poniższy błąd:Uzyskanie połączenia z metodą niezdefiniowany Yii :: app() w widoku układu

Call to undefined method Yii::app() 

To jest mój plik układ:

<?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() ?> 

Gdy używam Yii::$app mam żadnych problemów, ale jeśli mogę użyć Yii::app() następnie uzyskać ten błąd.

zacząłem używać Yii::app() w niektórych miejscach, jak czytałem wokół i powiedziano należy użyć poniższy aby upewnić się, że to bezwzględne nazw ścieżek wewnątrz poglądów:

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

... i obejmują jQuery zastosowanie:

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

jednak gdy coś zrobić z app() otrzymuję powyższy błąd.

Próbowałem zastąpić app() z $app; strona załadowana dobrze, ale była pusta wartość w Yii::$app->request->baseUrl.

Co ja tu robię źle !?

Odpowiedz

11

W Yii 2, $app jest własnością Yii, a nie metodą, więc powinieneś użyć Yii::$app->blah.

Source

1

Spróbuj tego: Yii::$app->request->baseUrl;

Yii::$app jest static var dla klasy Yii2 Application 'yii \ web \ Application'. Odnosi się do instancji klasy aplikacji Yii. Ponieważ klasa Request jest skonfigurowany jako komponentu aplikacji domyślnie masz dostęp do mnóstwo użytecznych właściwościach: Request Class Reference

Yii2 również pochodzi z wieloma klasami pomocniczymi, które wykonują wiele tych samych rzeczy: BaseUrl Helper

Sposób użycia: Url::base(); ... pamiętaj, aby użyć przestrzeni nazw, umieszczając use yii\helpers\Url; u góry kontrolera (pod głównym obszarem nazw).

+0

Może chcesz wyjaśnić, dlaczego to zadziała. Odpowiedzi tylko na kod są uważane za niską jakość i zwykle są odrzucane i zamykane. – Dijkgraaf

+0

Zaktualizowano z wyjaśnieniem. Dzięki za radę. –

-1
Yii::$app->homeUrl 

Yii::$app jest statyczna zmienna dla klasy Yii2 aplikacji Yii, '\ Web \ Application'. Odnosi się do instancji klasy aplikacji Yii. Ponieważ klasa request jest skonfigurowana jako składnik aplikacji, domyślnie masz dostęp do wszystkich użytecznych właściwości.

Powiązane problemy