submenu dans un composant partie admin

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

  • submenu dans un composant partie admin

    bonjour a tous

    voila, je développe un composant backoffice grace au tuto
    http://docs.joomla.org/Developing_a_Model-View-Controller_%28MVC%29_Component_for_Joomla!2.5_-_Part_09

    alors, dans mon back, j'ai un submenu, qui est défini dans mon controller principal :

    Code:
    <?php
    class HelloWorldController extends JController
    {
    	/**
    	 * display task
    	 *
    	 * @return void
    	 */
    	function display($cachable = false) 
    	{
    		// set default view if not set
    		JRequest::setVar('view', JRequest::getCmd('view', 'HelloWorlds'));
     
    		// call parent behavior
    		parent::display($cachable);
     
    		// Set the submenu
    		HelloWorldHelper::addSubmenu('messages');
    	}
    }
    dans mon helper, je défini mon submenu comme suit : (2 onglets : 'messages' et 'categories')

    Code:
    <?php
    abstract class HelloWorldHelper
    {
    	/**
    	 * Configure the Linkbar. 
    	 */
    	public static function addSubmenu($submenu) 
    	{
    		JSubMenuHelper::addEntry(JText::_('COM_HELLOWORLD_SUBMENU_MESSAGES'), 'index.php?option=com_helloworld', $submenu == 'messages');
    		JSubMenuHelper::addEntry(JText::_('COM_HELLOWORLD_SUBMENU_CATEGORIES'), 'index.php?option=com_helloworld&view=joachim&extension=com_helloworld', $submenu == 'categories');
    		// set some global property
    		$document = JFactory::getDocument();
    		$document->addStyleDeclaration('.icon-48-helloworld {background-image: url(../media/com_helloworld/images/tux-48x48.png);}');
    		
    		if ($submenu == 'categories') 
    		{
    			$document->setTitle(JText::_('COM_HELLOWORLD_ADMINISTRATION_CATEGORIES'));
    		}
    	}
    }
    mon probleme, lorsque je clique sur l'onglet du sous menu 'categories', je passe bien sur la page 'categories' (donc sur la vue 'joachim'-lié a son controller 'joachim' et a son model 'joachim') sauf que l'onglet sélectionné reste sur 'messages'... ce qui est normal, car dans mon controller principal, je lui passe en parametre en dur :
    Code:
    HelloWorldHelper::addSubmenu('messages');
    comment faire pour que l'onglet soit sélectionné en fonction de la page lu siouplais ? merci

    *explication simplissime de mon probleme :
    Cliquez sur l'image pour l'afficher en taille normale

Nom : 401491Sanstitre.jpg 
Affichages : 1 
Taille : 41,9 Ko 
ID : 1815761
    Dernière édition par kaking à 20/06/2012, 15h53

  • #2
    Re : submenu dans un composant partie admin

    Bonjour et merci,

    Je suppose que tu as trouvé la réponse entretemps. Mais comme ta question m'a aidé à créer un sous-menu et que j'ai dû moi aussi résoudre ce problème de lien actif, je poste la réponse pour ceux que ça pourra aider à l'avenir.

    Dans le controller principal, il suffit de remplacer la constante 'messages' par la valeur du paramètre view dans l'URL. La commande JRequest::getCmd('view', 'HelloWorlds') permet de le faire. Du coup, les liens de redirections doivent aussi faire référence à ce paramètre view de façon précise: index.php?option=com_helloworld&view=categories (voir code du Helper plus bas).

    Code PHP:
    <?php
    class HelloWorldController extends JController
    {
        
    /**
         * display task
         *
         * @return void
         */
        
    function display($cachable false
        {
                    
    // get the active view
                    
    $active_url JRequest::getCmd('view''HelloWorlds');

            
    // set default view if not set
            
    JRequest::setVar('view'$active_url);
     
            
    // call parent behavior
            
    parent::display($cachable);
     
            
    // Set the submenu and give the active url
            
    HelloWorldHelper::addSubmenu($active_url);
        }
    }
    Voilà.

    Une petite remarque à propos du Helper. Je peux me tromper mais je ne pense pas que ce soit sont rôle de définir le titre de la page. Dans mon cas, j'ai délégué cette tâche à la Vue. Ci-dessous le code du Helper simplifié et de la Vue adaptée.

    Le Helper:
    Code PHP:
    <?php
    abstract class HelloWorldHelper
    {
        
    /**
         * Configure the Linkbar. 
         */
        
    public static function addSubmenu($submenu
        {
            
    JSubMenuHelper::addEntry(JText::_('COM_HELLOWORLD_SUBMENU_MESSAGES'), 'index.php?option=com_helloworld&view=messages'$submenu == 'messages');
            
    JSubMenuHelper::addEntry(JText::_('COM_HELLOWORLD_SUBMENU_CATEGORIES'), 'index.php?option=com_helloworld&view=categories'$submenu == 'categories');
        }
    }
    Une des Vues (Faire la même chose dans les autres vues (messages, par exemple))
    Code PHP:
    class HelloWorldViewCategories extends JView
    {
        
    /**
         * Categories view display method
         * @return void
         **/
        
    function display($tpl null)
        {
            
    JToolBarHelper::title(   JText::_'Gestion des cat&eacute;gories' ), 'generic.png' );
            
    JToolBarHelper::deleteList();
            
    JToolBarHelper::editListX();
            
    JToolBarHelper::addNewX();
            
    JToolBarHelper::custom('copy','copy','copy','copy',true,false);    //TODO: gestion de ce bouton dans le controlleur et le modèle

            // Get data from the model
            
    $items        = & $this->get'Data'); 

            
    $this->assignRef('items',        $items);

            
    parent::display($tpl);
        }

    Dernière édition par ledilettante à 04/02/2013, 15h43

    Commentaire

    Annonce

    Réduire
    Aucune annonce pour le moment.

    Partenaire de l'association

    Réduire

    Hébergeur Web PlanetHoster
    Travaille ...
    X