J'ai un champ personnalisé appelé time qui a le codage ci-dessous.
jimport('joomla.form.formfield');
jimport('joomla.form.helper');
JFormHelper::loadFieldClass('list');
class JFormFieldTime extends JFormFieldList{
protected $type = 'time';
public function getOptions($id='') {
//Do the process and return
return $options;
}
}
Ce qui précède fonctionne parfaitement en back-end car j'ai des formulaires XML pour chaque vue.
Ma question maintenant est de savoir comment afficher le champ dans l'interface frontale où je n'ai pas de formulaires XML à cause de conceptions personnalisées.
J'ai essayé le ci-dessous dans mon edit.php (front-end)
require_once JPATH_LIBRARIES.'/mylib/fields/time.php';
$timefield = JFormHelper::loadFieldType('time', false);
$timeslots=$timefield->getOptions();
Le code ci-dessus donne toutes les options. Y at-il un moyen simple de convertir cela en une zone de liste de sélection. Je sais que le plus difficile est de faire une boucle et de former la zone de sélection. Je veux juste savoir s'il existe un moyen plus simple comme JHTML :: ...
J'ai trouvé la solution aussi simple que ci-dessous.
JHtml::_('behavior.formvalidation');
JHtml::_('formbehavior.chosen', 'select');
require_once JPATH_LIBRARIES.'/mylib/fields/time.php';
$timefield = JFormHelper::loadFieldType('time', false);
$timeslots=$timefield->getOptions();
echo JHtmlSelect::genericlist($timeslots, "note_start_time",null,'value','text',$start_time)
Ça marche cool.