Symfony2在对象中存储请求

时间:2016-10-15 14:53:52

标签: php symfony

我正在使用fosRest包构建API。

我陷入困境的方法如下:

public function postUser(Request $request)
{
}

我想要使用User实体而不是Request来处理请求,但如果我正在接收params,不在User类中,或者具有不同的名称< / p>

使用自定义对象处理此请求的最佳方法是什么,以及存储它的位置?

我希望这样做可以在IDE中进行代码自动提示。

我的想法是创建模型User类,对此有用吗?

1 个答案:

答案 0 :(得分:1)

尝试使用@ParamConverter中的SensioFrameworkExtraBundle注释将$user参数注入请求数据中基于的控制器

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use Appbundle\Entity\User;

class UserController
{
    /** 
     * @ParamConverter("user", class="AppBundle:User") 
     */
    public function postUserAction(User $user)
    {
        // ...
    }
}

(以下是SensionFrameworkExtraBundle的symfony文档,特别是@ParamConverter annotation

通过use - 您的User类,并在控制器参数中键入它,您的IDE应该能够收集更多关于它的信息。当然,不同的IDE需要不同的方法,但这会让你有一个强大的起始位置。

从文档中,您可能希望提供一些更多详细信息,以确定框架应该如何尝试将参数转换为对象:

  

DoctrineConverter选项

     

@ParamConverter或(@Entity)注释可以使用许多选项来控制行为:   id:如果配置了id选项并匹配路由参数,则转换器将通过主键找到。一个简单的id示例,如下:

/**
 * @Route("/blog/{post_id}")
 * @ParamConverter("post", options={"id" = "post_id"})
  */
public function showPostAction(Post $post)
{
}