2016-08-03 44 views
0

私はアンケートエンティティを使ってアプリを設計しています。各調査は複数のSurveyQuestionエンティティ(フォームのCollectionType、Survey-> questionsの属性)を持ち、各SurveyQuestionは複数のSurveyAnswerエンティティ(SurveyQuestion-> availableAnswers)を持つことができます。SF2 Twig:CollectionTypeに埋め込まれたCoolectionTypeのレンダリングをカスタマイズするにはどうすればいいですか?

フォームは、SurveyType、QuestionTypeおよびAnswerTypeに論理的に広がっています。

availableAnswersのテンプレートフラグメントを設定するにはどうすればよいですか? 、特定のタイプをターゲットform_theme

まず:それはフィールドには質問の一つの項目からですので、アンケートの形で

{# Theming for questions #} 
{% form_theme form.questions 'LCHModuleBundle:Survey/form:question.html.twig' %} 

{# Theming for answers #} 
{#{% form_theme form.availableAnswers 'LCHModuleBundle:Survey/form:answer.html.twig' %}#} 

アクセスavailableQuestionsすることは不可能に見え小枝

は、私は約2リードを見てコレクション。 (thisに従って)

次に、ブロック命名:

調査票小枝で:質問question.html.twigで

について

{% form_theme form with ['LCHModuleBundle:Survey/form:question.html.twig', 'LCHModuleBundle:Survey/form:answer.html.twig'] %} 
  • QuestionTypeで
    {#Question list rendering#} 
    {% block _lchmodule_bundle_survey_type_questions_widget %}...{% endblock %} 
    

    :answer.html.twigで

    class QuestionType extends AbstractType 
    { 
        const NAME= "lchmodule_bundle_question_type";. 
    
        public function getName() 
        { 
         return self::NAME; 
        } 
    
        /** 
        * @return string 
        */ 
        public function getBlockPrefix() 
        { 
         return self::NAME; 
        } 
    } 
    
      答えを

    :AnswerTypeで

    {% block _lchmodule_bundle_answer_type_availableAnswers_widget %}...{% endblock %} 
    

    class AnswerType extends AbstractType 
    { 
        const NAME = "lchmodule_bundle_answer_type"; 
        /** 
        * @return string 
        */ 
        public function getName() 
        { 
         return self::NAME; 
        } 
    
        /** 
        * @return string 
        */ 
        public function getBlockPrefix() { 
         return self::NAME; 
        } 
    } 
    

    THemingは質問には効果的ですが、回答には効果がありません。 CollectionType内に埋め込まれたCollectionTypeであるという事実に関して、availableQuestionsテーマにアクセスするにはどうすればよいですか?あなたのライト用

    おかげで、

    ニコラス

+0

'collection type'フィールドをループし、ループの内側に別のtwigファイルを含めます。ここで、子フォームを持つことができます。必要なパラメータを渡します。次に、付属の小枝ファイルの中で、必要に応じて 'form_theme'を設定します。 – Jeet

+0

ありがとうございました!これはうまくいった。私は良いものとしてマークすることができる答えを入れてもらえますか? – nbonniot

答えて

1

メインフォームで、としてあなたのコレクションアイテムを印刷:colleciton項目は別の小枝ファイルにできるように

{% for collectionItem in form.collections %} 
    {% include 'AppBundle:Blog:collection.item.html.twig' %} 
{% endfor %} 

。別の小枝ファイル(collection.item.html.twig)でform_themeを定義するか、必要な変更を加えます。

これが役に立ちます。

関連する問題