web-dev-qa-db-fra.com

Quelle est la raison pour laquelle la pagination des enregistrements ne fonctionne pas?

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>
2
user615274

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'));
    }
}
1
user615274