在我的Symfony项目中,我创建了一个名为start的表“event”和datatime字段。在twig中,我希望过滤和显示即将发生的事件。这样已经过去的事件就可以看到了。目前,我使用{% if event.start > date() %}。它可以隐藏几天前发生的事件。我也想隐藏今天已经发生的事件,但目前它不工作,当今天的事件的时间已经过去。如何隐藏时间已过的事件?
{% if event.start > date() %}
jbose2ul1#
最好在存储库中创建一个函数,然后在控制器中调用它,而不使用findAll和hide事件。
// EventRepository public function eventsList() { return $this->createQueryBuilder('e') ->andWhere('e.date >= :today') ->setParameter('today', new \DateTime()) ->orderBy('e.id', 'DESC') ->getQuery() ->getResult() ; }
tzdcorbm2#
解决方案如下:
{% if event.start > 'now' %}
nkoocmlb3#
这里有一个更好的解决方案(我精确地说,地址是给事件,地址有一个“bigcity”注册,这就是为什么我使用LocationRepository):EventController.php
#[Route('/events', name: 'events')] public function events( Request $request, EventRepository $eventRepository, CategoryRepository $categoryRepository, BigCityRepository $bigcityRepository, LocationRepository $locationRepository ){ $category = $categoryRepository->findOneById($request->query->get('category')); $bigcity = $bigcityRepository->findOneById($request->query->get('bigcity')); $location = $locationRepository->findAll($request->query->get('location.bigcity')); $events = $eventRepository->findBy(['category' => $category, 'address' => $location]); return $this->render("front/events.html.twig", [ 'events' => $events, 'category' => $category, 'bigcity' => $bigcity ]); }
3条答案
按热度按时间jbose2ul1#
最好在存储库中创建一个函数,然后在控制器中调用它,而不使用findAll和hide事件。
tzdcorbm2#
解决方案如下:
{% if event.start > 'now' %}
,它将考虑(今天的)日期和(当前的)时间。nkoocmlb3#
这里有一个更好的解决方案(我精确地说,地址是给事件,地址有一个“bigcity”注册,这就是为什么我使用LocationRepository):
EventController.php