[英]Symfony2: Time-based Controller Action
是否可以在symfony2中的注释中进行基于时间的链接/控制器操作? 有一个开始和一个停止日期! 例如:
/**
*@Route("/mylink", start="14.10.2015" stop="20.12.2015", name="mylink", schemes= { "http" })
public function myLinkAction()
{
.....
}
您不能@Route
这种方式扩展@Route
,但是使用defaults
,我认为没有样板代码的最佳解决方案是控制器过滤器:
services.yml
services:
time_range_route_filter:
class: AppBundle\Services\TimeRangeRouteFilter
tags:
- { name: kernel.event_listener, event: kernel.controller, method: onFilterController }
DefaultController.php
class DefaultController
{
/**
* @Route("/", name="homepage", defaults={"start"="2015-01-01", "end"="2016-01-01"})
*/
public function indexAction()
{
}
}
TimeRangeRouteFilter.php
class TimeRangeRouteFilter
{
public function onFilterController(FilterControllerEvent $event) {
$request = $event->getRequest();
$attributes = $request->attributes;
$routeParams = $attributes->get('_route_params');
$end = $routeParams['end'];
$start = $routeParams['start'];
if(!/* in range */) {
throw new NotFoundHttpException();
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.