2016-06-27 17 views
0

Ich habe versucht, einen Weg zu finden, um Basis-URL von gemischten (http + CLI) -Anwendung zu erhalten. CLI wird verwendet, um einige regelmäßige Benachrichtigungen zu senden, in denen App-URL verwendet wird.Zend Framework 2 Get BaseUrl von der Konsole Controller

Ich versuchte dies, aber es gibt mir nur "http://"

print_r($this->getEvent()->getApplication()->getServiceManager()->get('ViewHelperManager')->get('ServerUrl')->__invoke()); 

Antwort

1

Diese für Anfragen Konsole funktioniert nicht. Die serverUrl wird aus dem HTTP-Anforderungsobjekt (Zend\Http\Request) extrahiert, da eine Konsolenanforderung in ein Konsolenanforderungsobjekt (Zend\Console\Request) eingeschlossen ist. Diese Informationen sind für solche Anforderungen nicht verfügbar.

Sie können eine URL in einer globalen Konfiguration oder einer Konstante definieren (hardcodieren) und stattdessen verwenden.

Zum Beispiel eine host.config.local Datei auf Ihrem application/config/autoload Ordner hinzufügen:

<?php 

return array(
    'hostname' => 'http://www.example.com' 
); 

Jetzt können Sie Ihren Hostnamen von Ihrem Service-Manager erhalten:

$config = $serviceManager->get('config'); 
$hostName = $config['hostname']; 
+0

Nein, ich laufe diesen Code in der Konsole-Controller. Es gibt mir "http //" – bksi

+0

@ bksi Eine Konsolenanforderung ist keine http-Anfrage. Wenn Sie also eine Konsolenanfrage machen, gibt es keine "serverUrl". – Wilt

+0

In der Tat. Also zurück zu meiner Frage: Wie kann ich die App-URL vom Konsolen-Controller bekommen? – bksi