Настройка сообщения об ошибке при загрузке файла - PullRequest
3 голосов
/ 27 марта 2012

Использование руководства 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());
}

1 Ответ

1 голос
/ 28 марта 2012

Не уверен, что понимаю. Если вы следуете примеру, то в $ 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 %}
...