Symfony 3 — Форма не добавляет «has-error» класс, когда произошла ошибка в VichImageType и пользовательское ограничение

Проблемный вид:

ошибка

Код проблемы:

введите описание изображения здесь

Форма:

    $builder->add('title', Type\TextType::class, [
'label_attr' => ['class' => 'required label-required'],
]);
$builder->add('isPublished');
$builder->add('imageFile', VichImageType::class, [
'label_attr'     => ['class' => 'required label-required'],
'allow_delete'   => false,
]);
$builder->add('alt', Type\TextType::class, [
'label_attr' => ['class' => 'required label-required'],
]);

Вопрос:

Кто-нибудь может сказать мне, почему has-error не добавляется в 3-е поле формы? Чтобы генерировать ошибки, title поле использует @Assert\NotBlank() и «Файл изображения» использует мое пользовательское ограничение:

FileNotEmpty учебный класс:

<?php

namespace Notimeo\CoreBundle\Validator\Constraints;

use Symfony\Component\Validator\Constraint;

/**
* @Annotation
* @Target("CLASS")
*/
class FileNotEmpty extends Constraint
{
/**
* @var string
*/
public $message = 'This field cannot be empty.';

/**
* @var array
*/
public $fields = [];

/**
* @return string
*/
public function validatedBy()
{
return get_class($this).'Validator';
}

/**
* @return string
*/
public function getTargets()
{
return self::CLASS_CONSTRAINT;
}
}

FileNotEmptyValidator учебный класс:

<?php

namespace Notimeo\CoreBundle\Validator\Constraints;

use Symfony\Component\Validator\Constraint;
use Symfony\Component\Validator\ConstraintValidator;

/**
* Class FileNotEmptyValidator
*
* @package Notimeo\CoreBundle
*/
class FileNotEmptyValidator extends ConstraintValidator
{
/**
* @param mixed      $protocol
* @param Constraint $constraint
*/
public function validate($protocol, Constraint $constraint)
{
/* @var $constraint FileNotEmpty */
foreach($constraint->fields as $field) {
$method1 = 'get'.ucfirst($field);
$method2 = $method1.'File';

$value1 = call_user_func([$protocol, $method1]);
$value2 = call_user_func([$protocol, $method2]);

if(empty($value1) && empty($value2)) {
$this->context->buildViolation($constraint->message)
->atPath($field.'File')
->addViolation();
}
}
}
}

Используя новейшие Symfony 3 а также EasyAdminBundle генерировать эту форму. Что вызывает эту проблему?

0

Решение

Недавно мы внесли некоторые изменения, связанные с этим. Увидеть: https://github.com/javiereguiluz/EasyAdminBundle/commit/3405a7a1029762365a08d38d59765197836c9fcb

Можете ли вы проверить, используете ли вы версию пакета, которая включает эти изменения? Спасибо!

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]