it-swarm.com.de

Joomla 3 Backend Pagination zeigt stattdessen die vollständigen Ergebnisse

Ich erstelle eine neue Komponente und habe das Joomla 3 MVC-Tutorial befolgt ( Details ), kann aber die Paginierung nicht zum Laufen bringen. Interessanterweise funktioniert auch die Paginierung der in diesem Tutorial verknüpften HelloWorld-Komponente nicht, sodass ich weiß, dass ich etwas nicht verpasst habe.

Ich kann die Paginierungsfußzeile so einstellen, dass sie am unteren Rand der Seite angezeigt wird. Wenn ich jedoch auf die nächste/letzte/aktuelle Seitennummer klicke, werden nur alle Datensätze angezeigt und anschließend die Paginierungsfußzeile entfernt. Was vermisse ich?

models/danceregs.php

class DanceRegModelDanceRegs extends JModelList
{
/**
 * Constructor.
 *
 * @param   array  $config  An optional associative array of configuration settings.
 *
 * @see     JController
 * @since   1.6
 */
public function __construct($config = array())
{
    if (empty($config['filter_fields']))
    {
        $config['filter_fields'] = array(
            'dancer_id','d.dancer_id',
            'dancer_name','d.dancer_name',
            'studio', 'd.studio_id',
            'current_age','d.current_age',
            'published','d.published'
        );
    }

    parent::__construct($config);
}

/**
 * Method to build an SQL query to load the list data.
 *
 * @return      string  An SQL query
 */
protected function getListQuery()
{
    // Initialize variables.
    $db    = JFactory::getDbo();
    $query = $db->getQuery(true);

    // Create the base select statement.
    $query->select('*, (YEAR(CURDATE())-YEAR(dancer_birthdate)) - (RIGHT(CURDATE(),5)<RIGHT(dancer_birthdate,5)) AS current_age')
          ->from($db->quoteName('#__registration_dancers'));

    // Filter: like / search
    $search = $this->getState('filter.search');

    if (!empty($search))
    {
        $like = $db->quote('%' . $search . '%');
        $query->where('dancer_name LIKE ' . $like);
    }

    // Filter by studio name
    $studio_id = $this->getState('filter.studio_id');

    if (is_numeric($studio_id))
    {
        $query->where('studio_id = ' . (int) $studio_id);
    }
    elseif ($studio_id === '')
    {
        //$query->where('(published IN (0, 1))');
    }

    // Filter by published state
    $published = $this->getState('filter.published');

    if (is_numeric($published))
    {
        $query->where('published = ' . (int) $published);
    }
    elseif ($published === '')
    {
        $query->where('(published IN (0, 1))');
    }

    // Add the list ordering clause.
    $orderCol   = $this->state->get('list.ordering', 'dancer_id');
    $orderDirn  = $this->state->get('list.direction', 'desc');

    $query->order($db->escape($orderCol) . ' ' . $db->escape($orderDirn));

    return $query;
}
}

views/danceregs/tmpl/default.php

<form action="index.php?option=com_dancereg&view=danceregs" method="post" id="adminForm" name="adminForm">
<div class="row-fluid">
    <div class="span6">
        <?php echo JText::_('COM_DANCEREG_DANCEREGS_FILTER'); ?>
        <?php
            echo JLayoutHelper::render(
                'joomla.searchtools.default',
                array('view' => $this)
            );
        ?>
    </div>
</div>
<table class="table table-striped table-hover">
    <thead>
    <tr>
        <th width="2%"><?php echo JText::_('COM_DANCEREG_NUM'); ?></th>
        <th width="2%">
            <?php echo JHtml::_('grid.checkall'); ?>
        </th>
        <th width="30%">
            <?php echo JHtml::_('grid.sort', 'COM_DANCEREG_DANCEREGS_NAME', 'dancer_name', $listDirn, $listOrder); ?>
        </th>
        <th width="35%">
            <?php echo JHtml::_('grid.sort', 'COM_DANCEREG_STUDIO_NAME', 'studio_id', $listDirn, $listOrder); ?>
        </th>
        <th width="10%">
            <?php echo JHtml::_('grid.sort', 'DOB_AGE', 'current_age', $listDirn, $listOrder); ?>
        </th>
        <th width="10%">
            <?php echo JText::_('AGE'); ?>
        </th>
        <th width="5%">
            <?php echo JHtml::_('grid.sort', 'COM_DANCEREG_PUBLISHED', 'published', $listDirn, $listOrder); ?>
        </th>
        <th width="7%">
            <?php echo JHtml::_('grid.sort', 'COM_DANCEREG_ID', 'dancer_id', $listDirn, $listOrder); ?>
        </th>
    </tr>
    </thead>
    <tfoot>
        <tr>
            <td colspan="5">
                <?php echo $this->pagination->getListFooter(); ?>
            </td>
        </tr>
    </tfoot>
    <tbody>
        <?php if (!empty($this->items)) : ?>
            <?php foreach ($this->items as $i => $row) :
                //$link = JRoute::_('index.php?option=com_dancereg&task=dancereg.edit&id=' . $row->dancer_id);
                $link = JRoute::_('index.php?option=com_dancereg&view=dancereg&layout=edit&dancer_id=' . $row->dancer_id);
                $studio_link = JRoute::_('index.php?option=com_comprofiler&view=edit&cid=' . $row->studio_id . '#cbtabpane11');
            ?>
                <tr>
                    <td><?php echo $this->pagination->getRowOffset($i); ?></td>
                    <td>
                        <?php echo JHtml::_('grid.id', $i, $row->dancer_id); ?>
                    </td>
                    <td>
                        <a href="<?php echo $link; ?>" title="<?php echo JText::_('COM_DANCEREG_EDIT_DANCEREG'); ?>">
                            <?php echo $row->dancer_name; ?>
                        </a>
                    </td>
                    <td>
                        <a href="<?php echo $studio_link; ?>" title="<?php echo JText::_('COM_DANCEREG_EDIT_STUDIO'); ?>">
                            <?php echo $studdets[$row->studio_id]; ?>
                        </a>
                    </td>
                    <td align="center">
                        <?php echo $row->current_age; ?>
                    </td>
                    <td align="center">
                        <?php echo $DB_sitekore->getAge($row->dancer_birthdate); ?>
                    </td>
                    <td align="center">
                        <?php echo JHtml::_('jgrid.published', $row->published, $i, 'danceregs.', true, 'cb'); ?>
                    </td>
                    <td align="center">
                        <?php echo $row->dancer_id; ?>
                    </td>
                </tr>

                <?
                $clean_dancers = str_replace(',',' ',$row->dancer_name);
                $clean_studio = str_replace(',',' ',$studdets[$row->studio_id]);

                // used for generating our CSV file for Excel
                $csv_output .= $row->dancer_id.",".$clean_dancers.",".$clean_studio.",".$row->current_age.",".$DB_sitekore->getAge($row->dancer_birthdate)
                .",".$row->datemodified."\n";
                ?>
            <?php endforeach; ?>
        <?php endif; ?>
    </tbody>
