0

我对这个问题感到困惑,如果有人能用具体的例子给我一个解释,我会很感激。我用 Symfony 生成了一个 CRUD 控制器,还为 REST 实现了 FOSRestBundle 控制器。他们都返回相同的数据,我想知道,有什么区别,一个可以做什么而另一个不能?一旦我了解 Symfony2 的做事方式,我想在我正在创建和扩展的原型中只坚持一个。这是 Symfony2 的 CRUD 代码:

/**
 * Lists all User entities.
 *
 * @Route("/", name="user")
 * @Method("GET")
 * @Template()
 */
public function indexAction()
{
    $em = $this->getDoctrine()->getManager();

    $entities = $em->getRepository('SomethingWebServicesBundle:User')->findAll();

    return array(
        'entities' => $entities,
    );
}

通过更改此方法名称,我得到了一个 FOSRestController(配置正确)

// "get_users"     [GET] /users

public function getUsersAction()
{
    $em = $this->getDoctrine()->getManager();

    $entities = $em->getRepository('SomethingWebServicesBundle:Users')->findAll();

    return array(
        'entities' => $entities,
    );
}
4

1 回答 1

1

它们都是控制器,你应该只使用一个来完成相同的任务。

默认的 symfony 控制器只是一个类,它带有方便的方法来轻松访问最常用的东西(例如,创建表单、重定向等)。你不必扩展这个控制器,它只是给你一些“额外的东西”。

FOSRestController 扩展了 Symfony 控制器,并在使用 FOSRestBundle 时添加了一些方便的方法。同样,您不必使用它,它只是为您简化了代码。

话虽如此,控制器并没有做任何特别的事情。您可以完全跳过它们并使用自己的东西,很多人也更喜欢不从基本控制器扩展,因为它暗示了服务定位器反模式。

要获得有关 FOSRestBundle 可以做什么的答案,您应该阅读他们的文档

于 2013-12-07T13:18:52.660 回答