Lors de l’adaptation d’un composant d’arrière-plan Joomla! 2.5 à Joomla! 3.3, j’ai rencontré le problème suivant: la barre d’outils de la page d’édition des données ne fonctionnait pas du tout. Seuls deux boutons ont été déclarés: Enregistrer et Annuler; ne rien faire. À première vue, le problème ne se trouve ni dans le fichier view.html.php , ni tmpl/edit.php . Ce composant est déjà utilisé sur notre site Web actuel Joomla! 2.5 et fonctionne parfaitement.
Toutes les pages de contrôle, de modèle et de vue ont déjà été mises à jour vers JControllerLegacy , JModelLegacy et JViewLegacy respectivement, le cas échéant. Le rapport d'erreur des paramètres du serveur a déjà été défini sur Maximum, mais aucune erreur ni aucun avertissement ne s'affiche.
view.html.php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.application.component.viewlegacy');
class MrCarrosselNoticiasViewMrCarrosselNoticias extends JViewLegacy {
function display($tpl = null){
$form = $this->get('Form');
$item = $this->get('Item');
if (count($errors = $this->get('Errors'))){
JError::raiseError(500, implode('<br />', $errors));
return false;
}
$this->form = $form;
$this->item = $item;
$this->addToolBar();
parent::display($tpl);
}
protected function addToolBar(){
$input = JFactory::getApplication()->input;
$input->set('hidemainmenu', true);
$isNew = ($this->item->cod_destaque == 0);
JToolBarHelper::title($isNew ? "Novo Destaque" : "Editando Destaque");
JToolBarHelper::save('mrcarrosselnoticias.save');
JToolBarHelper::cancel('mrcarrosselnoticias.cancel', 'JTOOLBAR_CANCEL');
}
}
tmpl/edit.php
<?php
defined('_JEXEC') or die('Restricted Access');
JHtml::_('behavior.tooltip');
JHtml::_('behavior.modal');
?>
<form action="<?php echo JRoute::_('index.php?option=com_mrcarrosselnoticias&layout=edit&cod_destaque='.(int) $this->item->cod_destaque); ?>" method="post" name="adminForm" id="mrcarrosselnoticias-form">
<div class="form-horizontal">
<?php echo JHtml::_('bootstrap.startTabSet', 'myTab', array('active' => 'details')); ?>
<?php echo JHtml::_('bootstrap.addTab', 'myTab', 'details', 'Detalhes do Destaque'); ?>
<div class="row-fluid">
<div class="span9">
<?php echo $this->form->getControlGroup('imagem'); ?>
<?php echo $this->form->getControlGroup('titulo'); ?>
<?php echo $this->form->getControlGroup('desc'); ?>
<?php echo $this->form->getControlGroup('link'); ?>
</div>
</div>
<?php echo JHtml::_('bootstrap.endTab'); ?>
<?php echo JHtml::_('bootstrap.endTabSet'); ?>
</div>
<div>
<input type="hidden" name="task" value="mrcarrosselnoticias.edit" />
<?php echo JHtml::_('form.token'); ?>
</div>
</form>
J'ai rencontré ce scénario lors du dépannage de la fonctionnalité des composants principaux. 9 fois sur 10, c'est parce que je n'ai pas inclus la logique JavaScript pour gérer les tâches de la barre d'outils. Essayez d'ajouter le script ci-dessous au-dessus du formulaire. Une fois ajoutés, les boutons d’appel aux boutons d’action de la barre d’outils devraient commencer à fonctionner.
<script type="text/javascript">
Joomla.submitbutton = function(task)
{
if (task == 'mrcarrosselnoticias.cancel' || document.formvalidator.isValid(document.id('mrcarrosselnoticias-form'))) {
Joomla.submitform(task, document.getElementById('mrcarrosselnoticias-form'));
}
}
</script>
J'espère que cela t'aides!