Création de composant personnaliser

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

  • [RÉGLÉ] Création de composant personnaliser

    Bonjour,

    Je dévelope actuellement un composant qui permettra aux clients d'envoyer des messages anonymes à un groupe d'administrateur charger de s'occuper de ces gens.

    J'ai suivi la docs officiel qui propose de crée un petit helloworld.

    Premier problème le tri des colonnes dans la partie admin ne fonctionnait pas, j'ai reussi à résoudre ce probléme en farfouillant dans les composant joomla (com_banners)

    J'ai ensuite voulu ajouter les filtres j'ai donc suivi ce tuto : http://docs.joomla.org/J2.5:How_to_a..._to_components

    Que j'ai adapter à la version 3.x en utilisant encore une fois ce que j'ai pu voir dans com_banners.Cela ne fonctionne pas.

    Le problème :

    aprés l'ajout du code le tri ne fonctionne plus (on clique une fois ca tri en asc, on reclick ca trie en desc, on reclik encore ca remet en asc puis ca ne change plus)

    Le probléme viens, je pense, du fullordering :

    ma consol me dit : public 'list.fullordering' => string 'null ASC' (length=8)

    Dans Admin/forms j'ai ajouter ceci a mon fichier xml :

    Code HTML:
     <fields name="list">
    		<field
    			name="fullordering"
    			type="list"
    			label="JGLOBAL_SORT_BY"
    			statuses="*,0,1,2,-2"
    			description="JGLOBAL_SORT_BY"
    			onchange="this.form.submit();"
    			default="id ASC"
    			>
    			<option value="">JGLOBAL_SORT_BY</option>
    			<option value="id ASC">JGRID_HEADING_ID_ASC</option>
    			<option value="id DESC">JGRID_HEADING_ID_DESC</option>
    		</field>
    		<field
    			name="limit"
    			type="limitbox"
    			class="input-mini"
    			default="25"
    			label="COM_ONLINEHELPS_LIST_LIMIT"
    			description="COM_ONLINEHELPS_LIST_LIMIT_DESC"
    			onchange="this.form.submit();"
    		/>
    	</fields>
    Je presume que ce fichier xml est appeler par le populatestate?
    Actuellement ma fonction populatestate ressemble a ceci :

    Code PHP:
     protected function populateState($ordering null$direction null)
            {
                
    // Initialise variables.
                
    $app JFactory::getApplication('administrator');
                
                
    // Load the filter state.
                
    $search $this->getUserStateFromRequest($this->context '.filter.search''filter_search');
                
    $this->setState('filter.search'$search);
                
                
    $state $this->getUserStateFromRequest($this->context '.filter.state''filter_state''''string');
                
    $this->setState('filter.state'$state);
                
                
    // Load the parameters.
                
    $params JComponentHelper::getParams('com_letest');
                
    $this->setState('params'$params);
                
                
    // List state information.
                
    parent::populateState('id''asc');
            } 
    Je ne suis pas trés doué en php j'ai donc du mal a comprendre comment appeler mon fichier xml? (en partant du principe que c'est ca le problème biensure)

    Edit: après quelques manipulations sur le com_banners j'ai decouvert que mon problème ne vient pasdu fullordering je repars à 0

    EDIT 07/10/14

    J'ai reussi a faire fonctionner le tri avec les filtre par defaut de joomla (state et search) en revanche j'ai ajouter un nouveau filtre 'section' qui correspond a la colonne 'section' de ma table.Cette colonne peut contenir 3 valeurs (jeune / adulte / prof) l'idée c'est de pouvoir aficher que les lignes qui correspondent a jeune (par exemple) mais je bloque.

    ma fonction getoption (admin/models/fields/monfichier.php):


    Code PHP:
    protected function getOptions() 
            {
                    
    // Initialize variables.
                    
    $options = array();
     
                    
    $db     JFactory::getDbo();
                    
    $query  $db->getQuery(true)
     
                ->
    select('id As value, section As text')
                ->
    from('#__onlinehelp AS a')
                ->
    order('a.section');
     
                    
    // Get the options.
                    
    $db->setQuery($query);
     
                    
    $options $db->loadObjectList();
     
                    
    // Check for a database error.
                    
    if ($db->getErrorNum()) {
                            
    JError::raiseWarning(500$db->getErrorMsg());
                    }
     
                    return 
    $options;
            } 
    Ce que j'ai rajouter dans mon fichier xml de filtre :

    Code:
                     <field
    			name="section"
    			type="monfichier"
    			label="COM_MONFICHIERS_FILTER_SECTION"
    			description="COM_MONFICHIERS_FILTER_SECTION_DESC"
    			onchange="this.form.submit();"
    			>
    			<option value="">COM_MONFICHIERS_SELECT_SECTION</option>
    		</field>
    Et enfin l'ajout dans ma fonction getListQuery (admin/models/monfichiers.php) :

    Code PHP:
    if ($section $this->getState('filter.section'))
            {   
                
    var_dump($this->getState('filter.section'));
                
    $query->where('section = ' $db->quote($section));
                echo 
    $query;
            } 
    EDIT (09/10/14)

    Les filtres fonctionnent j'ai crée un fichier php par filtre spécifiques pour les filtres 'globaux' j'ai pu utiliser les librairies joomla voiciun exemple d'un fonction getOptions() pour un filtre spécifique :

    Code PHP:
    protected function getOptions() 
            {

            
    $db JFactory::getDbo();
            
    $query $db->getQuery(true)
                ->
    select ('distinct section As value, section As text')
                ->
    from('#__matable AS a')
                ->
    group('value');

            
    // Get the options.
            
    $db->setQuery($query);

            try
            {
                
    $options $db->loadObjectList();
            }
            catch (
    RuntimeException $e)
            {
                
    JError::raiseWarning(500$e->getMessage());
            }

            
    // Merge any additional options in the XML definition.
            // $options = array_merge(parent::getOptions(), $options);

            
    array_unshift($optionsJHtml::_('select.option''0'JText::_('COM_MONCOMPOSANT_SECTION')));

            return 
    $options;
            }

    Bien cordialement, Akharii

    PS: pour ceux que ca interesse j'ai tenu un petit 'journal' du dévelloppement d'un composant MVC en joomla 3.x je vais m'attaquer aujourd'hui aux modules vous pouvez retrouvez les infos sur ma base de connaissances : http://nep-dev.blogspot.com/2014/10/...posant-3x.html
    Dernière édition par Akharii à 15/10/2014, 09h51
    Le blog des Développeurs NEP : http://nep-dev.blogspot.fr
    La communauté NEP : http://nep-gaming.fr/home

Annonce

Réduire
Aucune annonce pour le moment.

Partenaire de l'association

Réduire

Hébergeur Web PlanetHoster
Travaille ...
X