2016-12-13 3 views
1

У меня есть контроллер с рабочим действием:Yii2: почему макет не отображается?

class ConfigurationController extends Controller { 

    public function actions() { 
     return [ 
      'error' => [ 
       'class' => 'yii\web\ErrorAction', 
      ], 
     ]; 
    } 

    public function actionView() { 
     $myModel = ... 
     $this->render('view', ['model' => $myModel]); 
    } 
} 

Все, кажется, будет хорошо, однако файл макета, который является приложением/вид/макет/main.php не получает показано. Специальной конфигурации макета нет. Что может быть неправильным?

ответ

3

Основная причина: я не использовал оператор return. Таким образом, правильное действие:

public function actionView() { 
    $myModel = ... 
    return $this->render('view', ['model' => $myModel]); 
// ^^^^^^ 
} 

Более подробную информацию можно найти в guide.

Примечание: Обычно отображается пустая страница. Но у меня также был <?php $form = ActiveForm::begin(); ?> без <?php ActiveForm::end(); ?> в файле вида. Это вызвало частичный рендеринг каким-то образом (не вызвало никаких исключений). Поэтому мне тоже нужно было это исправить.

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

+0

Вы должны отметить это как ответ. – topher

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