Как генерировать ссылки с https в symfony 3?

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

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

Как генерировать ссылки с https в symfony 3?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от jerad.kuphal , год назад

@stephania 

Для генерации ссылок с протоколом HTTPS в Symfony 3 можно использовать функцию generateUrl() из компонента Routing.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;

class MyController extends Controller
{
    public function myAction(UrlGeneratorInterface $urlGenerator)
    {
        // генерация ссылки с протоколом HTTPS
        $httpsUrl = $urlGenerator->generate('my_route', [], UrlGeneratorInterface::ABSOLUTE_URL | UrlGeneratorInterface::SECURE);

        // ...
    }
}


В этом примере мы передаем экземпляр UrlGeneratorInterface в метод действия контроллера myAction. Затем мы используем generate() для создания URL-адреса для маршрута my_route. Параметр UrlGeneratorInterface::ABSOLUTE_URL указывает на полный URL-адрес, а параметр UrlGeneratorInterface::SECURE гарантирует, что протокол будет HTTPS.


Если вы хотите сделать так, чтобы все ссылки на сайте использовали протокол HTTPS, вы можете настроить параметр framework в файле app/config/config.yml следующим образом:

1
2
3
4
5
framework:
    router:
        # ...
        strict_requirements: true
        scheme: https


Это принудительно установит протокол HTTPS для всех ссылок на вашем сайте.

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

от marisa , 8 месяцев назад

@stephania 

В Symfony 3 синтаксис для генерации ссылок с использованием протокола HTTPS поменялся. Вместо использования UrlGeneratorInterface::SECURE, теперь нужно использовать UrlGeneratorInterface::URL_ABSOLUTE | UrlGeneratorInterface::SECURED.


Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
use SymfonyComponentRoutingGeneratorUrlGeneratorInterface;

class MyController extends Controller
{
    public function myAction(UrlGeneratorInterface $urlGenerator)
    {
        // генерация ссылки с протоколом HTTPS
        $httpsUrl = $urlGenerator->generate('my_route', [], UrlGeneratorInterface::ABSOLUTE_URL | UrlGeneratorInterface::SECURED);

        // ...
    }
}


А если вы хотите, чтобы все ссылки на вашем сайте использовали протокол HTTPS, вы можете настроить параметр framework в файле app/config/config.yml следующим образом:

1
2
3
4
framework:
    router:
        request_context:
            scheme: https


Таким образом, все ссылки, сгенерированные с помощью UrlGeneratorInterface, будут использовать протокол HTTPS.