Formulaire vide. La vue "Edit" ne récupère pas les données de l'élément à modifier

Réduire
X
 
  • Filtrer
  • Heure
  • Afficher
Tout effacer
nouveaux messages

  • [RÉGLÉ] Formulaire vide. La vue "Edit" ne récupère pas les données de l'élément à modifier

    Bonjour.

    J'ai un sérieux problème. J'ai passé des heures à vérifier mon code et à le comparer à d'autres composants mais je ne vois aucune erreur.

    Lorsque je clique sur le bouton "Editer" ou sur le titre d'un élément pour le modifier, la vue s'affiche (avec comme titre "Slide: [Editer]") avec le formulaire et tous les champs en question, mais tous les champs sont vides. J'ai l'impression que mon modèle n'arrive pas à récupérer les informations de l'élément à éditer. Et lorsque je remplis les champs et je clique sur "Sauver", un nouveau élément est ajouté (c'est donc la tâche "Add" qui est exécutée). Chose que je ne comprend pas.

    Je vous donne le code de mon modèle car je crois que c'est de là que viens le problème.

    com_skitter/models/slide.php

    Code:
    <?php
    defined('_JEXEC') or die( 'Restricted access' );
    
    jimport('joomla.application.component.model');
    
    class SkitterModelSlide extends JModel
    {
    	var $_id = null;
    	var $_data = null;
    
    	function __construct()
    	{
    		parent::__construct();
    
    		$array = JRequest::getVar('cid', array(0), '', 'array');
    		$edit = JRequest::getVar('edit', true);
    		if ($edit) {
    			$this->setId((int)$array[0]);
    		}
    	}
    
    	function setId($id)
    	{
    		$this->_id		= $id;
    		$this->_data	= null;
    	}
    
    	function &getData()
    	{
    		if (empty($this->_data)) {
    			$query = 'SELECT w.*, cc.title AS category,'.
    					' FROM #__skitter AS w' .
    					' LEFT JOIN #__categories AS cc ON cc.id = w.catid' .
    					' WHERE w.id = '.(int) $this->_id;
    			$this->_db->setQuery($query);
    			$this->_data = $this->_db->loadObject();
    		}
    		if (!$this->_data) {
    			$this->_data = new stdClass();
    			$this->_data->id = 0;
    			$this->_data->catid = 0;
    			$this->_data->image = null;
    			$this->_data->link = null;
    			$this->_data->label = null;
    			$this->_data->checked_out = 0;
    			$this->_data->checked_out_time = 0;
    			$this->_data->published = 0;
    			$this->_data->ordering = 0;
    		}
    		return $this->_data;
    	}
    
    	function store()
    	{
    		$row =& $this->getTable();
    
    		$data = JRequest::get('post');
    
    		// Bind the form fields to the slide table
    		if (!$row->bind($data)) {
    			$this->setError($this->_db->getErrorMsg());
    			return false;
    		}
    
    		// Make sure the slide table is valid
    		if (!$row->check()) {
    			$this->setError($this->_db->getErrorMsg());
    			return false;
    		}
    
    		// Store the slide table to the database
    		if (!$row->store()) {
    			$this->setError($this->_db->getErrorMsg());
    			return false;
    		}
    
    		$this->_id = $row->id;
    
    		return true;
    	}
    
    	function delete()
    	{
    		$cids = JRequest::getVar('cid', array(0), 'post', 'array');
    		
    		$row =& $this->getTable();
    
    		if (count($cids)) {
    			foreach ($cids as $cid) {
    				if (!$row->delete($cid)) {
    					$this->setError($row->getErrorMsg());
    					return false;
    				}
    			}
    		}
    
    		return true;
    	}
    
    	function publish($cid = array(), $publish = 1)
    	{
    		$user =& JFactory::getUser();
    
    		if (count($cid)) {
    			JArrayHelper::toInteger($cid);
    			$cids = implode(',', $cid);
    
    			$query = 'UPDATE #__skitter'
    				. ' SET published = '.(int) $publish
    				. ' WHERE id IN ( '.$cids.' )'
    				. ' AND ( checked_out = 0 OR ( checked_out = '.(int) $user->get('id').' ) )'
    			;
    			$this->_db->setQuery($query);
    			if (!$this->_db->query()) {
    				$this->setError($this->_db->getErrorMsg());
    				return false;
    			}
    		}
    
    		return true;
    	}
    }
    Comment créer un template Joomla | Comment créer des paramètres de sélection multiple | Sécurisez votre base de données Joomla
    TWITTER: @tomsyweb

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X