Динамическое поле ChoiceType теряет значение при отправке формы в Symfony 6Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Динамическое поле ChoiceType теряет значение при отправке формы в Symfony 6

Сообщение Anonymous »

У меня есть 2 поля, которые принимают строки:

Код: Выделить всё

    #[ORM\Column(type: 'string', length: 255)]
private ?string $pattern = null;

#[ORM\Column(name: 'sub_pattern', type: 'string', length: 255)]
private ?string $subPattern = null;
Моя форма:

Код: Выделить всё

->add('pattern', ChoiceType::class, [
'label' => 'contact.form.pattern.title',
'choices' => PatternEnum::getChoicesToString(),
'required' => true,
])
->add('subPattern', ChoiceType::class, [
'label' => 'contact.form.sub_pattern.title',
'required' => true,
])
PatternEnum::getChoicesToString() возвращает массив, в котором ключ и значение являются переводом ключа:

Код: Выделить всё

public static function getChoicesToString(): array
{
return array_combine(
array_map(fn ($case) => $case->value, self::cases()),
array_map(fn ($case) => $case->value, self::cases())
);
}
Когда я выбираю вариант из шаблона, значение из подшаблона меняется. Я использую Javascript, и это мой контроллер:

Код: Выделить всё

public function fetchSubMotifsByMotif(Request $request, TranslatorInterface $translator): JsonResponse
{
$jsonPattern = $request->getContent();
$pattern = json_decode($jsonPattern, true);

if (!$pattern) {
return new JsonResponse(['error' => 'Le motif est obligatoire'], Response::HTTP_BAD_REQUEST);
}

try {
$subPatterns = match ($pattern['patternValue']) {
PatternEnum::AFTER_SALES_SERVICE->value => SubPatternEnum::getByAfterSalesService(),
PatternEnum::DELIVERY_INFORMATION->value => SubPatternEnum::getByDepositInformation(),
PatternEnum::PRODUCT->value => SubPatternEnum::getByAvailableProduct(),
PatternEnum::ORDER_TRACKING->value => SubPatternEnum::getByOrderTracking(),
PatternEnum::OTHER_REQUESTS->value => SubPatternEnum::getByOtherRequests(),
PatternEnum::TECHNICAL_PROBLEMS->value => SubPatternEnum::getByTechnicalProblems(),
default => throw new \InvalidArgumentException(\sprintf('Valeur inconnue: %s',$pattern)),
};
} catch (\Exception $e) {
return new JsonResponse(['error' => $e->getMessage()], Response::HTTP_BAD_REQUEST);
}
$formattedSubPatterns = [];
foreach ($subPatterns as $key => $value) {
$formattedSubPatterns[] = [
'value' => $value,
'label' => $translator->trans($value)
];
}
return new JsonResponse([
'success' => true,
'data' => [
'subPatterns' => $formattedSubPatterns
],
]);
}
В DOM каждый параметр имеет правильное значение, ajax работает хорошо, но когда я отправляю значение subPattern, оно становится нулевым, я не знаю, как и почему, потому что в PRE_SUBMIT значение представляет собой правильную строку (например: contact.form.pattern.after_sales_service).


Подробнее здесь: https://stackoverflow.com/questions/792 ... -symfony-6
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»