IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

EDI, CMS, Outils, Scripts et API PHP Discussion :

[eZ Publish] Formulaire d'inscription ezuser


Sujet :

EDI, CMS, Outils, Scripts et API PHP

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut [eZ Publish] Formulaire d'inscription ezuser
    Bonjour à tous,
    j'aimerais être aiguillé sur un l'enregistrement des un infos d'un formulaire.
    j'ai crée une nouvelle class user, définit dans le site.ini le UserClassID avec l'id de ma class crée.
    Ensuite j'ai surchargé le fichier register.tpl dans lequel se trouve mon nouveau formulaire d'inscription. Le soucis est comment je procède pour l'insertion des données dans ez. il y a également la table ezuser qui doit être renseigné après avoir validé son inscription, mais je ne sais pas comment m'y prendre.
    Avez-vous une idée ?

    merci par avance.

  2. #2
    Membre éclairé Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Points : 683
    Points
    683
    Par défaut
    Bonjour,

    EZPublish considère une classe comme "Classe utilisateur" dès qu'elle contient un attribut de datatype "Compte utilisateur".

    Si tu surcharges le register.tpl, je te conseille de partir du register.tpl déjà existant et surtout de ne pas intervenir directement sur le script php !

    J'espère que ça réponds à ta question

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Merci pour ta réponse.
    Si je ne dois toucher au script php, cela signifie que je dois garder les balises input telle qu'elles sont ? c'est à dire ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input type="hidden" value="352" name="ContentObjectAttribute_id[]">
    <input id="ezcoa-342_prenom" class="box ezcc-membre ezcca-membre_prenom" type="text" size="70" name="ContentObjectAttribute_ezstring_data_text_352" value="" />
    Je sais que dans l'id le 342 correspond au à l'id de l'attribut. Mais dans le name, à quoi correspond le 352 ?
    Et le input type hidden qui est envoyé à quoi sert-il ?

  4. #4
    Membre éclairé Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Points : 683
    Points
    683
    Par défaut
    Ce que tu as écrit là n'est que le code source généré par le template. Si tu vas voir le fichier /design/standard/user/register.tpl, tu pourras voir le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    {section name=ContentObjectAttribute loop=$content_attributes}
        <input type="hidden" name="ContentObjectAttribute_id[]" value="{$ContentObjectAttribute:item.id}" />
        <div class="block">
            <label>{$ContentObjectAttribute:item.contentclass_attribute.name}</label><div class="labelbreak"></div>
            {attribute_edit_gui attribute=$ContentObjectAttribute:item}
        </div>
        {/section}
    Ce code affiche chaque attribut avec sa vue "edit", par la commande {attribute_edit_gui attribute=$ContentObjectAttribute:item}
    Ainsi, pour le datatype "Compte utilisateur", cette commande va appeler le template suivant (ou sa surcharge) : /design/mon_siteaccess/templates/content/datatype/edit/ezuser.tpl

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    ok je comprends mieux.
    Pour le coup il y a une boucle qui affiche tous les éléments et ceci dans l'orde des attributs de la classe.
    Si dans cette boucle au lieu de faire un affichage, je récupère les éléments dans un tableau et j'affiches le contenu à ma guise, il y aura t'il un pb ?

  6. #6
    Membre éclairé Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Points : 683
    Points
    683
    Par défaut
    Il serait plus correct - et préférable - de conserver la fonction {attribute_edit_gui attribute=}.

    Si tu veux changer l'ordre d'affichage des éléments, tu peux créer une surcharge de register.tpl, et utiliser $content_attributes[$i] où $i est le numéro de l'attribut que tu veux afficher.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    {for 4 to 8 as $i}
    		{attribute_edit_gui attribute=$content_attributes[$i]}
    {/for}
    Après si tu veux changer la manière d'afficher certains datatypes, tu crées les surcharges dans le répertoire /design/mon_siteaccess/templates/content/datatype/edit/datatype_a_modifier.tpl
    Ces différents template seront appelés par attribute_edit_gui

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Ok ok merci pour l'info.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Bonsoir,

    je reviens vers vous pour nouvelle question.
    cela concerne toujours le formulaire d'inscription...
    En passant part la page /user/register, mon formulaire marche très bien, je n'ai pas de soucis.
    Par contre je souhaiterais créer ce même formulaire sur ma home, dans ce cas je ne peux plus utiliser le script de register.php.
    Je voudrais savoir s'il existe un moyen de créer des utilisateur sans passer par le register.php


    Ce que je souhaiterais savoir c'est quels méthode utiliser pour alimenter la table ezuser.

    merci

  9. #9
    Membre éclairé Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Points : 683
    Points
    683
    Par défaut
    Salut,
    Pourquoi ne pas inclure le template register par la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    {include uri='design:user/register.tpl'}

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    J'ai pensé à cette solution, mais à priori il a besoin d'une variable propre au register.tpl qui est content_attributes.

    En fait il faudrait que dans le include je lui ajoute une variable array contenant les attributs de ma classe membre, et que chacun des attributs soit un objet de type eZContentObjectAttribute.

    Or pour créer cet array je ne sais quel fetch utilser.
    illustration :

    Page appelant le register.tpl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    {def $aContentAttributes = fetch( 'class', 'attribute_list', hash( 'class_id', $class_id ) )}
    {include uri='design:user/register.tpl' content_attributes=$aContentAttributes}
    Dans le register.tpl, j'affiche le contenu de la variable
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {$content_attributes|attribute(show,1)}
    Le résultat est que sur la page /user/register j'ai un tableau objets de type eZContentObjectAttribute alors sur ma page dans lequel je fais l'include j'ai un tableau de type eZContentClassAttribute

    /user/register
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Attribute 	Type 	Value
    0 	object[eZContentObjectAttribute] 	Object
    1 	object[eZContentObjectAttribute] 	Object
    /mapage
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Attribute 	Type 	Value
    0 	object[eZContentClassAttribute] 	Object
    1 	object[eZContentClassAttribute] 	Object
    La question est au lieu de faire un fetch class attribut_list, qu'est ce que je dois utiliser pour avoir un array d'objet EzContentObjectAttribute ?

  11. #11
    Membre éclairé Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Points : 683
    Points
    683
    Par défaut
    Il me semble que l'objet édité dans user/register est créé à la volée à l'ouverture de la page et est stocké en tant que brouillon tant que l'édition n'est pas validée.
    Je pense donc qu'il est impossible d'obtenir l'objet via un fetch, puisque apparemment dans ton cas il n'est pas créé à l'ouverture de la page.

  12. #12
    Membre éclairé Avatar de sboyer
    Homme Profil pro
    Développeur PHP chez OpenWide
    Inscrit en
    Février 2010
    Messages
    348
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur PHP chez OpenWide
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2010
    Messages : 348
    Points : 683
    Points
    683
    Par défaut
    Sinon tu peux toujours faire le contraire, désigner /user/register comme ta page d'accueil, et tu rajoutes des éléments autour directement dans register.tpl

  13. #13
    Candidat au Club
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    9
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 9
    Points : 3
    Points
    3
    Par défaut
    Hello,
    pour commencer je te remercie pour tes réponses, c'est cool.
    Si ce n'est pas possible je pense que je vais opter pour un plan B.
    Qui serait de créer un formulaire classique utiliser la eZContentFunctions::createAndPublishObject pour créer l'objet.

Discussions similaires

  1. [MySQL] Quelqu'un pourrait il m'aider à vérifier mon formulaire d'inscription?
    Par Pepito2030 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 23/07/2006, 00h56
  2. [Newbie]*Formulaire d'inscription pour théâtre
    Par [Débutant]*Ludo dans le forum Access
    Réponses: 1
    Dernier message: 16/05/2006, 18h09
  3. Formulaire d'inscription
    Par ero-sennin dans le forum Langage
    Réponses: 3
    Dernier message: 29/01/2006, 19h23
  4. Creation d'un formulaire d'inscription
    Par whbh dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 12
    Dernier message: 21/01/2006, 14h04
  5. Formulaire d'inscription
    Par Gourouni dans le forum ASP
    Réponses: 6
    Dernier message: 02/12/2004, 16h28

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo