繁体   English   中英

树枝不存在变量symfony

[英]Variable does not exist twig symfony

我有一个控制器可以做到这一点

  /**
 * @Route("/AjaxAddQuestionForm/{section}")
 * @ParamConverter("section", class="AppBundle:Section")
 */
public function ajaxAddQuestionFormAction(Request $request, $section)
{
    $question = new Question();
    $addQuestionForm = $this->createForm(new AddQuestionType(), $question);

    return $this->render('AppBundle:Form:ajaxAddQuestionForm.html.twig', array(
      'section' => $section,
      'addAjaxQuestionForm' => $addQuestionForm->createView(),
  ));
}

ajaxAddQuestionForm.html.twig文件看起来像这样

{% embed 'modal.html.twig' %}
{% block labelledby %}addnewquestion{% endblock %}
{% block modalId %}addnewquestion{% endblock %}

{% block modalHead %}
{{ 'client.modal.head'| trans }}
{% endblock %}
{% block modalBody %}
{{form_start(addAjaxQuestionForm)}}

<div>
  {{form_widget(addAjaxQuestionForm.section, {value: section.id})}}
</div>

<div class="form-group">
  {{form_label(addAjaxQuestionForm.name, null, {'label_attr': {'class': 'form-label'}}) }}
  <span class="help"></span>
  <div class="controls">
    {{form_widget(addAjaxQuestionForm.name, {'attr':{'class':'form-control'}})}}
  </div>
</div>
<div class="form-group">
  {{form_label(addAjaxQuestionForm.category, null, {'label_attr': {'class': 'form-label'}}) }}
  <span class="help"></span>
  <div class="controls">
    {{form_widget(addAjaxQuestionForm.category, {'attr':{'width':'100%'}})}}
  </div>
</div>
{% endblock %}
{% block modalFooter %}
<button class="btn btn-default" data-dismiss="modal" type="button">{{'client.form.cancel'| trans}}</button>
<input class="btn btn-primary create" type="submit" value="{{'client.form.add.client'| trans}}">
{{form_end(addAjaxQuestionForm)}}
{% endblock %}
{% endembed %}

最后我有一个看起来像这样的edit.html.twig

 <div aria-hidden="true" aria-labelledby="{% block labelledby %}{% endblock %}" class="modal fade" id="{% block modalId %}{% endblock %}" role="dialog" tabindex="-1">
<div class="modal-dialog">
  <div class="modal-content">
    <div class="modal-header">

      <button aria-hidden="true" class="close" data-dismiss="modal" type="button">&times;</button>
      <h4 class="modal-title" id="myModalLabel">{% block modalHead %}{% endblock %}</h4>

    </div>
    <div class="modal-body">
      {% block modalBody %}
      {% endblock %}
    </div>
    <div class="modal-footer">
      {% block modalFooter %}
      {% endblock %}
    </div>
  </div>
</div>
</div>

{% include 'AppBundle:Form:ajaxAddQuestionForm.html.twig' %}

现在我得到以下错误:

Variable "addAjaxQuestionForm" does not exist in src/AppBundle/Resources/views/Form/ajaxAddQuestionForm.html.twig at line 9 

知道我的代码有什么问题吗?

在您的edit.html.twig中 (假设addAjaxQuestionForm存在addAjaxQuestionForm变量),您需要将其传递给随附的树枝。

{% include 'AppBundle:Form:ajaxAddQuestionForm.html.twig' with {'addAjaxQuestionForm': addAjaxQuestionForm} %}

尝试使用

{{ render(controller('AppBundle:Section:ajaxAddQuestionFormAction',{'section':section})) }}

而不是包括,您必须将“ section”参数添加到ajaxAddQuestionFormAction。

如果您不向我们发布所有与问题部分有关的代码,我们将为您提供更多帮助。

希望对您有所帮助

您应该使用渲染控制器方法而不是包括

{{ render(controller(
        'AppBundle:Form:ajaxAddQuestionForm',
        { 'section': section }
    )) }}

在此处阅读有关此内容的更多信息: http : //symfony.com/doc/current/book/templating.html#embedding-controllers

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM