2015-10-14 54 views
0

是否有可能在註釋中的symfony2中創建基於時間的鏈接/控制器操作?隨着開始和stopdate!? 例如:Symfony2:基於時間的控制器操作

/** 
    *@Route("/mylink", start="14.10.2015" stop="20.12.2015", name="mylink", schemes= { "http" }) 
    public function myLinkAction() 
    { 
    ..... 
    } 
+0

有什麼錯有_inside_控制器邏輯?沒有這樣的選擇。 – Dheeraj

+0

你想做什麼?有一個只在特定時間有效的鏈接? –

+0

是的,我把控制器中的邏輯與正常的時間差......但我認爲這將是很酷的處理時間,當鏈接處於活動狀態時,可以在註釋中處理 – Zwen2012

回答

0

不能擴展@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(); 
     } 
    } 
}