【发布时间】:2014-05-13 14:28:55
【问题描述】:
我正在使用 FOSRestBundle 在 Symfony 中构建一个 REST API。
在我的税务控制器中,我有:
private function processForm(Request $request, Tax $tax )
{
$form = $this->createForm(new TaxType(),$tax);
$req = $request->request->all();
$form->submit($req['tax']);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($tax);
$em->flush();
return $this->getTaxAction($tax->getId());
}
return array(
'form' => $form,
'request' => $request->request->all()
);
}
从 POST 和 PUT 函数调用此函数。
税种
class TaxType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('createDate')
->add('writeDate')
->add('name')
->add('amount')
->add('active')
->add('createUid')
->add('writeUid')
->add('company')
;
}
...
到目前为止它运行良好,但现在我在表格中添加了一些额外的列(以及税务实体的属性),例如:记录所属的公司,创建日期。这不会来自客户端,而是设置在服务器端。 如何添加例如 createData?
我试过了
$req['tax']['createDate'] = new \DateTime("now");
但我得到了:
{"code":400,
"message":"Validation Failed",
"errors":{"children":{"createDate":{"errors":["This value is not valid."],
"children":{"date":{"children":{"year":[],"month":[],"day":[]}},
"time":{"children":{"hour":[],"minute":[]}}}},
"writeDate":{"children":{"date":{"children":{"year":[],"month":[],"day":[]}},
"time":{"children":{"hour":[],"minute":[]}}}},"name":[],"amount":[],"active":[],"createUid":[],"writeUid":[],"company":[]}}}
来自实体 Tax.php
/**
* @var \DateTime
*/
private $createDate;
我猜我用正确的数据类型扩展了请求,但我得到了验证错误。
【问题讨论】:
标签: php validation symfony