Meu site está em http: //drupal8.local/ . Como obtenho a parte drupal8.local desse URL?
Url::fromRoute('<'current'>')
ou base_path()
retorna o caminho do URL; Por exemplo, para http: //drupal8.local/a/b/c/d/e/f , eles retornam ' /a/b/c/d/e/f'
quando eu só preciso obter 'drupal8.local'
.
Como posso obter essa parte do URL?
Respostas:
Você pode obter o nome do host "drupal8.local" diretamente da
getHost()
solicitação:Em alguns casos, você também pode querer obter o esquema, fx
https://drupal8.local
:fonte
\Drupal::request()->getSchemeAndHttpHost()
retornaráhttp://drupal8.local
.Url::fromRoute('<front>', [], ['absolute' => TRUE]);
Existem alguns avisos sobre como acessar diretamente o objeto de solicitação dessa maneira em
\Drupal::request
:Qualquer controlador de formulário estendendo
\Drupal\Core\Form\FormBase
automaticamente tem essa dependência injetada e pode ser acessada usando:Eu acho (mas não testei) que um controlador de página comum estendendo
\Drupal\Core\Controller\ControllerBase
poderia fornecer orequest_stack
serviço substituindo a\Drupal\Core\Controller\ControllerBase::create
função e definindo uma$request
propriedade no construtor. Isso é muito bem descrito para formulários, e o mesmo processo deve ser aplicado aos controladores de página: https://www.drupal.org/docs/8/api/services-and-dependency-injection/dependency-injection-for-a- formulário .fonte
Levando em conta os " avisos sobre o acesso direto ao objeto request dessa maneira em \ Drupal :: request " que Shaun Dychko mencionou, talvez uma boa opção para obter o nome do host seja obtê-lo da variável global $ base_url , com a ajuda do php função parse_url :
fonte
Se você quiser fazer isso com injeção de dependência e um serviço, poderá usar o RequestStack :
E defina-o assim:
E depois declare assim:
fonte