只是想知道是否可以只使用 symfony 表单处理的某些部分。例如,当通过创建 CRUD 操作时generate:doctrine:crud
我在控制器(用于处理创建用户 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
nor a Form
.
所以现在从上面的代码我知道 Symfony 已经以某种方式根据以下方式将数据填充到实体中:UserType
定义,但是我如何在没有Form
or a Request
而只是一些数据数组?
这样我就不必自己设置属性了。
Edit:验证对于填充实体来说没有问题,我正在使用validator
稍后在持久化数据之前填充实体。
对我来说同样重要的是通过related entity ids
将自动处理/加载。
您仍然可以使用 Form 组件,但不要使用handleRequest
,你应该直接使用submit
.
如果你好奇,你应该在 github 上查找这两个代码handleRequest https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/Form.php#L486-L491 and 它实际上做了什么 https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/NativeRequestHandler.php#L39;你会看到它只是做了一些验证,从Request
, and 然后使用submit method https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Form/NativeRequestHandler.php#L94表格的。
所以,基本上,您只能使用submit
方法与您想要使用的数据。它甚至可以验证您的实体。 :)
UPDATE
对于创建/更新相关实体的关注,如果您的关系具有持久/更新级联,则它应该从自身推出,而无需您做任何事情,除了主实体上的持久+刷新之外。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)