【问题标题】:API REST php7 symfony 3.4 - Databind json to formsAPI REST php7 symfony 3.4 - 将 json 数据绑定到表单
【发布时间】:2018-03-24 04:43:50
【问题描述】:

我找到了这个:"How to process nested json with FOSRestBundle and Symfony forms",但接受的回复是:"making an unmapped form and binding data manually using a form event"

play 中,您可以写your own data binder,但对于大多数格式(xmljson,...),您可以根据Content-Type http 标头(@987654332 @ 不是强制性的 here 让它工作),有一些众所周知的数据绑定器可用(来自 Spring 或任何地方)。 A product can have a list of items,即便如此,you can bind the request body to a form automatically

PHP/Symfony 还没有学习如何解决这个问题? 如果我在 php + symfonmy 中创建 API REST,我需要编写某种“解析器”,例如 this? 有人可以分享帖子的链接或解决此问题的示例吗?

PD:我使用 play 示例是因为我不是经验丰富的 Web 开发人员(PHP 较少),所以把它当作我的 mcve。

提前致谢。

【问题讨论】:

    标签: php json symfony symfony-forms databinder


    【解决方案1】:

    要解决这个问题,请确保表单上所有具有关系的字段都被明确定义:

    $builder->add('field_simple')
            ->add('field_entity')
    ...
    

    上面的代码将不起作用,因为字段“field_entity”将被视为另一个简单字段,您必须定义实体的所有字段或至少定义感兴趣的字段,例如:

    $builder->add('field_simple')
            ->add('field_entity', EntityType::class, array(
                'class' => CustomEntity::class,
                ...
            ))
    ...
    

    最好的问候...

    【讨论】:

      【解决方案2】:

      根据我的经验,您可以通过两种方式实现:

      1. 将 JSON 反序列化为实体
      2. 按照您的建议使用表单处理请求

      在我的项目中,我总是使用第二种方法,因为它很容易从数据库加载的实体中更新实体并处理数据验证。

      我给你一个旧版本的链接,但或多或​​少保持不变knp university

      希望对你有帮助

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-06
      • 2016-06-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多