我正在設計一個調查實體的應用程序。每個調查可以有多個SurveyQuestion實體(表單中的CollectionType,調查問卷屬性 - >問題),每個SurveyQuestion可以有多個SurveyAnswer實體(SurveyQuestion-> availableAnswers)。SF2 Twig:如何自定義CollectionType中嵌入的CoolectionType的渲染?
表格在SurveyType,QuestionType和AnswerType中進行邏輯分佈。
如何爲availableAnswers設置模板片段?
我看了看周圍2線索:
首先,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因爲它是一個字段從問題一個項目採集。
其次,塊命名(根據this):
在調查表樹枝:
{% form_theme form with ['LCHModuleBundle:Survey/form:question.html.twig', 'LCHModuleBundle:Survey/form:answer.html.twig'] %}
- 對於問題
在question.html.twig:
{#Question list rendering#}
{% block _lchmodule_bundle_survey_type_questions_widget %}...{% endblock %}
在QuestionType:
class QuestionType extends AbstractType
{
const NAME= "lchmodule_bundle_question_type";.
public function getName()
{
return self::NAME;
}
/**
* @return string
*/
public function getBlockPrefix()
{
return self::NAME;
}
}
- 對於答案
在answer.html.twig:
{% block _lchmodule_bundle_answer_type_availableAnswers_widget %}...{% endblock %}
在AnswerType:
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非常適用,但不能爲答案。我如何訪問availableQuestion主題關於它是一個CollectionType中嵌入的CollectionType的事實?
感謝您的燈,
薩科
您應該循環訪問'collection type'字段並在循環中包含一個單獨的樹枝文件,您可以在其中創建子表單。通過必要的參數。然後在包含的樹枝文件中,根據需要設置你的'form_theme'。 – Jeet
非常感謝!這工作。你能給我一個好的答案嗎? – nbonniot