APYDataGridBundle icon indicating copy to clipboard operation
APYDataGridBundle copied to clipboard

Overwriting block inside grid block with custom theme

Open piotrekkr opened this issue 8 years ago • 0 comments

Hi,

I'm trying to extend grid block and add new block inside:

CommonBundle/Resources/views/_partial/grid.html.twig

{% extends 'APYDataGridBundle::blocks_js.jquery.html.twig' %}

{% block grid %}
    <div class="box-header with-border">
        {{ grid_pager_results_perpage(grid) }}

        {{ grid_top_links(grid) }}
    </div>
    <div class="box-body">
        <form id="{{ grid.hash }}" action="{{ grid.routeUrl }}" method="post">
            <table class="table table-bordered table-striped table-hover">
                <thead>
                    {% if grid.isTitleSectionVisible %}
                        {{ grid_titles(grid) }}
                    {% endif %}
                    {% if grid.isFilterSectionVisible %}
                        {{ grid_filters(grid) }}
                    {% endif %}
                </thead>
                {% if grid.massActions|length > 0 %}
                    {{ grid_actions(grid) }}
                {% endif %}
                <tbody>
                    {{ grid_rows(grid) }}
                </tbody>
            </table>
            {% if withjs %}
                {{ grid_scripts(grid) }}
            {% endif %}
        </form>
    </div>
    <div class="box-footer clearfix">

    </div>
{% endblock grid %}

{% block grid_top_links %}
    
{% endblock %}

BackendBundle/Resources/views/dictionary/index.html.twig

{% extends "CommonBundle:layout/backend:main.html.twig" %}

{% set menu_selected = 'settings' %}

{% block content %}
    <div class="content-wrapper">
        <section class="content-header">
            <h1>
                Słowniki
                <small>&nbsp;</small>
            </h1>
            <ol class="breadcrumb">
                <li><a href="{{ path("backend") }}">Admin</a></li>
                <li><a href="{{ path("backend.settings") }}">Ustawienia</a></li>
                <li class="active">Słowniki</li>
            </ol>
        </section>

        <section class="content">
            <div class="row">
                <div class="col-md-12">
                    <div class="box">
                        {{ grid(grid, _self) }}
                    </div>
                </div>
            </div>
        </section>
    </div>
{% endblock content %}

{% block grid_top_links %}
    <div class="pull-right">
        <a href="{{ path('backend.dictionary.add') }}" class="btn btn-default btn-sm"><i class="fa fa-plus"></i> Dodaj</a>
    </div>
{% endblock grid_top_links %}

config.yml

apy_data_grid:
    theme: 'CommonBundle:_partial:grid.html.twig'

There is no rendered link in html. grid_top_links is empty. When I try to to use

{{ grid(grid, _self) }}

I get:

An exception has been thrown during the rendering of a template ("Block "grid" doesn't exist in grid template "BackendBundle:dictionary:index.html.twig".").

I also tried using embed in index.html.twig:

{% extends "CommonBundle:layout/backend:main.html.twig" %}

{% set menu_selected = 'settings' %}

{% block content %}

    {% embed "CommonBundle:_partial:grid.html.twig" %}
        {% block grid_top_links %}
            <div class="pull-right">
                <a href="{{ path('backend.dictionary.add') }}" class="btn btn-default btn-sm"><i class="fa fa-plus"></i> Dodaj</a>
            </div>
        {% endblock grid_top_links %}
    {% endembed %}

    <div class="content-wrapper">
        <section class="content-header">
            <h1>
                Słowniki
                <small>&nbsp;</small>
            </h1>
            <ol class="breadcrumb">
                <li><a href="{{ path("backend") }}">Admin</a></li>
                <li><a href="{{ path("backend.settings") }}">Ustawienia</a></li>
                <li class="active">Słowniki</li>
            </ol>
        </section>

        <section class="content">
            <div class="row">
                <div class="col-md-12">
                    <div class="box">
                        {{ grid(grid) }}
                    </div>
                </div>
            </div>
        </section>
    </div>
{% endblock content %}

but I get:

Impossible to invoke a method ("getActionsToRender") on a null variable.

How can I overwrite bloc grid_top_links inside current action view?

piotrekkr avatar Nov 22 '17 12:11 piotrekkr