SF2 Twig:如何自定义CollectionType中嵌入的CoolectionType的渲染



我正在设计一个带有Survey实体的应用程序。每个调查可以有多个SurveyQuestion实体(表格中的CollectionType,属性为survey->questions),每个SurveyQuention可以有多条SurveyAnswer实体(SurveyQuest->available Answers)。

表格按逻辑排列为SurveyType、QuestionType和AnswerType。

如何设置可用答案的模板片段

我看了两条线索:

首先,form_theme针对特定类型:在调查表单中的trick

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

看起来无法访问可用问题,因为它是一个问题集合项目中的字段

第二,块命名(根据此):

调查表格中的分支:

{% form_theme form with ['LCHModuleBundle:Survey/form:question.html.twig', 'LCHModuleBundle:Survey/form:answer.html.twig'] %}
  • 对于问题

有问题。html.twig:

{#Question list rendering#}
{% block _lchmodule_bundle_survey_type_questions_widget %}...{% endblock %}

问题类型:

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

In 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这一事实的可用问题主题?

谢谢你的灯光,

Nicolas

在主窗体上,将您的收藏项目打印为:

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

以便可以在单独的twitch文件中列出共有项目。现在,在单独的分支文件(collection.item.html.twig)中,定义您的form_theme或进行必要的更改。

希望这能有所帮助。

相关内容

  • 没有找到相关文章

最新更新