Création d'un nouveau modèle

Réduire
Ce sujet est fermé.
X
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Création d'un nouveau modèle

    Bonjour à tous.

    Je travail actuellement sur un projet sur Joomla 2.5.
    J'utilise le plugin AdsManager pour gérer des petites annonces.

    Jusque la tout fonctionne nickel.

    Pour la suite du projet je dois modifier le plugin afin d'y ajouter de nouvelles fonctionnalités. Pour cela j'ai besoin de créer de nouvelles vues et des modèles.



    J'ai donc crée une première vue :

    C:\Program Files\wamp\www\Joomla_2.5.9-Stable-Full_Package_FR\components\com_adsmanager\views\ca ndidature\view.html.php

    Code:
    <?php
    // Check to ensure this file is included in Joomla!
    defined('_JEXEC') or die( 'Restricted access' );
    
    jimport('joomla.application.component.view');
    
    require_once(JPATH_BASE."/components/com_adsmanager/helpers/field.php");
    require_once(JPATH_BASE."/components/com_adsmanager/helpers/general.php");
    
    /**
     * @package		Joomla
     * @subpackage	Contacts
     */
    class AdsmanagerViewCandidature extends TView
    {
        function display($tpl = null)
        {
            $user		= JFactory::getUser();
    
            $titre = "Candidature";
            $this->assignRef( 'titre', $titre );
            $postulermodel =$this->getModel("postuler");
    
            //$candidatureEtu = $postulermodel->getCandidatureEtudiant();
            //$this->assignRef('candidatureEtu',$candidatureEtu);
    
            parent::display($tpl);
        }
    }


    C:\Program Files\wamp\www\Joomla_2.5.9-Stable-Full_Package_FR\components\com_adsmanager\views\ca ndidature\tmpl\default.php

    Code:
    <?php
    
    // No direct access
    
    defined('_JEXEC') or die('Restricted access');
    
    //jimport('joomla.application.component.view');
    ?>
    <h1><?php echo $this->titre; ?></h1>


    J'ai crée mon modèle :

    C:\Program Files\wamp\www\Joomla_2.5.9-Stable-Full_Package_FR\administrator\components\com_adsma nager\models\postuler.php

    Code:
    <?php
    /**
     * Created by JetBrains PhpStorm.
     * Date: 17/04/13
     * Time: 08:15
     * To change this template use File | Settings | File Templates.
     */
    
    
    // Check to ensure this file is included in Joomla!
    defined('_JEXEC') or die( 'Restricted access' );
    
    jimport('joomla.application.component.model');
    JTable::addIncludePath(JPATH_ADMINISTRATOR.DS.'components'.DS.'com_adsmanager'.DS.'tables');
    
    /**
     * @package		Joomla
     * @subpackage	Contact
     */
    class AdsmanagerModelPostuler extends TModel
    {
        function getPermissionPostuler($userid)
        {
            $this->_db->setQuery("SELECT group_id FROM #__user_usergroup_map WHERE user_id = $userid ");
            $req = $this->_db->loadObjectList();
    
            $boolean = TRUE;
            foreach($req as $ligne)
            {
                if ($ligne->group_id == '12') $boolean = FALSE;
            }
    
            return $boolean;
        }
    
        function getCandidatureEtudiant()
        {
            $this->_db->setQuery("SELECT id_entreprise, id_offre FROM #__postulation WHERE id_user = 622 ");
            $req = $this->_db->loadObjectList();
    
           return $req;
        }
    }

    Et j'ai ajouté dans le contrôleur :
    Code:
            $postulermodel     =$this->getModel("postuler");
            $view->setModel( $postulermodel);

    Ma vue s'affiche bien, j'ai titre qui s'affiche normalement.
    Par contre quand j'essaie de récuperer mon modèle dans la vue afin de pouvoir l'utiliser j'ai le droit à une notice :


    Notice: Undefined index: postuler in C:\Program Files\wamp\www\Joomla_2.5.9-Stable-Full_Package_FR\libraries\joomla\application\compo nent\view.php on line 413


    J'ai l'impression que la vue ne trouve pas le modèle. Pourtant j'ai bien fait un setModel dans le contrôleur.



    Et si j'essaie d'appeler ma fonction getCandidatureEtudiant, j'ai droit à l'erreur :

    Fatal error: Call to a member function getCandidatureEtudiant() on a non-object in C:\Program Files\wamp\www\Joomla_2.5.9-Stable-Full_Package_FR\components\com_adsmanager\views\ca ndidature\view.html.php on line 29


    Cette erreur étant liée à la première, j'aimerais comprendre comment faire pour que ma vue puisse bien récupérer mon modèle.

    Merci d'avance pour vos réponses.

  • #2
    Re : Création d'un nouveau modèle

    class AdsmanagerViewCandidature extends JView et non TView
    Christophe
    http://www.webcrea.fr

    Commentaire


    • #3
      Re : Création d'un nouveau modèle

      Ca ne change rien du tout, j'avais déjà essayé cette modification.

      TView (tout comme TModel) semble être une classe qui a le même rôle que JView et qui est utilisé dans le plugin AdsManager.
      Je ne sais pas du tout quel est l'intérêt de la chose, je n'ai pas trouvé d'information à ce sujet.

      Commentaire


      • #4
        Re : Création d'un nouveau modèle

        as-tu essayé ?

        pour le controleur

        class AdsmanagerViewCandidature extends TView { function display($tpl = null) { parent::display($tpl); }

        function postuler(){
        $view = & $this->getView('postuler', 'html');
        $model = & $this->getModel('postuler');
        $view->setModel($model, true);
        $view->display();
        } }

        pour le model

        class AdsmanagerModelPostuler extends TModel {
        function __construct(){
        parent::__construct();
        }
        }

        et tout le reste (user, titre..) dans view.html.php
        Christophe
        http://www.webcrea.fr

        Commentaire


        • #5
          Re : Création d'un nouveau modèle

          En faisant cela j'ai droit à une nouvelle erreur :

          Fatal error: Call to a member function getName() on a non-object in C:\Program Files\wamp\www\Joomla_2.5.9-Stable-Full_Package_FR\libraries\joomla\application\compo nent\view.php on line 481

          La ligne en question correspond au moment où setModel veut récupérer le nom de mon modèle :
          $name = strtolower($model->getName());

          Je vais voir si j'arrive à trouver une solution en partant sur cette piste.

          Commentaire


          • #6
            Re : Création d'un nouveau modèle

            Merci, cette solution a fonctionné.
            J'avais juste copié au mauvais endroit.

            Commentaire


            • #7
              Re : Création d'un nouveau modèle

              super bon courage pour la suite
              Christophe
              http://www.webcrea.fr

              Commentaire

              Annonce

              Réduire
              Aucune annonce pour le moment.

              Partenaire de l'association

              Réduire

              Hébergeur Web PlanetHoster
              Travaille ...
              X