© Bakual

Ausgabe einer Componente filtern

Mehr
7 Jahre 2 Wochen her #2969 von meramdo
Hallo,

bitte nicht steinigen, aber ich will es nicht ins Joomlaforum schreiben. Da ist der Ton doch recht ....

Ich habe mit component-creator eine Componente geschrieben. So weit so gut, das Problem ist, wie kann ich die Datenbankausgabe jetzt filtern.
Ich versuche mich da jetzt schon ein paar Tage, aber ich stehe mit meinen 100kg voll auf dem Schlauch.

Im Frontend wird eine Liste ausgegeben. Das funkitioniert auch, aber mit mehreren hundert Einträgen :blink:

Jetzt muss ich aber das eine oder andere Filtern.
Z.B die Class_ID, oder Coach usw. Was da in der Datenbank steht weis ich.
Code:
<?php /** * @version CVS: 1.0.0 * @package Com_Roster * @author * @copyright 2017 rme * @license GNU General Public License Version 2 oder später; siehe LICENSE.txt */ // No direct access defined('_JEXEC') or die; JHtml::addIncludePath(JPATH_COMPONENT . '/helpers/html'); JHtml::_('bootstrap.tooltip'); JHtml::_('behavior.multiselect'); JHtml::_('formbehavior.chosen', 'select'); $user = JFactory::getUser(); $userId = $user->get('id'); $listOrder = $this->state->get('list.ordering'); $listDirn = $this->state->get('list.direction'); $canCreate = $user->authorise('core.create', 'com_roster') && file_exists(JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'forms' . DIRECTORY_SEPARATOR . 'rosterform.xml'); $canEdit = $user->authorise('core.edit', 'com_roster') && file_exists(JPATH_COMPONENT . DIRECTORY_SEPARATOR . 'models' . DIRECTORY_SEPARATOR . 'forms' . DIRECTORY_SEPARATOR . 'rosterform.xml'); $canCheckin = $user->authorise('core.manage', 'com_roster'); $canChange = $user->authorise('core.edit.state', 'com_roster'); $canDelete = $user->authorise('core.delete', 'com_roster'); ?> <form action="<?php echo JRoute::_('index.php?option=com_roster&view=rosters'); ?>" method="post" name="adminForm" id="adminForm"> <table class="table table-striped" id="rosterList"> <thead> <tr> <?php if (isset($this->items[0]->state)): ?> <?php endif; ?> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_ID', 'a.id', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_CLASS_ID', 'a.class_id', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_COACH', 'a.coach', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_COACH_ACTIVITY', 'a.coach_activity', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_MEDIC', 'a.medic', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_MEDIC_ACTIVITY', 'a.medic_activity', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_STAFF', 'a.staff', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_STAFF_ACTIVITY', 'a.staff_activity', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_MANAGEMENT', 'a.management', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_MANAGEMENT_ACTIVITY', 'a.management_activity', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_PLAYER', 'a.player', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_PASS_NUMBER', 'a.pass_number', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_NUMBER', 'a.number', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_FIRST_NAME', 'a.first_name', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_LAST_NAME', 'a.last_name', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_POSITION', 'a.position', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_HIGHT', 'a.hight', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_WEIGHT', 'a.weight', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_PROFESSION', 'a.profession', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_INFO', 'a.info', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_PICTURE', 'a.picture', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_NATIONALITY', 'a.nationality', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_ENTRY', 'a.entry', $listDirn, $listOrder); ?> </th> <th class=''> <?php echo JHtml::_('grid.sort', 'COM_ROSTER_ROSTERS_PUBLISH', 'a.publish', $listDirn, $listOrder); ?> </th> <?php if ($canEdit || $canDelete): ?> <th class="center"> <?php echo JText::_('COM_ROSTER_ROSTERS_ACTIONS'); ?> </th> <?php endif; ?> </tr> </thead> <tfoot> <tr> <td colspan="<?php echo isset($this->items[0]) ? count(get_object_vars($this->items[0])) : 10; ?>"> <?php echo $this->pagination->getListFooter(); ?> </td> </tr> </tfoot> <tbody> <?php foreach ($this->items as $i => $item) : ?> <?php $canEdit = $user->authorise('core.edit', 'com_roster'); ?> <tr class="row<?php echo $i % 2; ?>"> <?php if (isset($this->items[0]->state)) : ?> <?php $class = ($canChange) ? 'active' : 'disabled'; ?> <?php endif; ?> <td> <?php echo $item->id; ?> </td> <td> <?php echo $item->class_id; ?> </td> <td> <?php echo $item->coach; ?> </td> <td> <?php echo $item->coach_activity; ?> </td> <td> <?php echo $item->medic; ?> </td> <td> <?php echo $item->medic_activity; ?> </td> <td> <?php echo $item->staff; ?> </td> <td> <?php echo $item->staff_activity; ?> </td> <td> <?php echo $item->management; ?> </td> <td> <?php echo $item->management_activity; ?> </td> <td> <?php echo $item->player; ?> </td> <td> <?php echo $item->pass_number; ?> </td> <td> <?php echo $item->number; ?> </td> <td> <?php if (isset($item->checked_out) && $item->checked_out) : ?> <?php echo JHtml::_('jgrid.checkedout', $i, $item->uEditor, $item->checked_out_time, 'rosters.', $canCheckin); ?> <?php endif; ?> <a href="<?php echo JRoute::_('index.php?option=com_roster&view=roster&id='.(int) $item->id); ?>"> <?php echo $this->escape($item->first_name); ?></a> </td> <td> <?php echo $item->last_name; ?> </td> <td> <?php echo $item->position; ?> </td> <td> <?php echo $item->hight; ?> </td> <td> <?php echo $item->weight; ?> </td> <td> <?php echo $item->profession; ?> </td> <td> <?php echo $item->info; ?> </td> <td> <?php echo $item->picture; ?> </td> <td> <?php echo $item->nationality; ?> </td> <td> <?php echo $item->entry; ?> </td> <td> <?php echo $item->publish; ?> </td> <?php if ($canEdit || $canDelete): ?> <td class="center"> </td> <?php endif; ?> </tr> <?php endforeach; ?> </tbody> </table> <?php if ($canCreate) : ?> <a href="<?php echo JRoute::_('index.php?option=com_roster&task=rosterform.edit&id=0', false, 0); ?>" class="btn btn-success btn-small"><i class="icon-plus"></i> <?php echo JText::_('COM_ROSTER_ADD_ITEM'); ?></a> <?php endif; ?> <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'); ?> </form> <?php if($canDelete) : ?> <script type="text/javascript"> jQuery(document).ready(function () { jQuery('.delete-button').click(deleteItem); }); function deleteItem() { if (!confirm("<?php echo JText::_('COM_ROSTER_DELETE_MESSAGE'); ?>")) { return false; } } </script> <?php endif; ?>

Ich hoffe ihr könnt mir helfen. DANKE!!!

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Mehr
7 Jahre 2 Wochen her #2970 von Thomas Hunziker
Das Filtern selber geschieht im zugehörigen Model. Da solltest du eine Funktion "getListQuery" haben wo die Datenbankabfrage (Query) gebastelt wird. Da müsstest du dann entsprechende "where" Befehle haben welche die Liste eingrenzen. Normal wird das dann mittels "States" gesteuert welche wiederum in der "populateState" Methode des Models gesetzt werden.
Am besten mal bei einer anderen Komponente gucken wie das gemacht ist.

Das was du gepostet hast dürfte das Layout der Listenausgabe sein. Dort müsstest dann noch entsprechende Dropdownfelder einbauen welche die Filter dann aktivieren können.

Alles in allem keine Hexerei, aber ein wenig Grundwissen wie Joomla funktioniert helfen da schon. Ich weiss jetzt nicht wie der component-creator funktioniert, aber sowas müsste eigentlich dazugehören.

Bitte Anmelden oder Registrieren um der Konversation beizutreten.

Ladezeit der Seite: 0.159 Sekunden