使用指南http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html我正在尝试自定义错误消息,但我遇到了问题:未定义变量errors
,因为我们没有验证实体而我们没有调用$this->get('validator')->validate($entity)
。
{% block field_errors %}
{% spaceless %}
{# errors is undefined here #}
{% endspaceless %}
{% endblock field_errors %}
这是示例代码:
public function uploadAction()
{
$document = new Document();
$form = $this->createFormBuilder($document)
->add('name')
->add('file')
->getForm()
;
if ($this->getRequest()->getMethod() === 'POST') {
$form->bindRequest($this->getRequest());
if ($form->isValid()) {
$em = $this->getDoctrine()->getEntityManager();
$em->persist($document);
$em->flush();
$this->redirect($this->generateUrl('...'));
}
}
// Variable 'errors' is not assigned
return array('form' => $form->createView());
}
答案 0 :(得分:1)
不确定我理解。如果您正在关注该示例,那么$ document上有验证规则,将由$ form-> isValid()进行测试。 {{form_errors(form)}}应该输出任何错误。
如果它只是一个模板定制问题,那么您需要在尝试处理之前测试是否存在错误:
{% block field_errors %}
{% spaceless %}
{% if errors|length > 0 %}
<span style="color:red">
{% for error in errors %}
{{ error.messageTemplate|trans(error.messageParameters, 'validators') }}<br />
{% endfor %}
{% endif %}
{% endspaceless %}
{% endblock field_errors %}