it-roy-ru.com

Как вы получаете HTTP Host с Laravel 5

Я пытаюсь получить имя хоста из HTTP-запроса, используя Laravel 5, включая поддомен (например, dev.site.com). Я не могу найти ничего об этом в документах , но я думаю, что это должно быть довольно просто. Кто-нибудь знает, как это сделать?

18
Sean the Bean

Хорошие новости! Документация Request немного отсутствует (нужный метод унаследован от класса Request Symfony ), но оказывается, что на самом деле это довольно просто. Если вы используете метод контроллера, вы можете внедрить объект запроса, который имеет метод getHttpHost. Это обеспечивает именно то, что я искал:

public function anyMyRoute(Request $request) {
    $Host = $request->getHttpHost(); // returns dev.site.com
}

Из любого места в вашем коде вы можете получить доступ к объекту запроса с помощью вспомогательной функции request , так что это будет выглядеть так:

$Host = request()->getHttpHost(); // returns dev.site.com

Если вы хотите включить в URL часть http/https, вы можете просто использовать вместо этого метод getSchemeAndHttpHost:

$Host = $request->getSchemeAndHttpHost(); // returns https://dev.site.com

Потребовалось немного покопаться в источнике, чтобы найти это, поэтому я надеюсь, что это поможет!

43
Sean the Bean

Есть два пути, поэтому будьте осторожны:

<?php

    $Host = request()->getHttpHost(); // With port if there is. Eg: mydomain.com:81

    $Host = request()->getHost(); // Only hostname Eg: mydomain.com
2
insign

Вы можете использовать request()->url();

Также вы можете сбросить полную request()->headers();

И посмотрите, полезны ли эти данные для вас.

0
Vivek Pandey

ларавелла 5.6 и выше

request()->getSchemeAndHttpHost()

Пример использования в клинке: 

{{ request()->getSchemeAndHttpHost() }}
0
chebaby