& Quot; по умолчанию & Quot; группа проверки не преобразована в последовательность групп во встроенном объекте

У меня есть следующий тип формы:

class ProjectStep1Type extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('client', new ClientType(), [
'label' => 'Client',
]);

// More fields

// Save as draft button
$builder->add('saveDraft', 'submit', [
'label' => 'Save as draft',
]);
// Actual submit button
$builder->add('validate', 'submit', [
'label' => 'Validate',
]);
}

public function configureOptions(OptionsResolver $resolver)
{
$validationGroups = function(FormInterface $form) {
if ($form->get('saveDraft')->isClicked()) {

return ['Default', 'Draft'];
}

return ['Default', 'Step1'];
};

$resolver->setDefaults([
'data_class'        => 'AppBundle\Entity\Project',
'validation_groups' => $validationGroups,
]);
}
}

Файл yaml для (частичной) проверки выглядит следующим образом:

AppBundle\Entity\Client:
group_sequence:
- Client
- TypesOK
properties:
label:
- NotNull:
groups: [Step1]
- Type: string
- Length:
max: 255
groups: [TypesOK]
vatCode:
- NotNull:
groups: [Step1]
- Type:
type: string
contact:
- NotNull: ~
- Type: AppBundle\Entity\Contact
- Valid: ~
address:
- Type: AppBundle\Entity\Address
- Valid: ~
sector:
- NotNull:
groups: [Step1]
- Type: AppBundle\Entity\CompanySector

AppBundle\Entity\Project:
group_sequence:
- Project
- TypesOK
properties:
client:
- NotNull:
message: form.project.client.error.not_null
- Type: AppBundle\Entity\Client
- Valid: ~
status:
- NotNull: ~
- Type: string
- Choice:
choices: [DRAFT_1, DRAFT_2, DRAFT_3, SENT, REJECTED, DELETED]
groups: [TypesOK]

Теперь к проблеме: когда я проверяю форму, Project сущность правильно проверена, один раз для каждой группы в последовательности, т.е. [Project, TypesOK, Draft],

Client субъект, однако, проверяется с использованием Default группа проверки. Если проверка прошла успешно с Default, группы Client а также TypesOK не называются.

Однако, если проверка не пройдена, эти группы называются! И сообщения об ошибках, которые я бы предпочел не показывать, отображаются вместе с ошибками, возникающими при проверке с помощью Default,

Я ожидал, что Client никогда не проверяется с помощью Default, но это вместо этого Default группа будет преобразована в последовательность группы [Client, TypesOK], даже если он проходит через Valid ограничение.

Я что-то пропустил?

РЕДАКТИРОВАТЬ:

Я сделал некоторый прогресс по этому поводу. Проблема проверки у меня возникает только когда я редактирую форму. Когда я редактирую форму, прокси-класс наследует Client используется вместо обычного Client учебный класс.

Нормальная черта для Доктрины.

Однако фабрика метаданных валидатора не использует групповую последовательность родительского элемента. Client, Он выбирает свои ограничения, но не это свойство.

Кажется, эта проблема довольно близка к этот другой вопрос однако разрешение там не работает для меня.

Теперь мне кажется, что проблема достаточно ясна, однако я понятия не имею, как мне решить эту проблему должным образом.

2

Решение

Первое, что я увидел, было то, что в вашей группе проверки AppBundle\Entity\Project клиент определяется как ItalyBundle\Entity\Client но в группе проверки для клиента AppBundle\Entity\Client используется.

0

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

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

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