Отображение данных json с компонентом Symfony 4 Form

Я пытался отобразить форму с данными json. Я не могу понять, что мне нужно сделать, чтобы форма имела несколько полей ввода с TextType? Одно значение json в одном поле ввода.

Я знаю, как просматривать массив json в ветке без формы компонента, но я хочу просматривать json с формой компонента Symfony 4.

Это json-массив

[{"name":"PHP","image":"php.png"},{"name":"java","image":"java.png"},{"name":"postgresql","image":"postgresql.png"},{"name":"JS","image":"js.png"}]

Это мой код:

Класс ProjectsController

class ProjectsController extends BaseAdminController {

  public function createEntityFormBuilder($entity, $view)
  {
    $formBuilder = parent::createEntityFormBuilder($entity, $view);

    $formBuilder
        ->add('title')
        ->add('description', TextareaType::class)
        ->add('technology', ProjectTechnologyType::class)
        ->add('type', ProjectType::class)
        ->add('url');

    return $formBuilder;
  }
}

Класс ProjectTechnologyType

class ProjectTechnologyType extends AbstractType {

  public function buildForm(FormBuilderInterface $builder, array $options)
  {
    $builder
        ->add('image', ProjectJsonType::class);

    $builder->get('image')
        ->addModelTransformer(new CallbackTransformer(
            function ($technologyAsArray) {
                return json_encode($technologyAsArray);
            },
            function ($technologyAsJson) {
                return json_decode($technologyAsJson);
            }
        ));
  }

  public function configureOptions(OptionsResolver $resolver)
  {
    $resolver->setDefaults(array(
        'data_class' => ProjectTechnology::class
    ));
  }
}

Класс ProjectJsonType

class ProjectJsonType extends AbstractType{

  public function configureOptions(OptionsResolver $resolver)
  {
    $resolver->setDefaults([]);
  }

  public function getParent()
  {
    return CollectionType::class;
  }
}

Веточка

{% block main %}
{% block entity_form %}
    {{ form_row(form.title) }}
    {{ form_row(form.description) }}
    {{ form_row(form.type) }}
    {{ form_row(form.technology) }}
    {{ form_row(form.url) }}
{% endblock entity_form %}
{% endblock %}

Ваш пост, вероятно, дублируется stackoverflow.com/questions/14500698/decoding-json-in-twig

thafirstone 05.03.2019 12:10

@thafirstone Я так не думаю. Это не имеет ничего общего с Twig, но с Form Transformers.

Stephan Vierkant 07.03.2019 17:21
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
2
2
619
0

Другие вопросы по теме