2010-08-12 8 views
2

Je remarque que lorsque je lance une application zend framework à partir d'un serveur, il y a beaucoup d'effets secondaires. principal problème est l'endroit où je l'utilise comme urlsZend Framework: A partir d'un dossier (not /)

/auth/login 

je dois utiliser

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

des thats simples à corriger. mais quand j'utilise

$request->getRequestUri() 

pour une utilisation dans les redirections. par exemple après la connexion, je veux rediriger l'utilisateur vers la page précédente, il va au mauvais endroit. par exemple. ma racine de l'application est "http://localhost/app1", $request->getRequestUri() donnera /app1. quand j'essaie de rediriger, il va http://localhost/app1/app1. BTW, j'utilise Zend Server + IIS7 et mon application est configurée pour fonctionner à partir de l'URL indiquée ci-dessus. Peut-être que je devrais aller "/" à la place. Comment puis-je résoudre ça?

mise à jour

cela est dans ma classe Zend_Form

// (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); 
} 
+0

Comment ressemble votre redirection? Ce $ request-> getRequestUri() renvoie/app est un comportement attendu. S'il vous plaît poser votre question plus précise. –

+0

Postez le code lorsque vous redirigez! –

+0

@keyne @Benjamin, mis à jour mon poste –

Répondre

1

Si vous utilisez Zend_Application, vous pouvez l'utiliser dans votre fichier application.ini et vous n'aurez pas besoin de spécifier quoi que ce soit d'autre.

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

J'ai résolu ce problème avec l'aide de configs Apache. Dans le fichier \ usr \ local \ apache \ conf \ vhosts.conf trouvez un bloc avec votre site et changez de chemin et de dossier public.

+0

J'utilise iis maintenant, j'ai utilisé apache b4 tho. J'essaie ZS avec IIS, a entendu son –

2

Sur la base vous mise à jour:
Son l'prependBase -Possibilité dans le redirecteur ce que vous recherchez:

prependBase: indicateur booléen indiquant si préfixer l'URL de base ou non quand une URL relative est fourni

Ainsi, votre solution est:

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

plus rapide fonctionne comme un charme. tho je suis curieux une raison d'utiliser 'prependBase = true'? –