как получить базовый URL-адрес сайта?

Мой сайт находится на http: //drupal8.local/. Как получить часть drupal8.local этого URL?

Url::fromRoute('<'current'>') или base_path() возвращает путь к URL-адресу пути; Например, для http: //drupal8.local/a/b/c/d /e /f , они возвращают '/a/b/c/d/e/f', когда мне просто нужно получить 'drupal8.local' ,

Как я могу получить эту часть URL?

8 uri
20 голосов | спросил Jasodeep Chatterjee 1 J0000006Europe/Moscow 2016, 12:25:04

3 ответа


39

Вы можете получить имя хоста, «drupal8.local», непосредственно из getHost() запрос:

$host = \Drupal::request()->getHost();
ответил Clive 1 J0000006Europe/Moscow 2016, 12:29:08
2

Есть несколько предупреждений о прямом доступе к объекту запроса таким образом в \ Drupal :: request:

* Note: The use of this wrapper in particular is especially discouraged. Most * code should not need to access the request directly. Doing so means it * will only function when handling an HTTP request, and will require special * modification or wrapping when run from a command line tool, from certain * queue processors, or from automated tests. * * If code must access the request, it is considerably better to register * an object with the Service Container and give it a setRequest() method * that is configured to run when the service is created. That way, the * correct request object can always be provided by the container and the * service can still be unit tested.

В любой контроллер формы, расширяющий \Drupal\Core\Form\FormBase, автоматически вводится эта зависимость, и к ней можно получить доступ, используя:

$this->getRequest()->getSchemeAndHttpHost()

Я думаю (но не проверял), что обычный контроллер страницы, расширяющий \Drupal\Core\Controller\ControllerBase, может предоставить услугу request_stack, переопределив \Drupal\Core\Controller\ControllerBase::create, а затем установите свойство $request в конструкторе. Это хорошо описано для форм, и тот же процесс должен применяться для диспетчеров страниц: https://www.drupal.org/docs/8/api/services-and-dependency-injection/dependency-injection-for-a-form .

ответил Shaun Dychko 4 Maypm17 2017, 16:44:02
0

Принимая во внимание предупреждения « о прямом доступе к объекту запроса таким образом в \ Drupal :: request », о котором упоминалось Shaun Dychko , возможно, хороший вариант для получения имя хоста получает его от глобальной переменной $ base_url , с помощью php function parse_url :

global $base_url;
$base_url_parts = parse_url($base_url);
$host = $base_url_parts['host'];
ответил camilo.escobar 17 PMpTue, 17 Apr 2018 19:18:47 +030018Tuesday 2018, 19:18:47

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132