Je développe un composant sous JOOMLA 1.7 et je rencontre un problème pour afficher une Select List des que je passe par un fichier ELEMENT car je dois récupérer des données dans une table avec une sélection apportée par une paramètre défini pour la vue en frontend ( choix d'une section).
J'ai créé un fichier site/models/forms/renewsection.php
<form name="renewsection">
<fieldset
addfieldpath="/administrator/components/com_clubsportif/elements" >
<field
name="renewsection"
type="renewsection"
default=""
label="Nom"
description="Nom des membres "
>
</field>
<field
name="renew"
type="checkbox"
description="Renew option"
label="Renouvellement"
value = "Oui"
required="false"
size="50"
/>
</fieldset>
</form>
J'ai placé la requete sql dans un fichier renewsection.php dans un folder elements
Dans administrator/components/com_component/elements/renewsection.php
<?php
defined('_JEXEC') or jexit('Restricted access');
jimport("joomla.html.parameter.element");
class JElementRenewsection extends JElement
{
var $_name = 'renewsection';
function fetchElement($name, $values, &$node, $control_name)
{
$section = JRequest::getvar('section');
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query = "
SELECT ".$db->nameQuote('id').", concat( lastname, ' ', firstname) AS nom
FROM ".$db->nameQuote('#__comprofiler')."
WHERE ".$db->nameQuote('cb_sport1previous')." = ".$db->quote($section).";
";
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ( $results as $result)
{
$options[] = JHTML::_('select.option', $result->id, $result->nom );
}
return JHTML::_('select.genericlist', $options, ''.$control_name.'['.$name.']', 'size="10" class="inputbox"', 'value', 'text', $values, $control_name.$name);
}
}
?>
La vue en frontend est définie dans site/views/renewsection/html/default.php
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');
JHtml::_('behavior.tooltip');
$section = JRequest::getvar('section');
?>
<h2>Renouvellement des membres de la section <?php echo $section; ?> </h2>
<form action="<?php echo JRoute::_('index.php'); ?>" method="post" id="renewsection" name="renewsection">
<input type="hidden" name="option" value="com_clubsportif" />
<input type="hidden" name="task" value="renewsection.submit" />
<button type="submit" class="button"><?php echo JText::_('Submit'); ?></button>
<?php echo JHtml::_('form.token'); ?>
<fieldset>
<table class="contentpane">
<tr class="sectiontableentry2 cbft_select">
<td class="titleCell"><?php echo $this->form->getLabel('id'); ?></td>
<td class="titleCell"><?php echo $this->form->getInput('id'); ?></td>
</tr>
<tr class="sectiontableentry1 cbft_text">
<td class="titleCell"><?php echo $this->form->getLabel('renew'); ?></td>
<td class="titleCell"><?php echo $this->form->getInput('renew'); ?></td>
</tr>
</table>
</fieldset>
Le parametre pour la vue est défini dans site/views/renewsection/html/default.xml
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="Renouvellement membres d'une section">
<message>Renouvellement des membres d'une section</message>
</layout>
<fields
name="request"
addfieldpath="/administrator/components/com_clubsportif/models/fields"
>
<fieldset name="request">
<field
name="section"
type="sql"
label="Choisir une section"
description="Choisir une section"
default = ""
query = "SELECT id, section FROM #__cs_sections "
key_field = "section"
/>
</fieldset>
</fields>
</metadata>
Je n'ai aucune erreur qui s'affiche cependant le champ Nom ne s'affiche pas en frontend .
J'ai testé la query dans comprofiler , elle renvoie bien un tableau ave l'id et le champ nom (contaténation de lastname et firstname).
J'ai bon revoir le code sous tous les angles je ne comprends pas ce qui est erroné.
merci de votre aide.
J'ai créé un fichier site/models/forms/renewsection.php
<form name="renewsection">
<fieldset
addfieldpath="/administrator/components/com_clubsportif/elements" >
<field
name="renewsection"
type="renewsection"
default=""
label="Nom"
description="Nom des membres "
>
</field>
<field
name="renew"
type="checkbox"
description="Renew option"
label="Renouvellement"
value = "Oui"
required="false"
size="50"
/>
</fieldset>
</form>
J'ai placé la requete sql dans un fichier renewsection.php dans un folder elements
Dans administrator/components/com_component/elements/renewsection.php
<?php
defined('_JEXEC') or jexit('Restricted access');
jimport("joomla.html.parameter.element");
class JElementRenewsection extends JElement
{
var $_name = 'renewsection';
function fetchElement($name, $values, &$node, $control_name)
{
$section = JRequest::getvar('section');
$db = JFactory::getDBO();
$query = $db->getQuery(true);
$query = "
SELECT ".$db->nameQuote('id').", concat( lastname, ' ', firstname) AS nom
FROM ".$db->nameQuote('#__comprofiler')."
WHERE ".$db->nameQuote('cb_sport1previous')." = ".$db->quote($section).";
";
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ( $results as $result)
{
$options[] = JHTML::_('select.option', $result->id, $result->nom );
}
return JHTML::_('select.genericlist', $options, ''.$control_name.'['.$name.']', 'size="10" class="inputbox"', 'value', 'text', $values, $control_name.$name);
}
}
?>
La vue en frontend est définie dans site/views/renewsection/html/default.php
<?php
// No direct access to this file
defined('_JEXEC') or die('Restricted access');
JHtml::_('behavior.keepalive');
JHtml::_('behavior.formvalidation');
JHtml::_('behavior.tooltip');
$section = JRequest::getvar('section');
?>
<h2>Renouvellement des membres de la section <?php echo $section; ?> </h2>
<form action="<?php echo JRoute::_('index.php'); ?>" method="post" id="renewsection" name="renewsection">
<input type="hidden" name="option" value="com_clubsportif" />
<input type="hidden" name="task" value="renewsection.submit" />
<button type="submit" class="button"><?php echo JText::_('Submit'); ?></button>
<?php echo JHtml::_('form.token'); ?>
<fieldset>
<table class="contentpane">
<tr class="sectiontableentry2 cbft_select">
<td class="titleCell"><?php echo $this->form->getLabel('id'); ?></td>
<td class="titleCell"><?php echo $this->form->getInput('id'); ?></td>
</tr>
<tr class="sectiontableentry1 cbft_text">
<td class="titleCell"><?php echo $this->form->getLabel('renew'); ?></td>
<td class="titleCell"><?php echo $this->form->getInput('renew'); ?></td>
</tr>
</table>
</fieldset>
Le parametre pour la vue est défini dans site/views/renewsection/html/default.xml
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="Renouvellement membres d'une section">
<message>Renouvellement des membres d'une section</message>
</layout>
<fields
name="request"
addfieldpath="/administrator/components/com_clubsportif/models/fields"
>
<fieldset name="request">
<field
name="section"
type="sql"
label="Choisir une section"
description="Choisir une section"
default = ""
query = "SELECT id, section FROM #__cs_sections "
key_field = "section"
/>
</fieldset>
</fields>
</metadata>
Je n'ai aucune erreur qui s'affiche cependant le champ Nom ne s'affiche pas en frontend .
J'ai testé la query dans comprofiler , elle renvoie bien un tableau ave l'id et le champ nom (contaténation de lastname et firstname).
J'ai bon revoir le code sous tous les angles je ne comprends pas ce qui est erroné.
merci de votre aide.
Commentaire