Sensiolabs Insight : Twig templates should not contain business logic

Viewed 373

I am actually running Sensiolabs Insight analysis on my Symfony 2.8 project.

I have a major issue with some of my Twig templates:

Twig templates should not contain business logic

The associated message is always the same :

Template too complex, depth of 10 is reached but only 5 is allowed.

For example this happens with the following template :

{% extends "FBNGuideBundle::layout.html.twig" %}

{% block title %}
  {{ 'fbn.guide.page_title.bookmarks'|trans }}
{% endblock %}

{% block body %}

  <div id="bookmarks" data-bookmark-ids="{{bookmarkIds|json_encode()}}">

    {% if (restaurants|length > 0) %}

      <div class="restaurants">
        <h3>MES RESTOS</h3>
        {% for bookmark in restaurants %}
          <div class="bookmark" id="{{'bookmark-' ~ bookmark.id}}">
            <a href="{{ path('fbn_guide_restaurants', {'slug': bookmark.restaurant.slug} ) }}">{{ bookmark.restaurant.name }}</a>
            <br>
            <br>
            <button>SUPPRIMER DES FAVORIS</button>      
            <br>
            <hr>
        </div>
        {% endfor %}
      </div>

    {% endif %}

  </div>

{% endblock %}

I tried to include in a separated file the code contained inside <div id="bookmarks"></div> and the depth has been reduced, but it is not a solution. I suppose that the problem is the access to some properties through several objects using getters (i.e bookmark.restaurant.slug).

I have a free plan so I am not able to access the documentation related to this warning. Anyone knows how to solve the problem ?

Thanks.

1 Answers
Related