不能擴展@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();
}
}
}
有什麼錯有_inside_控制器邏輯?沒有這樣的選擇。 – Dheeraj
你想做什麼?有一個只在特定時間有效的鏈接? –
是的,我把控制器中的邏輯與正常的時間差......但我認爲這將是很酷的處理時間,當鏈接處於活動狀態時,可以在註釋中處理 – Zwen2012