簡體   English   中英

生成的Symfony2控制器和FOSRestBundle控制器之間有什么區別?

[英]What is the difference between generated Symfony2 controller and FOSRestBundle controller?

我對這個問題感到困惑,如果有人可以給我一個具體例子的解釋,我將非常感激。 我使用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,
    );
}

它們都是控制器,您應該只使用一個來完成相同的任務。

默認的symfony控制器只是一個具有便捷方法的類,可輕松訪問最常用的東西(例如,創建表單,重定向等)。 您不必擴展此控制器,它只是給您一些“附加”。

FOSRestController擴展了Symfony控制器,並在使用FOSRestBundle時添加了一些簡便的方法。 同樣,您不必使用它,它只是為您簡化了代碼。

話雖如此,控制器並沒有做任何特別的事情。 您可以完全跳過它們並使用您自己的東西,很多人還希望不從基本控制器擴展,因為這暗示了Service Locator反模式。

要獲得有關FOSRestBundle可以做什么的答案,您應該閱讀他們的文檔。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM