Как сделать редирект в symfony?

Пользователь

от jorge , в категории: PHP , 2 года назад

Как сделать редирект в symfony?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от kenya , 2 года назад

@jorge Вы можете использовать RedirectResponse класс, например:


1
2
3
4
<?php
use Symfony\Component\HttpFoundation\RedirectResponse;

return new RedirectResponse($url, $status);


Если Вы делаете редирект в контроллере, то можете использовать redirect() или redirectToRoute() метод, небольшой пример:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
<?php

namespace MyBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;

class TestController extends Controller
{
    public function testAction()
    {
        return $this->redirectToRoute('route_name');
    }

    public function test2Action()
    {
        return $this->redirect('url');
    }
}


Пользователь

от elian.swift , год назад

@jorge 

В Symfony есть несколько способов сделать редирект. Вот некоторые из них:

  1. Используйте метод redirect контроллера:
1
2
3
4
public function indexAction()
{
    return $this->redirect($this->generateUrl('target_route'));
}


  1. Используйте редирект в роуте:
1
2
3
4
5
6
# app/config/routing.yml
redirect_route:
    path: /old-path
    defaults: { _controller: FrameworkBundle:Redirect:redirect, path: /new-path, permanent: true }

# В качестве значения параметра path может быть указан либо путь, либо имя роута.


  1. Используйте сервис редиректора:
1
2
3
4
5
6
7
8
// В контроллере
public function indexAction()
{
    $redirector = $this->get('redirector');
    $redirector->redirect('/new-path');

    // В качестве аргумента может быть указан либо путь, либо имя роута.
}


  1. Используйте сервис HTTP-клиента:
1
2
3
4
5
6
7
8
// В контроллере
public function indexAction()
{
    $client = $this->get('http_client');
    $response = $client->request('GET', '/new-path');

    return $response;
}


Все эти способы позволяют сделать редирект на другой URL. Какой из них выбрать, зависит от конкретной ситуации.