gpt4 book ai didi

php - 在没有表单/请求的情况下从数据数组填充实体

转载 作者:行者123 更新时间:2023-12-04 12:52:33 24 4
gpt4 key购买 nike

只是想知道是否可以只使用 symfony 表单处理的某些部分。例如,当通过 generate:doctrine:crud 创建 CRUD 操作时我在 Controller (用于处理创建用户 POST 请求)中得到如下内容:

$entity = new User();
$form = $this->createForm(new UserType(), $entity,
array(
'action' => $this->generateUrl('user_create'),
'method' => 'POST',
));
$form->handleRequest($request);
//Here I have a filled Entity

但我想要的是将它放在一个更可重用的解决方案中。目前我的业务逻辑在一个名为 UserModel 的服务中.在这里我也想要 create创建、验证和持久化新实体的方法。坚韧UserModel也应该可以通过控制台从一些命令脚本中调用,所以我可能不会总是有 Request也不是 Form .

现在从上面的代码我知道 Symfony 已经根据 UserType 以某种方式将数据填充到实体中定义,但我怎么能在没有 Form 的情况下手动执行此操作呢?或 Request而只是一些数据数组?
这样我就不必自己设置属性。

编辑:验证对于填充实体没有问题,我使用的是 validator稍后在持久化数据之前填充实体。
对我来说同样重要的是传递的 related entity ids将自动处理/加载。

最佳答案

你仍然可以使用 Form 组件,但是不要使用 handleRequest,你应该直接使用 submit

如果你很好奇,你应该在 github 上查找 handleRequest 的代码和 what it actually does ;你会看到它只是做了一些验证,从 Request 中获取数据,然后 then uses the submit method的形式。

因此,基本上,您只能对要使用的数据使用 submit 方法。它甚至可以验证您的实体。 :)

更新

关于创建/更新相关实体的问题,如果你的关系有持久化/更新级联,它应该从自身推出而不需要你做任何事情,除了在你的主要实体上持久化+刷新。

关于php - 在没有表单/请求的情况下从数据数组填充实体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23005809/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com