</table>
<input type="hidden" name="task" value=""/>
<input type="hidden" name="boxchecked" value="0"/>
<input type="hidden" name="filter_order" value="<?php echo $listOrder; ?>"/>
<input type="hidden" name="filter_order_Dir" value="<?php echo $listDirn; ?>"/>
<?php echo JHtml::_('form.token'); ?>

views/danceregs/view.html.php

class DanceRegViewDanceRegs extends JViewLegacy
{
/**
 * Display the Dancer Registration view
 *
 * @param   string  $tpl  The name of the template file to parse; automatically searches through the template paths.
 *
 * @return  void
 */
function display($tpl = null)
{

    // Get application
    $app = JFactory::getApplication();
    $context = "dancereg.list.admin.dancereg";
    // Get data from the model
    $this->items        = $this->get('Items');
    $this->pagination   = $this->get('Pagination');
    $this->state        = $this->get('State');
    $this->filter_order = $app->getUserStateFromRequest($context.'filter_order', 'filter_order', 'dancer_id', 'cmd');
    $this->filter_order_Dir = $app->getUserStateFromRequest($context.'filter_order_Dir', 'filter_order_Dir', 'desc', 'cmd');
    $this->filterForm       = $this->get('FilterForm');
    $this->activeFilters    = $this->get('ActiveFilters');

    // What Access Permissions does this user have? What can (s)he do?
    $this->canDo = DanceRegHelper::getActions();

    // Check for errors.
    if (count($errors = $this->get('Errors')))
    {
        JError::raiseError(500, implode('<br />', $errors));

        return false;
    }

    // Set the submenu
    DanceRegHelper::addSubmenu('danceregs');

    // Set the toolbar and number of found items
    $this->addToolBar();

    // Display the template
    parent::display($tpl);

    // Set the document
    $this->setDocument();
}

/**
 * Add the page title and toolbar.
 *
 * @return  void
 *
 * @since   1.6
 */
protected function addToolBar()
{
    $title = JText::_('COM_DANCEREG_MANAGER_DANCEREGS');

    if ($this->pagination->total)
    {
        $title .= "<span style='font-size: 0.5em; vertical-align: middle;padding-left:5px;'>(" . $this->pagination->total . ")</span>";
    }

    JToolBarHelper::title($title, 'dancereg');

    if ($this->canDo->get('core.create')) 
    {
        JToolBarHelper::addNew('dancereg.add', 'JTOOLBAR_NEW');
    }
    if ($this->canDo->get('core.edit')) 
    {
        JToolBarHelper::editList('dancereg.edit', 'JTOOLBAR_EDIT');
    }
    if ($this->canDo->get('core.delete')) 
    {
        JToolBarHelper::deleteList('', 'danceregs.delete', 'JTOOLBAR_DELETE');
    }
    if ($this->canDo->get('core.admin')) 
    {
        JToolBarHelper::divider();
        JToolBarHelper::preferences('com_dancereg');
    }
}
/**
 * Method to set up the document properties
 *
 * @return void
 */
protected function setDocument() 
{
    $document = JFactory::getDocument();
    $document->setTitle(JText::_('COM_DANCEREG_ADMINISTRATION'));
}
}
1
Mhaddy

Es stellte sich heraus, dass in meiner Datei\models\forms\filter_componentnames.xml Folgendes fehlte:

<fields name="list">
    <field
        name="limit"
        type="limitbox"
        class="input-mini"
        default="25"
        label="COM_CONTENT_LIST_LIMIT"
        description="COM_CONTENT_LIST_LIMIT_DESC"
        onchange="this.form.submit();"
    />
</fields>

Nachdem dies hinzugefügt wurde, funktionierte die Paginierung. Hoffe das hilft jemandem!

1
Mhaddy