繁体   English   中英

Symfony2:基于时间的控制器操作

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM