dqwh1218 2019-03-04 15:03
浏览 78

使用Symfony 4 Form组件显示json数据

I've been trying to display form with data json. I can't understand what I need to do that form have several input fields with TextType? One value json in one input field.

I know how view json array in twig without component form but I want view json with Symfony 4 component form.

This is json array

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

This is my code:

Class 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;
  }
}

Class 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
    ));
  }
}

Class ProjectJsonType

class ProjectJsonType extends AbstractType{

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

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

Twig

{% 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 %}
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 lammps拉伸应力应变曲线分析
    • ¥15 C++ 头文件/宏冲突问题解决
    • ¥15 用comsol模拟大气湍流通过底部加热(温度不同)的腔体
    • ¥50 安卓adb backup备份子用户应用数据失败
    • ¥20 有人能用聚类分析帮我分析一下文本内容嘛
    • ¥15 请问Lammps做复合材料拉伸模拟,应力应变曲线问题
    • ¥30 python代码,帮调试,帮帮忙吧
    • ¥15 #MATLAB仿真#车辆换道路径规划
    • ¥15 java 操作 elasticsearch 8.1 实现 索引的重建
    • ¥15 数据可视化Python