0

私はこの質問について混乱しています.誰かが具体的な例を挙げて説明してくれれば幸いです. Symfony で CRUD コントローラーを生成し、REST 用の FOSRestBundle コントローラーも実装しました。どちらも同じデータを返しますが、違いは何ですか?また、一方ができないことは何ですか? 私が作成しているプロトタイプのこの時点で 1 つだけに固執し、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

どちらもコントローラであり、同じタスクには 1 つだけを使用する必要があります。

デフォルトの symfony コントローラーは、最も一般的に必要なもの (例えば、フォームの作成、リダイレクトなど) に簡単にアクセスできる便利なメソッドを持つ単なるクラスです。このコントローラーを拡張する必要はありません。単に「おまけ」を提供するだけです。

FOSRestController は Symfony コントローラーを拡張し、FOSRestBundle を使用する際にいくつかの便利なメソッドを追加します。繰り返しますが、これを使用する必要はありません。コードが単純化されるだけです。

そうは言っても、コントローラーは特別なことは何もしません。それらを完全にスキップして、代わりに独自のものを使用することもできます。また、多くの人は、Service Locator のアンチパターンを意味するため、ベース コントローラーから拡張しないことを好みます。

FOSRestBundle で何ができるかについての回答を得るには、ドキュメントを読む必要があります。

于 2013-12-07T13:18:52.660 に答える