Symfony3: как перевести FormErrors, добавленные в eventListeners? - PullRequest
0 голосов
/ 09 октября 2018

Допустим, у меня есть эта форма:

//...
class BananaType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('flavor');
        $builder->addEventListener(FormEvents::SUBMIT, function (FormEvent $event) {
            $form = $event->getForm();
            if ($form->get('flavor')->getData() === null) {
                $form->addError(new FormError('form.error.flavor_missing'));
            }
        }
    }
}

Несмотря на то, что сообщение form.error.flavor_missing определено как в messages.yml, так и validators.yml, оно не отображается.

Есть идеи, как это перевести?Я надеюсь, что мне не придется внедрять сервис translator в каждой форме, используя этот код, чтобы решить эту проблему.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Если вы откроете среду разработки, вы должны увидеть пропущенную строку.Взглянув на них, вы должны увидеть домен и файл ожидаемых сообщений.

0 голосов
/ 10 октября 2018

почему бы не использовать Ограничения проверки

use Symfony\Component\Validator\Constraints as Assert;

// ...

class BananaType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('flavor', YourType::class, array(
            'constraints' => array(
                new Assert\NotNull(), // or any other
            ),
        ));
    }
}

Вы можете использовать пользовательское сообщение

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder->add('flavor', YourType::class, array(
            'constraints' => array(
                new Assert\NotNull(array(
                    'message' => 'form.error.flavor_missing'
                )),
            ),
        ));
    }
...