如何使用FOSRestBundle将通用URI前缀添加到控制器的所有路由? - php

我已经开始为使用Symfony开发的应用程序实现控制器。这是我在该任务上同时使用Symfony和PHP的首次尝试:我通常将Java与JAX-RS或Spring一起使用。我遵循了this tutorial。

我的测试类如下,并且URI /tags可以正常工作:

namespace AppBundle\Controller;

use FOS\RestBundle\Controller\Annotations as Rest;
use FOS\RestBundle\Controller\FOSRestController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;

class TagController extends FOSRestController
{
    /**
     * @Rest\Get("/tags")
     */
    public function getTagsAction(Request $request)
    {
        $data = ['getTagsAction' => 'not implemented yet'];
        $view = $this->view($data, Response::HTTP_OK);
        return $view;
    }
}

我希望仅使用注释,所有路由都自动以“ api”为前缀,因此客户端将使用/tags代替/api/tags

是否可以定义这样的通用前缀,该前缀会自动添加到所有功能的路由中?阅读the documentation时,我认为这是Docblock的补充:

/**
 * @Rest\Prefix("/api")
 */
class TagController extends FOSRestController
{
...
}

但是,另一个问题的this answer似乎对@Prefix注释赋予了不同的含义。

另外,某处是否有路由缓存?不会更改路线(更改为tag而不是tags)。我怀疑是否需要采取措施告知框架路线的更改或新控制器的添加。

[编辑] /var/cache中确实存在缓存。我认为控制台选择通过浏览器忽略的更改的原因是,该控制台采用开发环境,而通过浏览器的访问则通过app.php(而不是app_dev.php)进行。这可以通过以下事实得到证实:php bin/console debug:router --env=prod返回的路由集与php bin/console debug:router不同(已删除环境规范)。清除缓存:php bin/console cache:clear --env=prod后,对路由或方法的更改在浏览器中有效。

参考方案

您可以在类中使用路由注释,例如:

/**
 * @Route("/api")
 */
class TagController extends FOSRestController
{
    ...

Symfony 2在用户站点上动态添加字段以形成表单 - php

我正在研究调查包。目的是为用户提供一个功能全面的调查系统。我已经准备好一个后端,使您可以创建调查,添加问题(打开文本,单选按钮,复选框),是否需要提问,激活调查,生成令牌以及通过电子邮件将令牌发送到调查的链接。当然,我也有显示调查并保存答案的前端。现在,我想添加另一种可能性。带有答案(单选或复选框)和评论的问题。例如:你有一只狗吗?是没有如果用户选择是,则附…

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-如何获取类的成员函数列表? - php

如果我知道班级的名字。有没有办法知道类的成员函数列表? 参考方案 get_class_methods()是你的朋友

php ziparchive类源代码 - php

Improve this question 我如何获取ziparchive类本身的源代码。 参考方案 假设您在谈论PHP ZipArchive class:下载PHP source code并查找适当的文件。如果您希望源代码是PHP代码,您可能会感到失望,因为源代码是用C语言编写的。或者,也可以在PHP Github Development Reposito…

PHP getallheaders替代 - php

我正在尝试从服务器上的apache切换到nginx。唯一的问题是我在PHP脚本中使用的getallheaders()函数,该函数不适用于Nginx。我已经尝试过用户在getallheaders函数上的php站点上提供的注释,但这并不返回所有请求标头。请告诉我如何解决这个问题。我真的想切换到Nginx。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…