Наследование и блоки twig

Обсуждение документации второй версии фреймворка. Переводы Cookbook и авторские рецепты.
Ответить
Dirfak
Сообщения: 25
Зарегистрирован: 2016.08.10, 20:47

Наследование и блоки twig

Сообщение Dirfak »

config

Код: Выделить всё

...
'layout' => 'base.twig',
'components' => [
       ...
        'view' => [
            'class' => 'yii\web\View',
            'renderers' => [
                'twig' => [
                    'class' => 'yii\twig\ViewRenderer',
                    'cachePath' => '@runtime/Twig/cache',
                    'options' => [
                        'debug' => true, // включаем дебаг
                        'auto_reload' => true // отключаем кэш
                    ],
                    'extensions' => YII_DEBUG ? [
                        '\Twig_Extension_Debug',
                    ] : [],
                    'globals' => [
                        'html' => '\yii\helpers\Html',
                        'url' => '\yii\helpers\Url',
                        'Yii' => '\Yii',
                        'GridView' => '\yii\grid\GridView',
                    ],
                    'uses' => ['yii\bootstrap'],
                    'functions' => [
                        'dump' => '\yii\helpers\BaseVarDumper::dump',
                    ],
                ],
            ],
        ],=
        ...
views/layouts/base.twig

Код: Выделить всё

<div class="container">{% block fullContent %}{% endblock %}{#{{ this.blocks['fullContent'] }}#}</div>  
views/site/index.twig

Код: Выделить всё

{% extends "@app/views/layouts/base.twig" %}
{% block fullContent %}
    wwww
{% endblock %}
{#{{ void(this.beginBlock('fullContent')) }}
<div class="row">
    {{ dump(data) }}
    #}{#<div class="col-md-4"></div>
    <div class="col-md-4"></div>
    <div class="col-md-4"></div>#}{#
</div>
{{ void(this.endBlock()) }}#}  
Делаю через void выдает ошибку

Код: Выделить всё

A template that extends another one cannot have a body in "index.twig" at line 2. 
стандартный twig'овский block ничего не выводит, как будто ничего там нет!
ничего не выводит.
Что я не так делаю?!
R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Наследование и блоки twig

Сообщение R3D3 »

Попробуй вот такой views/site/index.twig

Код: Выделить всё

{% extends "@app/views/layouts/base.twig" %}
{% block fullContent %}
    wwww
{% endblock %}
Похоже, все чо ниже идет, твиг воспринимает за контент шаблона, а в таком шаблоне не может быть контента.
Yii Jabber Conference: yii@conference.jabber.ru
R3D3
Сообщения: 352
Зарегистрирован: 2010.04.11, 14:52

Re: Наследование и блоки twig

Сообщение R3D3 »

Еще в конфиге нужно выставить layout в false - стандартный механизм рендеринга нужно отключить. Каждый твиг шаблон сам решает, кого он экстендит.
Yii Jabber Conference: yii@conference.jabber.ru
Dirfak
Сообщения: 25
Зарегистрирован: 2016.08.10, 20:47

Re: Наследование и блоки twig

Сообщение Dirfak »

R3D3, спасибо!
Последовал твоим советам и все заработало! (походу проблема в layout'е была)
Ответить