我正在使用fosRest包构建API。
我陷入困境的方法如下:
public function postUser(Request $request)
{
}
我想要使用User
实体而不是Request
来处理请求,但如果我正在接收params,不在User
类中,或者具有不同的名称< / p>
使用自定义对象处理此请求的最佳方法是什么,以及存储它的位置?
我希望这样做可以在IDE中进行代码自动提示。
我的想法是创建模型User
类,对此有用吗?
答案 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) { }