我想知道如何使用表格events獲得event的結果回傳路由search。目前,當我嘗試從eventto回傳時events,我丟失了所有允許我根據其bigcity和類別查找事件的資料。
有沒有辦法檢索這些資訊?
事件.html.twig
{% extends 'base.html.twig' %}
{% block main %}
<a href="{{ path('events') }}" >< Retour</a>
事件控制器.php
<?php
namespace App\Controller\Front;
use App\Entity\Event;
use App\Form\SearchType;
use App\Repository\UserRepository;
use App\Repository\EventRepository;
use App\Repository\BigCityRepository;
use App\Repository\CategoryRepository;
use App\Repository\LocationRepository;
use Doctrine\ORM\EntityManagerInterface;
use App\Repository\ParticipationRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Session\SessionInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class EventController extends AbstractController
{
#[Route('/search', name: 'search')]
public function search(
Request $request,
SessionInterface $sessionInterface,
EventRepository $eventRepository,
){
$searchFormData = $sessionInterface->get('searchFormData');
$form = $this->createForm(SearchType::class, ['data' => $searchFormData]);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$data = $form->getData();
$sessionInterface->set('searchFormData', $data);
$events = $eventRepository->findAll();
return $this->redirectToRoute("events", [
'bigcity'=> $form->get('bigcity')->getData()->getId(),
'category'=> $form->get('category')->getData()->getId(),
'events' => $events
]);
}
return $this->renderForm('front/search.html.twig', [
'form' => $form,
]);
}
#[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->comingEventsList(['category' => $category, 'address' => $location]);
return $this->render("front/events.html.twig", [
'events' => $events,
'category' => $category,
'bigcity' => $bigcity
]);
}
#[Route('/event/{id}', name: 'event', methods: ['GET'])]
public function event(
Event $event,
UserRepository $userRepository,
ParticipationRepository $participationRepository
){
if ($this->getUser()) {
$connected = $this->getUser();
$useremail = $connected->getUserIdentifier();
$user = $userRepository->findOneBy(['email' => $useremail]);
if ($participationRepository->findby(['participant' => $user, 'event' => $event])) {
$participation = $participationRepository->findby(['participant' => $user, 'event' => $event]);
return $this->render('front/event.html.twig', [
'event' => $event,
'participation' => $participation
]);
}}
return $this->render('front/event.html.twig', [
'event' => $event
]);
}
uj5u.com熱心網友回復:
每個事件都與一個類別和一個大城市相關,表單搜索表單只有這兩個欄位
所以,當你在show one event route時,你可以從當前的事件中知道什么是類別,什么是bigcity。
您可以像這樣在路徑中添加這兩個屬性 id:
<a href="{{ path('events', {'category': event.category.id, 'bigcity': event.bigCity.id}) }}">Retour</a>
或者您也可以使用“referer”,但這不會每次都有效,因為如果用戶顯示來自 borwser 歷史記錄或外部 url 的事件,或者如果他直接在瀏覽器 url 選項卡中鍵入 url
<a href="{{ app.request.headers.get('referer') }}">Rtour</a>
或者使用 javascript
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/521202.html
標籤:交响乐
