Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 23-04-2008 17:13:58

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Passer des informations de pages en pages

Bonjour,

Je saisis sur une première page un formulaire correspondant à des informations d'entete.
Je saisis sur une deuxième page un tableau de lignes.
A la validation de ma deuxième page, je dois enregistrer les informations d'entente et les lignes dans la bdd.
Je me demandais quelle était la meilleur façon de garder les données saisies en entête ?
(Tout en étant capable de gérer une éventuelle déconnexion, ou une navigation qui ne correspond pas à l'enchainement normal de saisie)
Je pensais au départ faire une transaction (ça c'est des habitudes des applications lourdes wink), visiblement ce n'est pas possible de gérer une même transaction sur plusieurs pages avec zf.
Du coup de pensais à stocker les informations d'entête dans le registre, ou alors a les passer en paramètre à la deuxième page qui se chargerait de tout enregistrer à la validation finale.
Qu'en pensez vous ?

Hors ligne

 

#2 23-04-2008 18:25:08

ndesaleux
Membre
Date d'inscription: 16-04-2007
Messages: 196
Site web

Re: Passer des informations de pages en pages

Tu peux :
1 - Enregistrer les infos en session
2 - Enregistrer les infos dans les cookies
3 - Enregistrer les infos en BDD avec un flag
4 - Enregistrer les infos dans un fichier
...

les registres ne sont valable qu'au niveau de la page, elle ne seront pas passées automatiquement dans la page d'après.

Pour ce qui est de passer les infos en param, il ne faut pas oublié les limites de taille de $_GET

Hors ligne

 

#3 23-04-2008 18:39:16

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: Passer des informations de pages en pages

Merci pour ta réponse.
Concernant le registre, je ne crois pas me tromper en disant que les données qui y sont stockées sont accessibles pendant toute la session.
http://framework.zend.com/manual/fr/zend.registry.html

Dernière modification par bertra (23-04-2008 18:40:29)

Hors ligne

 

#4 23-04-2008 18:53:45

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

Re: Passer des informations de pages en pages

ndesaleux a raison, les registres ne sont persistants que sur la durée d'une page. A mon avis il vaut mieux que tu cherches du coté des 4 pistes qu'il t'a envoyées.
Regarde en particulier les sessions à mon avis...

A+, Philippe


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

Hors ligne

 

#5 23-04-2008 23:23:58

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: Passer des informations de pages en pages

A bon...Ca sert a quoi alors Zend_Registry ?
Je comprend plus la... sad

Hors ligne

 

#6 24-04-2008 01:48:18

apsy
Membre
Date d'inscription: 25-06-2007
Messages: 50

Re: Passer des informations de pages en pages

Le Zend_Registry permet d'accéder à des objets ou autres variables n'importe ou dans ton application durant la durée d'éxecution de ton script seulement. Pour la persistance de données, il te faut passer par les sessions.

Dernière modification par apsy (24-04-2008 01:49:05)

Hors ligne

 

#7 24-04-2008 07:30:50

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: Passer des informations de pages en pages

Le Zend_Registry permet d'accéder à des objets ou autres variables n'importe ou dans ton application durant la durée d'éxecution de ton script seulement. Pour la persistance de données, il te faut passer par les sessions.

Ha bon ? j'ai toujours cru que Zend_Registry utilisait des sessions. Mais pourtant, si je fais Zend_Registry::set('acl',$acl); j'ai accès à 'acl' durant toute la session non ?

Hors ligne

 

#8 24-04-2008 08:37:39

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: Passer des informations de pages en pages

Oui, pareil pour moi.
Quelle est a différence entre session et exécution du script ?
Et puis ndesaleux dit bien que les infos stockées dans le registre ne sont pas passées de page en page ?

Dernière modification par bertra (24-04-2008 08:39:41)

Hors ligne

 

#9 24-04-2008 09:45:22

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

Re: Passer des informations de pages en pages

En gros, une valeur dans un registre est équivalent à une variable globale. Elle est disponible pendant toute la durée de l'exécution d'une page PHP.

La session dure plus longtemps, si l'internaute regarde 10 pages sur votre site, les données en sessions sont conservées pendant ces 10 pages. (c'est pas du ZF, c'est du PHP classique).
http://www.php.net/manual/fr/intro.session.php

A+, Philippe


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

Hors ligne

 

#10 24-04-2008 10:01:09

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: Passer des informations de pages en pages

Bon, moi lorsque je stocke lors de l'exécution d'une page quelque chose dans le registre, je peux y accédez lors de l'exécution d'une autre page (donc dans ma session)
Donc comprend toujours pas....
Suis têtu hein ? smile

Hors ligne

 

#11 24-04-2008 10:39:54

nORKy
Membre
Date d'inscription: 06-03-2008
Messages: 1098

Re: Passer des informations de pages en pages

Impossible, tu y accèdes parce que tu as enregistré l'objet dans le file d'exécution de script.


----
Gruiiik !

Hors ligne

 

#12 24-04-2008 10:44:36

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

Re: Passer des informations de pages en pages

je suis même allé jusqu'à tester pour vérifier...

testRegistryPage1.php

Code:

<?php
set_include_path(
  ".;".
  "C:/users/levan/_boulot/phplib/ZendFramework-1.5.1/library;".
  get_include_path()
);

require_once 'Zend/Loader.php';
Zend_Loader::loadClass("Zend_Registry");
Zend_Registry::set("valeur",12);
echo "valeur in registry :".Zend_Registry::get("valeur",null);
?>
<br/>
<a href="testRegistryPage2.php">goto page 2</a>

et testRegistryPage2.php

Code:

<?php
set_include_path(
  ".;".
  "C:/users/levan/_boulot/phplib/ZendFramework-1.5.1/library;".
  get_include_path()
);

require_once 'Zend/Loader.php';
Zend_Loader::loadClass("Zend_Registry");
echo "valeur in registry :".Zend_Registry::get("valeur");
?>
<br/>
<a href="testRegistryPage1.php">goto page 1</a>

tu as juste à corriger le include_path. Quand tu vas sur la page 2, tu as une belle exception disant que valeur n'existe pas dans la registry...

A+, Philippe


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

Hors ligne

 

#13 24-04-2008 11:35:33

whitespirit
Membre
Date d'inscription: 25-01-2008
Messages: 393

Re: Passer des informations de pages en pages

Ha d'accord ! Ben là vous venez de répondre à un post que j'avais l'intention de poster. Je perds à un moment mon objet acl, alors qu'il se trouve dans le Registry.

Donc, il faut utiliser à la place les zend_session, c'est bien ça ? Ouhaaa, je vais devoir replonger dans mon code... Déprimant.

Merci pour ce test Phillipe.

Hors ligne

 

#14 25-04-2008 09:54:34

bertra
Membre
Date d'inscription: 06-02-2008
Messages: 130

Re: Passer des informations de pages en pages

Ok, il faut que je regarde ça également.
En fait c'est le fait de stocker mon $db dans le registre et de le manipuler dans les autres pages qui m'avait amené à penser que les variables du registre étaient accessibles n'importe ou.
[eventuelle bétise]Mais je pense que c'est le fait que $db soit stocké par le bootstrpap qui fait ca non ?[/eventuelle bétise]

Hors ligne

 

#15 28-04-2008 14:42:44

yannux
Membre
Lieu: Rennes
Date d'inscription: 07-04-2007
Messages: 284
Site web

Re: Passer des informations de pages en pages

bertra a écrit:

Mais je pense que c'est le fait que $db soit stocké par le bootstrpap qui fait ca non ?

Tout à fait


Société : Direct Info Service

Hors ligne

 

#16 05-05-2008 23:22:14

nemesisTHEone
Nouveau membre
Date d'inscription: 29-01-2008
Messages: 7

Re: Passer des informations de pages en pages

Ok, il faut que je regarde ça également.
En fait c'est le fait de stocker mon $db dans le registre et de le manipuler dans les autres pages qui m'avait amené à penser que les variables du registre étaient accessibles n'importe ou.
[eventuelle bétise]Mais je pense que c'est le fait que $db soit stocké par le bootstrpap qui fait ca non ?[/eventuelle bétise]

c'est parceque tu restock toujours $db dans le registre, vue que ton bootstrap est exécuté chaque fois que ouvre une page.

Hors ligne

 

#17 09-05-2008 13:50:50

Echo
Membre
Lieu: Bois Colombes
Date d'inscription: 28-03-2008
Messages: 20
Site web

Re: Passer des informations de pages en pages

(faites gaffe de pas gaver vos sessions : dégradation rapide des perfs)

Je profite de ce post pour poser une question qui me turlupine...
Et les variables du bootstrap, y a t'il un moyen de les utiliser dans les controllers, sans avoir besoin de faire un registry?

Autre question sur le passage de param : y-a-t'il un moyen de connaitre l'URL précédente ou c'est à nous de le coder?
[Edit]
Réponse ici : http://www.z-f.fr/code/detail/14
[/Edit]

Dernière modification par Echo (09-05-2008 14:37:30)


Marre de coder tes modèles Object-Relational Mapping? Génère-les automatiquement avec le générateur de classes ORM

Envie de sortir ? Viens sur ToutPourSortir.fr !

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