【发布时间】:2014-08-17 18:38:01
【问题描述】:
我有一个入口点控制器 (editAction),它根据路由变量 ({property}) 将显示不同的模板。我正在使用注释“@Template”。
我尝试了很多不同的设置,但都没有奏效。我得到的关闭是以下内容:
错误是“合并过滤器仅适用于数组或哈希”
public function editAction(Request $request, $property, $id)
{
// controller logic
$form = $this->createForm('ObjectEdit'.ucfirst($property), $object);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($product);
$em->flush();
return $this->redirect($this->generateUrl('acme-demo-dashboard-show'));
}
$response = $this->forward('AcmeDemoBundle:Dashboard:edit'. ucfirst($property),
array('form' => $form)
);
return $response;
}
/**
* Edit Title property for Object
* @Template
*/
public function editTitleAction($form)
{
return array('form' => $form->createView());
}
Yaml 路由:
acme-demo-dashboard-edit:
path: /dashboard/edit/{property}/{id}
defaults: { _controller: AcmeDemoBundle:Dashboard:edit }
requirements:
acme-demo-dashboard-edit-title:
path: /dashboard/forward/edit/title/{form}
defaults: { _controller: AcmeDemoBundle:Dashboard:editTitle }
编辑:有关错误的更多信息:
at twig_array_merge (null, array('_locale' => 'en'))
Edit2:editTitle 的 Twig 模板
{% extends "AcmeDemoBundle::layout.html.twig" %}
{% trans_default_domain "AcmeDemoBundle" %}
{% block AcmeBundleContent %}
<div class="col-sm-12">
<div class="alert alert-info">
{{ (ycRoute~'.intro') | trans }}
</div>
{{ form_start(form, { 'attr': {'class': 'form-horizontal', 'role': 'form'}}) }}
{% if form_errors(form) %}
<div class="alert alert-danger">
{{ form_errors(form) }}
</div>
{% endif %}
<div class="form-group {% if form_errors(form.title) %}has-error{% endif %}">
{{ form_label(form.title, '', {'label_attr': {'class': 'col-sm-3 control-label'}}) }}
<div class="col-sm-9">
{{ form_widget(form.title, { 'attr': {'class': 'form-control', 'placeholder': (ycRoute~'.titre') } }) }}
<p class="help-block">{{ form_errors(form.title) }}</p>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-3 col-sm-9">
{{ form_widget(form.save, { 'attr': {'class': 'btn btn-primary'} }) }}
</div>
</div>
<div class="row">
<div class="col-sm-9 col-sm-offset-3">
(<i class="fa fa-asterisk yc-fa-sm"></i>) {{ (ycRoute~'.champRequis')|trans }}
</div>
</div>
{{ form_end(form)}}
</div>
{% endblock AcmeBundleContent %}
【问题讨论】:
-
请发布用于编辑操作的树枝模板。
-
我已经发布了只呈现表单的 Twig 模板 :)
-
好的,所以我要求模板的原因是因为看起来问题出在您试图将 null 与数组合并的地方,而 twig 不喜欢这样。我没有看到模板中使用了任何合并过滤器,所以它可能在 layout.html.twig 中?
-
您好,您的评论给我带来了很好的方向:) 这确实是一个合并问题,来自 _route 和 _route_params 在转发时消失。 github.com/symfony/symfony/issues/5804
标签: symfony