- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在使用 Symfony 2.2 和最新版本的 FOSRestBundle。因此,我设法使大部分操作都有效,但我传递 PUT 调用请求的 FormBuilder 似乎有问题。
我已经检查了请求对象,它来 self 的 Backbone.je 模型,因为它应该 (.save()) 但是在绑定(bind)到表单之后,实体返回只有导致 flush() 抛出错误的 id因为必填字段未填写。
Controller 中的 Action :
header('Access-Control-Allow-Methods: GET, POST, PUT, DELETE, OPTIONS ');
header('Allow GET, POST, PUT, DELETE, OPTIONS ');
header('Access-Control-Allow-Credentials: true');
header('Access-Control-Allow-Origin: *');
header('Access-Control-Allow-Headers: Content-Type, *');
use FOS\RestBundle\Controller\FOSRestController;
use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Routing\ClassResourceInterface;
use FOS\Rest\Util\Codes;
use Symfony\Component\HttpFoundation\Request;
use Greenthumbed\ApiBundle\Entity\Container;
use Greenthumbed\ApiBundle\Form\ContainerType;
class ContainerController extends FOSRestController implements ClassResourceInterface
{
/**
* Put action
* @var Request $request
* @var integer $id Id of the entity
* @return View|array
*/
public function putAction(Request $request, $id)
{
$entity = $this->getEntity($id);
$form = $this->createForm(new ContainerType(), $entity);
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($entity);
$em->flush();
return $this->view(null, Codes::HTTP_NO_CONTENT);
}
return array(
'form' => $form,
);
}
/**
* Get entity instance
* @var integer $id Id of the entity
* @return Container
*/
protected function getEntity($id)
{
$em = $this->getDoctrine()->getManager();
$entity = $em->getRepository('GreenthumbedApiBundle:Container')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Container entity');
}
return $entity;
}
调用的表单:
namespace Greenthumbed\ApiBundle\Form;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class ContainerType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name')
->add('description')
->add('isVisible')
->add('type')
->add('size')
->add('creationDate')
->add('userId')
;
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Greenthumbed\ApiBundle\Entity\Container',
'csrf_protection' => false,
));
}
public function getName()
{
return 'greenthumbed_apibundle_containertype';
}
}
到目前为止,我已经尝试了所有方法,但我对 Symfony 还很陌生,我不明白为什么 $entity 不包含请求收到的值。
仅供引用:我已经尝试手动执行此操作,例如使用请求的 ID 实例化容器类,并使用 setter 将值输入其中并且它工作得很好,我只是想像 Symfony 一样以正确的方式做事建议应该这样做。
非常感谢您。
最佳答案
尝试更改 putAction 中的以下行:
$form = $this->createForm(new ContainerType(), $entity);
到:
$form = $this->createForm(new ContainerType(), $entity, array('method' => 'PUT'));
关于php - Symfony2 FOSRestBundle PUT Action FORM 返回空结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16976515/
我正在尝试构建 symfony2 rest api,但我正在为 FOSRestBundle 苦苦挣扎 起初我可以制作“@View()”注释,因为它总是会说我的模板丢失,无论我使用什么配置选项我都会得到
对于使用 FOSRestBundle 的 Web 服务,我创建了一个防火墙来强制登录以访问应用程序。 我的问题是,当我通过 ajax 调用 API 时,我需要在用户未通过身份验证时获取错误代码 401
我可以使用@QueryParam()批注获取GET参数,但是看起来它仅适用于查询字符串数据:/user?id=123。 我宁愿像/user/123一样使用它。为此,我可能会使用@Get("/user/
我正在使用FOSRestBundle。我想返回用户信息,但数据信息较少......如何做到这一点?这是我当前的回复 { "id": 1, "user": { "id":
我正在尝试使用 Symfony2 和 FOSRestBundle 来构建 REST 框架,但失败得很惨。 我已完成以下操作: 在我的 deps 文件中: [FOSRest] git=git:/
我正在尝试在 FOSRestBundle 中添加自定义异常控件,但它似乎忽略了我的自定义消息(响应的状态代码正常)。 我有: throw new HttpException(404, "User {$
我使用 Symfony2.2 和 FOSRestBundle 我设置 #app/config/config/yml myapp_rest: resource: "@MyappRestBundl
我正在寻找一个简单、愚蠢的解决方案来强制所有symfony2 的content-type 到application/json fosrestbundle 中的 http 错误消息(如 MethodNo
上下文 我发现了很多关于使用 FOSRest 进行部分 API 响应的问题,所有答案都基于 JMS 序列化程序选项(排除、包含、组等)。它工作正常,但我尝试实现一些不那么“静态”的东西。 假设我有一个
我正在尝试将 FOSRestBundle 集成到我的应用程序中。 我只想在路由匹配时使用它,如 ^/api。 我真的不知道如何使用这个包,而且我认为文档非常糟糕。 (无意冒犯)。 fos_rest:
我在使用 FOSRestBundle 时遇到错误。 Fatal error: Class 'JMS\Serializer\SerializationContext' not found in /hom
我的 fos_rest 部分的配置: fos_rest: serializer: serialize_null: true view: view_res
有人可以清楚地解释应该如何使用 FOSRest 为 REST 请求配置路由吗?每个教程似乎都有不同的做法。 我的 Controller : all(); // returns arra
我是 Symfony (5.3) 的新手,想扩展 RequestBodyParamConverter (FOSRestBundle 3.0.5) 创建一个 REST api。使用 @ParamConv
我正在使用 Symfony2 和 FosRestBundle 为我们的系统开发一个 REST API。FosRestBundle 是一个非常好的工具,但它似乎有一个限制:只有属性(priviate、p
我正在尝试让我的 Controller 与参数 getter 一起工作。我做了文档中指定的所有说明。所以我有:配置fos_rest.yml: fos_rest: param_fetcher_lis
这是我的配置文件: // app/config/config.yml fos_rest: body_listener: array_normalizer: fos_rest.n
config.yml: twig: debug: %kernel.debug% strict_variables: %kernel.debug% exce
我有一个 symfony 应用程序,它提供 RESTful API(用于移动应用程序)并具有后端管理。 我可以通过facebook成功登录后端,但是我应该如何允许通过RESTful API登录? 最佳
我正在使用 symphony a fosrestbundle 开发一个 api。我还想在我的 Controller 中使用构造函数注入(inject),就像我总是注入(inject)一些 Entity
我是一名优秀的程序员,十分优秀!