我实际上在Symfony 2.8项目上运行Sensiolabs Insight分析。Sensiolabs Insight:小枝模板不应包含业务逻辑
我有一个重大问题与我的一些嫩枝模板:
嫩枝模版应该包含业务逻辑
相关的消息始终是相同的:
模板太复杂,达到10的深度,但只允许5个。
例如发生这种情况与下面的模板:
{% 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 %}
我试图在分离的文件中包含的内部<div id="bookmarks"></div>
代码和深度已减少到包括,但它不是一个解决方案。我想这个问题是通过几个对象使用getter访问某些属性(例如,bookmark.restaurant.slug)
。
我有一个免费的计划,所以我无法访问与此警告相关的文档任何人都知道如何解决问题?
感谢。
这是因为你使用bookmark.restaurant.slug这个警告是愚蠢的意思是数据的确在您的控制器中“准备好”,然后访问它。我想这是这种静态分析工具的局限性。 – COil
@COIL我同意你的观点,数据是在控制器级别准备的,并且在那之前是在学习库级别(加入)。但是,我分发了[Symfony demo回购](https://github.com/symfony/symfony-demo)并运行了Insight分析。我没有得到这个警告,例如,在这个应用程序中,您可以在模板中找到如下所示的内容:**'{%for post.comments%} ... {{comment.author.fullName}}。 .. {%endfor%} ** ** – Cruz
@COil你说得对,我只是联系了Insight的支持,这里是答案:“对我来说,你的模板是完美的;)看起来我们的算法存在一个错误。我将在我们的内部错误跟踪器中打开一张新票。 与此同时,您可以放心地忽略这种违规行为。“ – Cruz