我已经开始为使用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类源代码 - phpImprove 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。 参考方案 您仍然可以使用它,但是您必须像这里一样重新定义…