我有一个问题,即将数据发布到Symfony到一个端点,该端点需要格式化为Symfony表单的数据。
端点使用Symfony表单验证发布的数据。通常,当我有一个带有树枝的渲染形式。关系字段将具有如下结构:
<select id="form_product" name="form[product]">
<option value="0" selected="selected">...</option>
<option value="1">A product</option>
<option value="2">Some other product</option>
<option value="3">Product</option>
<option value="4">Nice product</option>
<option value="5">Stupid product</option>
<option value="6">Interesting product</option>
</select>
现在我没有这个,我只有一个端点。
每当我想发布一条记录时,说&#34;好产品&#34;我可以发布一个包含[product] = 4形式的正文,并且正确处理关系。但我只知道我应该发布4,因为我检查了渲染的形式。
当我需要更新记录与产品的关系时也是如此,因为我不知道要发送什么,因为这些值与任何东西都没有关系,选项值只是一个增量值而不管记录身份或任何事情。
这通常是怎么做的?如何手动创建包含我选择的关系的帖子主体?
答案 0 :(得分:1)
如果您可以控制Symfony表单类,则可以使用choices选项预测value
属性:
$builder->add('product', ChoiceType::class, array(
'choices' => array(
'Nice product' => 'nice-product',
'NOT nice product' => 'not-nice-product'
),
));
事先了解此映射,然后您使用form[product]='nice-product'
提交POST。
注意:choices
选项也适用于EntityType form type。
答案 1 :(得分:0)
如果您使用的是REST端点,我假设您正在使用JavaScript,手机应用程序或类似工具构建Web应用程序。
在这种情况下,正常程序是存在一个端点来列出这个相关实体并知道它。
例如,在javascript Web应用程序中,我呈现了一个选择了这个关系实体的表单,在显示此字段之前,我调用了一个返回此实体的ID和标签的端点:
{
{“id”: 1, “label”: “value 1”},
{“id”: 2, “label”: “value 2”}
}
之后我们用这个值渲染字段,然后用户选择一个,这就是if if最终发送到你的端点。
我希望这可以帮到你