Zend Framework $this->baseUrl() gibt immer die aktuelle Seite :( warum
check-out dieser website www.fltdata.com. Aus irgendeinem Grund ist der home-link, egal, auf welcher Seite Sie gehen auf statt auf die home-Seite verweist auf die aktuelle Seite. Es funktioniert gut auf meinem localhost, aber seine online-Verhalten wie diese. Der href-Wert der home-link ist nur : $this->baseUrl()
Was läuft hier falsch..
=== EDIT===
Nun habe ich einen Helfer, die ist wie folgt:
class Zend_View_Helper_BaseUrl
{
protected $_baseUrl;
function __construct()
{
$fc = Zend_Controller_Front::getInstance();
$this->_baseUrl = $fc->getBaseUrl();
}
function baseUrl()
{
return $this->_baseUrl;
}
}
Und das ist glaube ich das was aufgerufen werden, wenn ich den Aufruf $this->baseUrl. Könnte dies das problem sein - aber es funktioniert okay in meinem localhost und nicht online, so muss irgendeine Art von Konfigurations-Problem - wo soll ich suchen?
InformationsquelleAutor Ali | 2009-08-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Es ist schwer zu sagen, was falsch läuft hier ohne zu wissen, mehr details über Ihre ZF-setup und e.h. die url-rewriting-setup. Die Logik hinter
Zend_Controller_Request_Http::getBaseUrl()
- dies ist, wo Ihr Anruf zuZend_View_Helper_BaseUrl::baseUrl()
wird beproxied, wenn keinbaseUrl
explizit festgelegt ist, in den front-controller - ist sehr Komplex und beinhaltet 4 verschiedene server-Variablen (und einige mehr in den Prozess der Ermittlung des aktuellen request-URI).Ist die einfachste Sache zu überwinden dieses problem würde sich vielleicht um die
baseUrl
(relativ zum server-root) auf der front-Controllers im eigenen bootstrap. Wenn Sie mit der neuenZend_Application
-bootstrapping-Sie müssen nur hinzufügenIhrer Konfiguration.
BEARBEITEN
Ihre Helfer mehr oder weniger ähnelt dem ursprünglichen
baseUrl
-Helfer im Lieferumfang von ZF. Das original auch proxies zuZend_Controller_Front::getBaseUrl()
. Welche version von ZF verwenden Sie? Gibt es einen Grund, warum Sie nicht verwenden die mitgeliefertenbaseUrl
-Helfer?Haben Sie versucht, die
baseUrl
in Ihrem bootstrapping explizit?Eigentlich war ich nur nach einem tutorial und der Website ein bisschen aufbauen aus, dass - ich glaube nicht, ich werde die baseUrl in meiner bootstrap-Datei überhaupt irgendwo
Haben Sie versucht, setzen der baseUrl explizit? Was ist das Ergebnis? Haben Sie versucht, mit dem versendet baseUrl-helper? Was ist das Ergebnis?
Dieser arbeitete für mich: stackoverflow.com/questions/12866578/...
InformationsquelleAutor Stefan Gehrig
Normalerweise verwende ich ein configuration-Objekt für die Basis-url ein, und definieren Sie es an der index.php
in public/index.php
in die configs/application.ini habe ich diese Produktion unter Abschnitt
Diese Weise, wenn ich jemals brauchen, um die Verwendung einer anderen Basis-url in der Entwicklung konnte ich nur noch ein diiferent variable für baseHttp ich persönlich denke, wenn Sie möchten, eine der baseurl nicht verworren, es ist ein einfacher Ansatz, als das umwickeln in seiner eigenen Klasse. Manchmal OOP ist viel zu viel OOP. Plus es würde machen ein Installationsprogramm, die einfacher zu verwalten. Man könnte sogar die $_SERVER-variable, um die Hostnamen und wickeln Sie es mit http://
InformationsquelleAutor
Zend Framework ist immer die Rückgabe der aktuellen Seite, weil Sie nicht mit einem nachgestellten Schrägstrich nach dem Aufruf von $this->baseUrl();.
Das Problem zu beheben, fügen Sie einen abschließenden Schrägstrich nach dem Aufruf von $this->baseUrl(); aus Ihrer Sicht so:
Der Richtige Weg
oder
Weglassen der trailing slash Ergebnisse in einem link auf die Seite, die Sie gerade betrachten.
Der Falsche Weg
InformationsquelleAutor Floyd
Ich hatte gerade ein ähnliches problem bei der Verwendung von $this->baseUrl in meinen Augen. Ich fand mit dieser würde mir die url der aktuellen Seite:
baseUrl; ?>">
http://www.yourwebaddress.com/current-page
und diese mir geben würde, die real baseurl unabhängig von der aktuellen Seite (beachte den slash an das Ende der url)
baseUrl; ?>/">
http://www.yourwebaddress.com/
InformationsquelleAutor Arianne