我正在尝试使用FOSRestBundle的请求体转换器,但我当前的实现似乎不起作用。
我正在使用Symfony2,Propel,AngularJS(它将数据发送到服务器)
我做错了什么?
config.yml:
fos_rest:
routing_loader:
default_format: json
include_format: false
view:
view_response_listener: force
body_listener: true
param_fetcher_listener: true
body_converter:
enabled: true
sensio_framework_extra:
view: { annotations: false }
router: { annotations: true }
request: { converters: true }
方法:
/**
* @View()
* @Put("/documenttypes")
* @ParamConverter("documentType", converter="fos_rest.request_body")
*/
public function putAction(DocumentType $documentType)
{
print_r($documentType);
return $documentType;
}
结果我有空模型对象:
Backend\SettingsBundle\Model\DocumentType Object
(
[id:protected] =>
[name:protected] =>
....
)
要检查数据是否到达服务器,我修改方法:
public function putAction(DocumentType $documentType)
{
$content = $this->get("request")->getContent();
$documentType->fromArray(json_decode($content, true));
print_r($documentType);
return $documentType;
}
此方法适用于并填充模型字段:
Backend\SettingsBundle\Model\DocumentType Object
(
[id:protected] => 2
[name:protected] => 'Oferta'
....
)
答案 0 :(得分:1)
Symfony抱怨您需要启用fos_rest.converter.request_body
服务。
在fos_rest
中的config.yml
配置部分,您需要启用body_converter
功能:
fos_rest:
body_converter:
enabled: true
现在,如果您列出服务,您会注意到服务fos_rest.converter.request_body
已出现:
user@host:~/symfony-project$ php app/console debug:container | grep fos_rest.converter
fos_rest.converter.request_body FOS\RestBundle\Request\RequestBodyParamConverter