簡體   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