Kontynuujemy poznawanie popularnego frameworka PHP Symfony. Do dzieła!
Ok, rzućmy okiem na kontroler z lekcji poprzedniej:
namespace App\Controller;
//(...)
class HelloController extends AbstractController
{
//(...)
#[Route('/hello', name: 'app_hello', methods: ['GET', 'HEAD'])]
public function index(): Response
{
return $this->render('hello/index.html.twig', [
'controller_name' => 'HelloController',
]);
}
//(...)
}
Teraz pomyślmy, jakie sposoby daje nam metoda index, aby do niej przekierować ruch z innej metody. Po pierwsze, daje nam route.
Piszemy przekierowanie do route:
#[Route('/redirect_one', name: 'app_redirect_one', methods: ['GET', 'HEAD'])]
public function redirect_one(): Response
{
return $this->redirect('/hello');
}
Po drugie, daje nam name (odpowiednik ->name w Laravelu). I też możemy tam przekierować ruch:
#[Route('/redirect_two', name: 'app_redirect_two', methods: ['GET', 'HEAD'])]
public function redirect_two(): Response
{
return $this->redirectToRoute('app_hello');
}
Po trzecie, mamy namespace, nazwę kontrolera oraz metody i skoro framework pod spodem jakoś forwarduje ruch do tego kontrolera, to my też możemy:
#[Route('/redirect_three', name: 'app_redirect_three', methods: ['GET', 'HEAD'])]
public function redirect_three(): Response
{
return $this->forward('App\Controller\HelloController::index');
}
Warto zwrócić uwagę, że w trzecim wypadku de facto nie mamy przekierowania, tylko forwardowanie do metody kontrolera. Zobaczmy na adres:
http://127.0.0.1:8000/redirect_three
Ok, więcej Symfony w następnych lekcjach.