2 Stimmen

Zend Framework: Aus einem Ordner (nicht /)

Ich bemerke, dass, wenn ich eine Zend-Framework-App von einem Server ausführen, gibt es eine Menge von Seiteneffekten. Hauptproblem ist, wo ich Urls wie verwenden

/auth/login

Ich muss Folgendes verwenden

$this->baseUrl('/auth/login');

das ist einfach zu beheben. aber wenn ich

$request->getRequestUri()

für die Verwendung in Weiterleitungen. z.B. nach dem Login, möchte ich den Benutzer zurück auf die vorherige Seite weiterleiten, geht es an die falsche Stelle. z.B. meine App Root ist " http://localhost/app1 ", $request->getRequestUri() wird geben /app1 . wenn ich versuche, zurück zu leiten, geht es zu http://localhost/app1/app1 . btw, ich bin mit Zend Server + IIS7 und meine app ist so konfiguriert, dass von der URL oben angegeben ausgeführt. vielleicht ich shld sein, gehen Sie zu "/" statt. wie kann ich dies lösen?

Update

dies ist in meiner Zend_Form Klasse

// (Zend_Form) Login.php init()
$req = Zend_Controller_Front::getInstance()->getRequest();
$returnUrl = $req->getParam('returnUrl', $req->getRequestUri());
$this->addElement('hidden', 'returnUrl', array(
    'value' => $returnUrl
));

// AuthController after login
$returnUrl = urldecode($form->getElement('returnUrl')->getValue());
if (!empty($returnUrl)) {
    $this->_helper->getHelper('Redirector')->setGotoUrl($returnUrl);
}

2voto

Benjamin Cremer Punkte 4802

Basierend auf Ihrem Update:
Es ist die prependBase -Option im Redirector, wonach Sie suchen:

prependBase: boolesches Flag, das angibt, ob die Basis-URL vorangestellt werden soll, wenn eine relative URL angegeben wird oder nicht

Ihre Lösung ist also:

$this->_helper->getHelper('Redirector')->setGotoUrl($returnUrl, array('prependBase' => false));

1voto

Elzo Valugi Punkte 25592

Wenn man Zend_Application verwendet, kann man dies in der application.ini verwenden, und muss nichts anderes angeben.

resources.frontController.baseUrl = "/your/public/path/"

0voto

Alex Pliutau Punkte 20530

Ich habe dieses Problem mit Hilfe der Apache-Konfigurationen gelöst. In der Datei \usr\local\apache\conf\vhosts.conf finden Sie einen Block mit Ihrer Website und ändern Sie Wege und öffentlichen Ordner.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X