2015-04-28 2 views
3

У меня есть функция в контроллере, которая управляет данными так, как я хотел. Теперь я хочу вызвать эту функцию в файле index.php в view. Как мне это сделать?YII2 Как вызвать действие контроллера из окна

В МОЕМ CONTROLLER

function actionTesting($params){ 
    ..... 
} 

Как я могу назвать его в представлении, как ..

<?php 
    echo $this->testing($params);//Calling unknown method: yii\web\View::testing() 
?> 

ответ

7

Вы не должны вызывать действия контроллера из поля зрения. Я думаю, что это нарушает шаблон MVC.

Что касается ошибки, ясно, $this в поле зрения относится к yii\web\View, а не к контроллеру и testing метода, очевидно, не существует.

Существует similar question спросил раньше, здесь можно решение (кредиты для Manesh):

Yii::$app->runAction('controller/action', ['param1' => 'value1', 'param2' => 'value2']); 

Это не достаточно, чтобы просто вызвать действие контроллера в качестве обычного вызова метода, потому что некоторые события должны быть применены, и т. д.

Я не рекомендую использовать этот подход, лучше переместить свою логику в компонент/модель в зависимости от ее типа.

1

вы можете использовать это.

echo $this->context->testing($params); 

кредиты Metacrawler оригинальный вопрос link

+0

Это одна короче, но по-прежнему является плохой практикой. – arogachev

+1

И я не уверен, что в этом случае будут применены события. – arogachev

Смежные вопросы