2017-05-14 6 views
3

私は実際にSymfony 2.8プロジェクトでSensiolabs Insight分析を実行しています。 Sensiolabs Insight:Twigテンプレートにビジネスロジックを含めることはできません

は、私は私の小枝テンプレートの一部で大きな問題があります。

ビジネスロジックを含むべきではない

小枝テンプレート

関連するメッセージは常に同じです:

テンプレート複雑すぎると深さは10に達するが、5つしか許されない。例えば

これは、次のテンプレートで発生:私は分離ファイルに<div id="bookmarks"></div>内部に含まれるコードと深さを含むことを試み

{% 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 %} 

が低減されているが、それは解決策ではありません。私は問題がゲッターを使用していくつかのオブジェクトを介していくつかのプロパティを介していくつかのプロパティにアクセスしていると考えています(bookmark.restaurant.slug)

私はこの警告に関連するドキュメントにアクセスすることができません。 ?

感謝。

+0

それはこの場合にはデータが実際にあったことを意味しているので、あなたがこの警告をbookmark.restaurant.slug使用していることは愚かであるので、それはですあなたのコントローラに「準備」してアクセスしてください。私はそのような静的解析ツールの限界だと思う。 – COil

+1

@COil私はあなたに同意します。データはコントローラレベルで準備されており、それ以前は教義リポジトリレベル(結合)で準備されています。しかし、私は[Symfony demo repo](https://github.com/symfony/symfony-demo)をフォークし、Insight分析を実行しました。たとえば、このアプリケーションでテンプレートの中に次のようなものが見つかったとしても、この警告は表示されませんでした:** '{post.comのコメント%%} {{コメント.author.fullName}}。 .. {%endfor%} '** – Cruz

+2

@Cililあなたは正しかった、私はInsightのサポートに連絡しました。ここに答えがあります:"あなたのテンプレートは完璧です;)アルゴリズムにバグがあるようです。その間に、この違反を無視しても問題ありません。 – Cruz

答えて

-2

ビューにあまりにも多くのロジックを持っている場合は、カスタム小枝拡張にそれを置くことができます。利点は、あなたがその一部を再利用している場合は、HTMLを複製する必要がないということです別のページで、もちろん、コードはより明確です:) あなたの場合、すべてのブックマークをレンダリングする新しいTwig Extensionを書くことができます。

あなたは今まで同様のsomethngを構築しなかった場合、あなたはそれについて読むことができ、ここでhttp://symfony.com/doc/current/templating/twig_extension.html

+0

私はTwig拡張がこの目的のために設計されているとは思わない。上記の私の最後のコメントを見てください。 – Cruz

+0

いいえ、拡張は必要ありません。テンプレートにビジネスロジックがありません。 – COil

+0

私は彼らがこの目的のために設計されているとは言いませんでした。これは、コードをより良く分離し、その警告を取り除くための代替手段に過ぎませんでした。 – Daniella

関連する問題