Отображение данных json с помощью компонента Symfony 4 Form - PullRequest
0 голосов
/ 04 марта 2019

Я пытался отобразить форму с данными 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 %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...