Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 25-06-2007 20:10:26

mohamed
Membre
Date d'inscription: 22-06-2007
Messages: 16

[ZF version 1 RC2]Problème URL

Bonjour,
j'ai remarqué que si je fesais une redirection vers une autre action l'url ne change pas, y'a t'il un moen de remédier à ca?
Autrement dis: Si je fais $this->_forward("index","index"); je veux que ça s'affiche dans l'URL /index/index et non pas l'ancienne adresse. $this->_redirect() me sort une erreur de cannot send header, et d'après ce que j'ai lu, le pb vient d'une femeture de balise php ou d'un espace.

Donc je voulais savoir, qu'est ce que je dois fermer(controlleur, index.php.....) et qui ceux ne devront pa fermer une balise php.
Merci

Dernière modification par mohamed (25-06-2007 21:36:25)

Hors ligne

 

#2 25-06-2007 22:48:14

fred wolf
Administrateur
Lieu: Bordeaux
Date d'inscription: 09-04-2007
Messages: 96

Re: [ZF version 1 RC2]Problème URL

Bonjour,

Je ne ferme jamais les balises php, ça se fait tout seul, comme ça pas de problème de blanc ou autre après le code php.

Je crois que tu peux utiliser un action helper dont la doc est là :

http://framework.zend.com/manual/en/zen … ockhelpers

paragraphe : 7.8.4.2. Redirector

A+

fred

Hors ligne

 

#3 25-06-2007 23:43:35

mohamed
Membre
Date d'inscription: 22-06-2007
Messages: 16

Re: [ZF version 1 RC2]Problème URL

Non, en fait je me suis dis que peut etre fallait que je définissait les routes comme le tutau de philippe

$router = new Zend_Controller_Router_Rewrite();

$cmtRoute = new Zend_Controller_Router_Route(
    "comment/:action/:comment",
    array(  "comment"=>null,
            "controller"=>"comment",
            "action"=>"display"
    )
);
$router->addRoute("comment",$cmtRoute);
$controller->setBaseUrl(BASE_URL);

$controller->setRouter($router);

Bein je l'ai jamais utlisé. Est ce que _redirect nécéssite ça. Je ne définie pas un router et pourtant ca fonctionne_route.
Est ce que c'est nécéssaire? si non, alors quel est son avantge?

Hors ligne

 

#4 26-06-2007 09:08:12

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [ZF version 1 RC2]Problème URL

Bonjour,

Le problème du redirect ne vient pas forcément d'une fermeture de balise PHP ou d'un espace avant : tu as cette erreur quand tu as déjà envoyé du texte au navigateur avant de faire ton redirect.

Explicitons : quand php envoie une page, il commence par envoyer les headers HTTP (les cookies, le content-type, et diverses infos sur le serveur). Ensuite il commence à envoyer la page elle même (<html>....</html>).

un $this->_redirect est une redirection qui utilise les headers HTTP. Donc si tu as déjà envoyé du texte à ton navigateur, c'est trop tard, il ne peut plus faire son redirect.

Bref, il faut traquer dans ton code un echo qui traine ou effectivement un espace ou un saut de ligne avant ton <?php...

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#5 26-06-2007 21:58:50

mohamed
Membre
Date d'inscription: 22-06-2007
Messages: 16

Re: [ZF version 1 RC2]Problème URL

Bon j'ai retrouvé le pb.
C'est que j'ai pas aimé le fait d'insérer le header et le footer dans mes vues, donc je l'ai insére dans mon fichier index.php et là il y'a un pb avec la redirection. Quelqu'un saurait comment remédier à ce problème, on ne va pas s'amuser à inclure une partie qui se répète tout le temps comme ca comme meme.

Hors ligne

 

#6 26-06-2007 23:30:20

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Re: [ZF version 1 RC2]Problème URL

Salut,
Oui, effectivement, j'ai remarqué ça, il y'a un problème dans ZendFramework, c'est un problème vaiment génant, mais voilà, personnellement pour remédier à ce problème j'utilise ob_start() et ob_end_flush();

Pour inclure du html dans ton index.php avec le lancement du framework, c'est comme si t'as fait un echo et là ça va générer une entête http et quand le framework sera lancé, il va de même essayer d'écrire dans le header avec ta fonction _redirect vue qu'elle utilise la fonction header("") de php.

Donc voilà  ce que je te conseille:
<?php ob_start();?>
Code HTML, ou meme php avec echo, n'importe quoi loool
<?php
Le baratin du framework................................
ob_end_flush();?>

Hors ligne

 

#7 27-06-2007 09:28:52

philippe
Administrateur
Lieu: Grenoble
Date d'inscription: 01-03-2007
Messages: 1624

Re: [ZF version 1 RC2]Problème URL

Il y a une autre solution plus élégante, mais un peu plus compliquée. On peut sous classer Zend_View et modifier la fonction _run() ou la fonction render() pour insérer les headers et footers.

A+, Philippe


twitter : @plv ; kitpages.fr : Création de sites internet à Grenoble et Paris

Hors ligne

 

#8 27-06-2007 16:47:50

verboz
Membre
Lieu: France, Lille
Date d'inscription: 26-06-2007
Messages: 24
Site web

Re: [ZF version 1 RC2]Problème URL

Salut philippe,
C'est très bien ce forum,  vu en plus que tu bossait avec le framework depuis ses début, moi je n'ai travailler qu'avec la version 0.2.0 et la 0.7.0.
Bon, moi je parlais des pbs dont parlait mohamed, les erreurs du style "Cannot send Header", avec le ob_start() et ob_end_flush().
Tu peux faire ce que tu veux, des echo, du code html n'importe où, tout ce que tu veux quoi sans se soucier du pbs du "Cannot send header".

Cordialement Verboz

Hors ligne

 

#9 28-06-2007 04:58:38

mohamed
Membre
Date d'inscription: 22-06-2007
Messages: 16

Re: [ZF version 1 RC2]Problème URL

Salu merci verboz et philipe pour votre aide, c'est bon problème réglé avec ce que m'a dis verboz, mais je crois que ta solution philipe n'est pas aussi flexible, je veux modifier avec facilité le template et non pas en changeant le coeur du framework.

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages