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 :
Je presume que ce fichier xml est appeler par le populatestate?
Actuellement ma fonction populatestate ressemble a ceci :
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):
Ce que j'ai rajouter dans mon fichier xml de filtre :
Et enfin l'ajout dans ma fonction getListQuery (admin/models/monfichiers.php) :
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 :
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
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>
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');
}
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;
}
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>
Code PHP:
if ($section = $this->getState('filter.section'))
{
var_dump($this->getState('filter.section'));
$query->where('section = ' . $db->quote($section));
echo $query;
}
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($options, JHtml::_('select.option', '0', JText::_('COM_MONCOMPOSANT_SECTION')));
return $options;
}
}
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