我正在设计一个带有Survey实体的应用程序。每个调查可以有多个SurveyQuestion实体(表单中的CollectionType,属性Survey->问题),每个SurveyQuestion可以有多个SurveyAnswer实体(SurveyQuestion-> availableAnswers)。
表单在SurveyType,QuestionType和AnswerType中逻辑分布。
如何为availableAnswers设置模板片段?
我环顾了两个线索:
首先,form_theme定位特定类型:在Survey表格中
{# 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对问题很有帮助,但不是答案。如何在CollectionType中嵌入CollectionType这一事实访问可用的问题?
感谢您的灯光,
尼古拉斯
答案 0 :(得分:1)
在主窗体上,将您的收藏项打印为:
{% for collectionItem in form.collections %}
{% include 'AppBundle:Blog:collection.item.html.twig' %}
{% endfor %}
这样colleciton项目可以在单独的twig文件中。现在,在单独的文件夹文件(collection.item.html.twig
)中,定义您的form_theme
或进行必要的更改。
希望这会有所帮助。