2015-05-28 24 views
5

Tak więc w Yii 1 w pliku widoku można uzyskać dostęp do właściwości/akcji kontrolera za pomocą $this->action() lub $this->property.Yii 2 Szybszy sposób dostępu do kontrolera z widoku

W Yii 2 jedyny sposób, w jaki mogę to zobaczyć, to: Yii::$app->controller->property lub Yii::$app->controller->action(). Jestem jeden za tym, że nie chcę napisać więcej kodu, niż to konieczne, więc zastanawiałem się, czy istnieje krótsza metoda robienia tego.

Odpowiedz

14

Kontroler widoku to w zasadzie "kontekst", w którym wywołano render tego widoku.

Istnieje specjalna właściwość do pobrania bieżącego powiązanego kontrolera z widoku i nazywa się dokładnie tak: context.

Przykład: $this->context

oficjalne docs:

+3

Cóż będę cholernie ... Nauczyłem się czegoś dzisiaj :) – Blizz

+1

Działa to doskonale i wydaje się trochę bardziej intuicyjne niż 'Yii :: $ app-> controller;' – jtotheh

+1

Jest to również dobre, jeśli tworzysz widżety i chcesz połączyć się z głównym widgetem mponent z pliku widoku widgetu. – friek108

0

\Yii::$app->controller w rzeczywistości to jedyny "prawdziwy" sposób na zrobienie tego.

Jest sposób pisania nieco mniej, dunno czy to jest warte wysiłku:

public function actionWhatever() 
{ 
    return $this->render('view', ['controller' => $this]); 
} 

Następnie w widoku masz $controller -variable.