Я пытаюсь получить имя хоста из HTTP-запроса, используя Laravel 5, включая субдомен (например, dev.site.com
). Я не могу найти ничего об этом в документах, но я бы подумал, что это должно быть довольно просто. Кто-нибудь знает, как это сделать?
Как получить хост HTTP с Laravel 5
Ответ 1
Хорошие новости! Оказывается, это на самом деле довольно просто, хотя документации по Laravel Request немного не хватает (нужный мне метод унаследован от класса Symfony Request
). Если вы находитесь в методе контроллера, вы можете внедрить объект запроса, который имеет метод 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
Потребовалось немного покопаться в источнике, чтобы найти это, поэтому я надеюсь, что это поможет!
Ответ 2
Есть два пути, поэтому будьте осторожны:
<?php
$host = request()->getHttpHost(); // With port if there is. Eg: mydomain.com:81
$host = request()->getHost(); // Only hostname Eg: mydomain.com
Ответ 3
Ларавелла 5.6 и выше
request()->getSchemeAndHttpHost()
Пример использования в клинке:
{{ request()->getSchemeAndHttpHost() }}
Ответ 4
Вы можете использовать request()->url();
Также вы можете сбросить полный request()->headers();
И посмотрите, полезны ли эти данные для вас.