En suivant le guide Developing an MVC Component/Basic backend , je ne peux pas faire fonctionner la pagination, en suivant les instructions, voici le code que j'ai, les enregistrements sont répertoriés correctement et le composant de pagination est dessiné, mais lorsque je clique sur l'une des pages, le défilement du navigateur de page ne monte que sans redirection. J'accueille vos suggestions
administrateur/composants/com_demo/vues/demo/view.html.php
<?php
defined('_JEXEC') or die('Restricted access');
class DemoViewDemo extends JViewLegacy
{
public function display($tpl = null)
{
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
if (count($errors = $this->get('Errors'))) {
JError::raiseError(500, implode('<br />', $errors));
return false;
}
$this->addToolBar();
parent::display($tpl);
}
protected function addToolBar()
{
JToolbarHelper::title(JText::_('COM_DEMO_TITLE'));
}
}
administrateur/composants/com_demo/models/demo.php
<?php
defined('_JEXEC') or die('Restricted access');
class DemoModelDemo extends JModelList
{
protected function getListQuery()
{
$dbo = JFactory::getDbo();
$query = $dbo->getQuery(true);
$query->select('*')->from('#__demo');
return $query;
}
}
administrateur/composants/com_demo/vues/demo/tmpl/default.php
<?php
defined('_JEXEC') or die;
use Joomla\CMS\HTML\HTMLHelper;
?>
<form action="index.php?option=com_demo&view=demo" method="post" id="adminForm" name="adminForm">
<table class="table table-hover table-striped table-hover table-bordered">
<thead>
<tr>
<th width="1%"></th>
<th width="9%">item1</th>
<th width="10%">item2</th>
<th width="50%">item3</th>
<th width="5%">item4</th>
<th width="5%">item5</th>
<th width="10%">item6</th>
<th width="10%">item7</th>
</tr>
</thead>
<tfoot>
<tr>
<td colspan="8">
<?= $this->pagination->getListFooter(); ?>
</td>
</tr>
</tfoot>
<tbody>
<?php foreach ($this->items as $index => $item): ?>
<tr>
<td>
<?= $this->pagination->getRowOffset($index); ?>
</td>
<td>
<?= $item->domain ?>
</td>
<td>
<?= $item->firstName ?>
</td>
<td>
<?= $item->lastName ?>
</td>
<td>
<?= $item->label ?>
</td>
<td>
<?= $item->location ?>
</td>
<td>
<?= HTMLHelper::_('date', $item->date_entered, JText::_('DATE_FORMAT_LC5')) ?>
</td>
<td>
<?= HTMLHelper::_('date', $item->date_modified, JText::_('DATE_FORMAT_LC5')) ?>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
</form>
Le problème a été résolu en ajoutant la directive JHtml::_('behavior.framework');
dans la vue afin que le problème de:
ReferenceError: Joomla n'est pas défini
qui s'est produit lorsque vous avez cliqué sur l'une des pages du composant pager
Le code final est
<?php
defined('_JEXEC') or die('Restricted access');
class DemoViewDemo extends JViewLegacy
{
public function display($tpl = null)
{
$this->items = $this->get('Items');
$this->pagination = $this->get('Pagination');
if (count($errors = $this->get('Errors'))) {
JError::raiseError(500, implode('<br />', $errors));
return false;
}
$this->addToolBar();
JHtml::_('behavior.framework'); // Adding this line fix the error ReferenceError: Joomla is not defined
parent::display($tpl);
}
protected function addToolBar()
{
JToolbarHelper::title(JText::_('COM_TSLISTDEFINITION_TITLE'));
}
}