Mi sitio está en http: //drupal8.local/ . ¿Cómo obtengo la parte drupal8.local de esa URL?
Url::fromRoute('<'current'>')
o base_path()
devuelve la ruta parth de la URL; Por ejemplo, para http: //drupal8.local/a/b/c/d/e/f , devuelven ' /a/b/c/d/e/f'
cuando solo necesito obtener 'drupal8.local'
.
¿Cómo puedo obtener esa parte de la URL?
Respuestas:
Puede obtener el nombre de host, "drupal8.local", directamente desde la
getHost()
solicitud:En algunos casos, es posible que también desee obtener el esquema, fx
https://drupal8.local
:fuente
\Drupal::request()->getSchemeAndHttpHost()
volveremoshttp://drupal8.local
.Url::fromRoute('<front>', [], ['absolute' => TRUE]);
Hay algunas advertencias sobre el acceso directo al objeto de solicitud de esta manera en
\Drupal::request
:Cualquier controlador de formulario que se extienda
\Drupal\Core\Form\FormBase
automáticamente tiene esta dependencia inyectada, y se puede acceder usando:Creo (pero no he probado) que una extensión de controlador de página normal
\Drupal\Core\Controller\ControllerBase
podría proporcionar elrequest_stack
servicio al anular la\Drupal\Core\Controller\ControllerBase::create
función y luego establecer una$request
propiedad en el constructor. Esto se describe muy bien para los formularios, y el mismo proceso debería aplicarse para los controladores de página: https://www.drupal.org/docs/8/api/services-and-dependency-injection/dependency-injection-for-a- formar .fuente
Teniendo en cuenta las " advertencias sobre el acceso directo al objeto de solicitud de esta manera en \ Drupal :: request " que mencionó Shaun Dychko , quizás una buena opción para obtener el nombre de host es obtenerlo de la variable global $ base_url , con la ayuda de php función parse_url :
fuente
Si desea hacer esto con la inyección de dependencia y un servicio, puede usar RequestStack :
Y definirlo así:
Y luego declararlo así:
fuente