Создайте новые сущности в FormTypes, к которым обращается опция property_path - PullRequest
0 голосов
/ 28 июня 2019

Я нашел возможность доступа к данным сущности в FormType с опцией property_path.Пока PropertyAccessor находит соответствующее значение, следующий пример работает просто отлично.

class Tag
{
    use Knp\Translatable;

    // other properties
}

class TagTranslation
{
    use Knp\Translation;


    /** @ORM\Column(type="string") */
    private $name;
}

class TagType extends AbstractType
{
    // ...

    private function getAdminLocale(): string
    {
        return $this->session->get('admin_locale');
    }

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        // add other properties
        $builder->add('translations', TagTranslationType::class, [
            'property_path' => 'translations['.$this->getAdminLocale().']',
            'constraints' => new Valid(),
        ]);
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults(['data_class' => Tag::class]);
    }
}

Если PropertyAccessor не может найти что-либо в заданном property_path, это похоже на форму SymfonyКомпонент создаст новый пустой TagTranslation.Есть ли элегантный способ передать данные для строительства этого объекта или гидратировать его любым другим способом?Я попытался поэкспериментировать с empty_data безуспешно.Для работы Knp Translations объекту TagTranslation нужны как минимум значения для ->setLocale() и ->setTranslatable().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...