We launched new forums in March 2019—join us there. In a hurry for help with your website? Get Help Now!
    • 34749
    • 15 Posts
    Bonjour,

    je suis en pleine création d’un composants qui va me service en context Web avec des controllers qui seront appeler en ajax.

    voila ou j’en suis.

    -> creation du model ok
    -> generation du components ok

    je me retrouve donc avec les class générer et me suis donc attaquer aux controller que voici

    <?php 
    $modx = &$modx;
    
    include($modx->getOption('core_path').'components/tecknocracy/classes/membre.class.php');
    $modx->addPackage('test',$modx->getOption('core_path').'components/','teck_');
    
    $user = $modx->getObject('modUser',array('id' => $modx->user->get('id'))); 
    $profile = $modx->getObject('modUserProfile',array('internalKey' => $modx->user->get('id')));
    $membre = $modx->getObject('tckUser',array('id_modx' => $modx->user->get('id')));
    
    if(!$membre){
    	$test = 'vide';
    }
    
    $userData = array(
      'username' => $modx->user->get('username'),
      'fullname' => $profile->get('fullname'),
      'email' => $profile->get('email'),
      'website' => $profile->get('website'),
      'address' => $profile->get('address'),
      'country' => $profile->get('country'),
      'city' => $profile->get('city'),
      'state' => $profile->get('state'),
      'zip' => $profile->get('zip')
    );
    
    $chunk = $modx->parseChunk('settings',$userData);
    
    return array('chunk' => $chunk, 'test' => $test);
    
    


    dans ma table j’ai insérer dans ma case id_modx l’id que j’utilise pour mes test en l’occurance l’utilisateur admin

    mais voila lorsque je lance ma requete
    $membre = $modx->getObject('tckUser',array('id_modx' => $modx->user->get('id')));
    
    if(!$membre){
    	$test = 'vide';
    }else{
    $test = $membre;
    }


    le code $test reste vide je ne recupere pas les infos

    $membre reste toujours à null

    voici la classe: tckUser:
    <?php
    /**
     * @package test */
    class tckUser extends ModUser {
        function __construct(xPDO & $xpdo) {
            parent :: __construct($xpdo);
            $this->set('class_key','tckUser');
        }
    }
    ?>


    j’ai beau chercher je ne comprend pas ce qui ne va pas ?

    quelqu’un peux t’il m’éclairer ?

    merci beaucoup

    • Bonsoir draeya,

      Je n’ai pas de réponse à t’apporter, si ce n’est que la classe des utilisateurs de MODX est modUser et non ModUser (je ne suis pas sûr que cela soit case sensitive!) et que chez moi les controlleurs servent à gérer le contenu du back-end.

      En revanche, je me demande pourquoi tu cherches à étendre modUser. D’après mes lectures (et discutions avec Shaun), étendre modUser est principalement utile dans le cas où tu souhaites modifier la méthode d’identification (comme l’extra modActiveDirectory par exemple).

      Si tu cherches à ajouter des données supplémentaires à tes utilisateurs, tu pourrais peut être voir du côté des champs étendus ou encore utiliser une table (façon modUserProfile).

      Si ton besoin est vraiment d’étendre modUser, je suppose que tu as jeté un coup d’oeil à cette documentation ?
        • 34749
        • 15 Posts
        Hello,

        j’ai effectivement jeter un oeil à la doc.

        peux tu m’en dire plus sur le modUserProfile car je veux effectivement ajouter des informations suplémentaire à mes utilisateurs. mais aussi leur associé des droit des groupes d’acces à certaine ressources mais uniquement en Front. à aucun moment l’utilisateur se connectera sur le manager il n’en auras d’ailleurs pas la connaissance de l’existance de celui ci.

        j’ajouterais les infos sur d’autre table en fonction des informations qu’il remplirons sur leur profile qui determinera un groupe precis.
        je veux aussi que lorsqu’il remplissent leur profile je puissent generer une ressource lui attribuer une template et publier la page pour qu’elle sois en ligne.

        je pense que cela dois etre possible ?

        ou je me trompe peux etre ?

        merci
        • draeya,

          A première vue, tout cela semble faisable (avec un peu de code! ;p). J’essaierai de rédiger les grandes lignes sur la façon dont je procèderais, dès que possible (mais je ne comprend toujours pas le besoin de tables, les champs étendus me semblent amplement « suffisants », mais je n’ai pas toutes les contraintes de ton projet…)
            • 34749
            • 15 Posts
            ok merci pour ton aide
            • Hop, café du midi, je m’y colle smiley

              Quote from: draeya at Jul 25, 2011, 09:16 AM

              peux tu m’en dire plus sur le modUserProfile car je veux effectivement ajouter des informations suplémentaire à mes utilisateurs. mais aussi leur associé des droit des groupes d’acces à certaine ressources mais uniquement en Front. à aucun moment l’utilisateur se connectera sur le manager il n’en auras d’ailleurs pas la connaissance de l’existance de celui ci.

              L’objet modUserProfile (table modx_user_attributes) contient la majeure partie des informations de utilisateurs (modUsers). Il y a également un champ (extended) qui permet de stocker d’autres informations (les champs étendus). Ne voyant pas le besoin de créer une autre table pour ajouter tes informations utilisateurs, j’utiliserais donc cette fonctionnalité.

              Concernant l’attribution de droits/groupes/etc., j’utiliserai un hook (pour Login ou FormIt). Après à toi de définir correctement les droits pour que tes utilisateurs n’aient pas accès au back-end.

              Quote from: draeya at Jul 25, 2011, 09:16 AM

              j’ajouterais les infos sur d’autre table en fonction des informations qu’il remplirons sur leur profile qui determinera un groupe precis.
              je veux aussi que lorsqu’il remplissent leur profile je puissent generer une ressource lui attribuer une template et publier la page pour qu’elle sois en ligne.

              De la même façon, je passerais par des hooks qui vérifiront les données entrées par tes utilisateurs et selon tes critères, tu pourra générer/écrire les informations voulues dans ta/tes table(s) (ou champs étendus). Pour la création de ressource, tu peux encore une fois utiliser les hooks (ouais, j’en suis amoureux!). Une autre solution consisterait à utiliser les évènements system (par exemple OnUserActivate) pour créer un plugin qui créera la ressource.

              // exemple très grossier
              <?php
              switch ($modx->event->name) {
              	case 'OnUserActivate':
              		$page = $modx->newObject('modResource');
              		$page->set('pagetitle','ton titre');
              		$page->set(*ce dont tu as besoin, template, published*);
              		$page->save();
              		break;
              	default: break;
              }
              


              J’espère que cela te mettra sur la bonne piste, et n’hésites pas à faire signe si jamais j’ai omis des détails…
              Bon courage