vibol
vibol

Reputation: 352

Twig template with symfony overriding block issues

I got a problem is overriding template. Here is my simple code

In commonHeader.html.twig

{% block topsearch %}
    <div class="col-md-6 col-sm-6 col-xs-6 col-lg-6 col-search">
        <form action="" method="post" class="navbar-form navbar-left form-inline nav-form-search">
            <div class="form-group col-md-12 form-search">
                <label class="sr-only" for="search">Search</label>
                <div class="input-group search-input-group col-md-12">
                  <input type="text" class="form-control input-search" id="search" placeholder="find...">
                  <div class="input-group-addon btn-search-addon">
                    <button type="submit" name="search" class="btn btn-icon-search">
                        <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
                    </button>
                    <button type="submit" name="search" class="btn btn-text-search">SEARCH</button>
                  </div>
                </div>
            </div>
        </form>
    </div>
{% endblock %}

In file commonPage.html.twig I do like this:

{% block header %}
    {{ include('::commonHeader.html.twig') }}
{% endblock %}
{% block content %}{% endblock %}

And I have many layouts that extended from commonPage.html.twig. And on each layout, search have difference action url, so I need to override it.

Ex. in myLayout.html.twig I want to like this

{% extends "::commonPage.html.twig" %}
<!-- start overriding search here -->
{% block topsearch %}
    <div class="col-md-6 col-sm-6 col-xs-6 col-lg-6 col-search">
        <form action="mynewactionurl" method="post" class="navbar-form navbar-left form-inline nav-form-search">
            <div class="form-group col-md-12 form-search">
                <label class="sr-only" for="search">Search</label>
                <div class="input-group search-input-group col-md-12">
                  <input type="text" class="form-control input-search" id="search" placeholder="find...">
                  <div class="input-group-addon btn-search-addon">
                    <button type="submit" name="search" class="btn btn-icon-search">
                        <span class="glyphicon glyphicon-search" aria-hidden="true"></span>
                    </button>
                    <button type="submit" name="search" class="btn btn-text-search">SEARCH</button>
                  </div>
                </div>
            </div>
        </form>
    </div>
{% endblock %}

{% block navigationleft %}
{% endblock %}

The problem is that I can't override search block in myLayout.html.twig? Thanks for your helping!

Upvotes: 2

Views: 224

Answers (1)

Nawfal Serrar
Nawfal Serrar

Reputation: 2263

Then you just need to fix the layout accordingly, i think its because you need to define your blocks in the main twig , i am not sure how the twig engine renders the includes but define your block in the main twig then include what you need, do not include blocks and then trying to override them. thats how our base.html.twig is defined. all our blocks are inside then we override them.

Upvotes: 1

Related Questions