Php Symfony控制器:重定向、路由还是其他?

Php Symfony控制器:重定向、路由还是其他?,php,symfony,Php,Symfony,因此,我正在构建一个Symfony web应用程序 我有一个简单的控制器(DefaultController.php),如下所示: <?php namespace AppBundle\Controller; use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\H

因此,我正在构建一个Symfony web应用程序

我有一个简单的控制器(
DefaultController.php
),如下所示:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;

class DefaultController extends Controller
{
  /**
  * @Route("/", name="default")
  */
  public function defaultAction(){
    return $this->render('default/hello.html.twig', array(
      'name' => "hello"
    ));
  }
}

从建筑的角度来看,我这样做对吗?关于如何在Symfony中实现这一点,有人有什么建议吗?

您的思路是正确的。但如果您希望支持多种请求和响应格式(如JSON、XML),最好使用


它可以处理内容协商、实体序列化(FOSRest捆绑包使用它),还可以让您构建RESTful路由。

您走的是正确的道路。但如果您希望支持多种请求和响应格式(如JSON、XML),最好使用


它可以处理内容协商、实体序列化(FOSRest Bundle使用它)并让您构建RESTful路由。

如果您定义如下路由:

/**
 * @Route("/getUser", name="getUser")
 */
public function getUser(){
    //
}
然后此操作的URL将为
http://eamorr.com/getUser
。正如您所看到的,没有
/api
部分,这是因为您在任何地方都没有提到它

对于这种情况,您有两种解决方案

首先定义完整的路由,如

/**
 * @Route("/api/getUser", name="getUser")
 */
public function getUser(){
    //
}
第二:由于您希望所有
APIController
操作都包含此
/api
部分,因此可以通过为整个类定义“基本”路由来为所有路由定义前缀

/**
 * @Route("/api", name="getUser")
 */
 class APIController extends Controller
然后你就可以让你的行动路线保持原样


更多信息:

如果您定义以下路线:

/**
 * @Route("/getUser", name="getUser")
 */
public function getUser(){
    //
}
然后此操作的URL将为
http://eamorr.com/getUser
。正如您所看到的,没有
/api
部分,这是因为您在任何地方都没有提到它

对于这种情况,您有两种解决方案

首先定义完整的路由,如

/**
 * @Route("/api/getUser", name="getUser")
 */
public function getUser(){
    //
}
第二:由于您希望所有
APIController
操作都包含此
/api
部分,因此可以通过为整个类定义“基本”路由来为所有路由定义前缀

/**
 * @Route("/api", name="getUser")
 */
 class APIController extends Controller
然后你就可以让你的行动路线保持原样


更多信息:

OK。伟大的谢谢你的洞察力!好啊伟大的谢谢你的洞察力!非常有用。谢谢我考虑过FOSRestBundle,但我将只注释我的函数,并使用apidoc.js生成文档和沙盒。事实上,在决定是否真的适合我之前,我将在拉威尔尝试所有这些。我也需要oauth…我可以推荐。有关api文档,请参阅非常有用的。谢谢我考虑过FOSRestBundle,但我将只注释我的函数,并使用apidoc.js生成文档和沙盒。事实上,在决定是否真的适合我之前,我将在拉威尔尝试所有这些。我也需要oauth…我可以推荐。有关api文档,请参阅非常有用的