Я искал ответ почти две недели и наконец решил, что мне нужно обратиться за помощью. Я совершенно не знаком с PHP / Drupal, но унаследовал такой проект для обновления и поддержки. Проект работает на Drupal 8.3.7 и размещается в IIS 6.2.
По неизвестной причине ссылки в моих файлах html.twig возвращаются с нулевым base_url. Так например ...
<a href = "/home"> ... </a>
будет ссылаться на "null / home" ... После большого количества взломов и попыток выяснить, могу ли я вручную установить $ base_url (я знаю, что это не лучшая практика, но мне просто нужно было проверить, возможно ли это), я обнаружил два необычных поведения:
A. Если в связанном контроллере я создаю переменную $ temp_base_url и жестко закодирую значение "localhost" и попытаюсь поместить следующее в мой файл html.twig (где item.url = "/ home") ...
<a href = "http://{{temp_base_url}}{{item.url}}">http://{{temp_base_url}}{{item.url}}</a>
Текст между тегом привязки будет правильно отображаться как http: // локальный / домашний, в то время как фактическая ссылка направит вас на null / home.
B. С другой стороны, если я назначил $ temp_base_url равным «http: // localhost» и поместил следующий код ...
<a href = "{{temp_base_url}}{{item.url}}">{{temp_base_url}}{{item.url}}</a>
Текст между тегом привязки (ага) будет правильно отображаться как http: // локальный / домашний, в то время как фактическая ссылка теперь будет пытаться направить вас на http: // локальный / нуль / домашний.
Проблема не в глобальной переменной $ base_url, потому что, когда я проверяю это в Контроллере, $ base_url правильно устанавливает себя на "localhost", поэтому я подозреваю, что Symfony или что-то еще неправильно отображает маршруты (любые попытки использовать 'path' или 'url' также приводил к аналогичным проблемам с нулевым значением).
Итак, мой вопрос: откуда берутся эти нули? Как мне заставить IIS / Drupal выбрать соответствующий базовый URL-адрес для маршрутизации?






Вы можете использовать этот url('<front>')
{{ url('<front>') }}{{item.url}}