Hi everyone I have been trying to work out how to create a sortable table without AJAX [looking at progressive enhancement] as a first stage of a small application I am writing as practice for teaching next semester.
Scenario: The UNIT entity: unit(id, name, state_code, national_code) contains data about units of study that are available to students. I have successfully used the sfPropelPager to create a paginated table of the results in an unsorted manner. Problems: Task 1) I wish to implement clickable headers that allow the user to decide upon which column to sort by. Task 2) Clicking a header twice reverses the sort Task 3) Clicking a header three times cancels the sorting direction and thus returns the data to the entered data order [unsorted] Anyone give me the hints to help implement this? Thanks Ady ------------------------------- In the /apps/frontend/modules/unit/actions/actions.class.php I have [reduced for simplicity]: class unitActions extends sfActions { public function executeIndex(sfWebRequest $request) { $this->unit_list = UnitPeer::doSelect(new Criteria()); } public function executeList(sfWebRequest $request) { $c = new Criteria(); $c->addAscendingOrderByColumn(UnitPeer::NAME); $pager = new sfPropelPager('Unit', 10); $pager->setCriteria($c); $pager->setPage($this->getRequestParameter('page', 1)); $pager->init(); $this->unit_list = $pager; } } ----------- In the /apps/frontend/modules/unit/templates/listSuccess.php file: <?php echo $unit_list->getNbResults() ?> results found.<br /> Displaying results <?php echo $unit_list->getFirstIndice() ?> to <? php echo $unit_list->getLastIndice() ?>. <table cellspacing="0"> <thead> <tr> <th class="state">State code</th> <th class="national">National code</th> <th class="name">Name</th> <th class="nominal">Nominal hours</th> </tr> </thead> <tbody> <?php $i=0; foreach ($unit_list->getResults() as $unit): ?> <tr class="<?php echo ($i=($i==0?1:0)) ? 'even' : 'odd' ?>"> <td><?php echo $unit->getStateCode() ?></td> <td><?php echo $unit->getNationalCode() ?></td> <td><a href="<?php echo url_for('unit/show?id='.$unit- >getId()) ?>"><?php echo $unit->getName() ?></td> <td><?php echo $unit->getNominalHours() ?></td> </tr> <?php endforeach; ?> </tbody> </table> <?php if ($unit_list->haveToPaginate()): ?> <?php echo link_to('«', 'unit/list?page='.$unit_list- >getFirstPage()) ?> <?php echo link_to('<', 'unit/list?page='.$unit_list- >getPreviousPage()) ?> <?php $links = $unit_list->getLinks(10); foreach ($links as $page): ?> <?php echo ($page == $unit_list->getPage()) ? $page : link_to($page, 'unit/list?page='.$page) ?> <?php if ($page != $unit_list->getCurrentMaxLink()): ?> - <?php endif ?> <?php endforeach ?> <?php echo link_to('>', 'unit/list?page='.$unit_list- >getNextPage()) ?> <?php echo link_to('»', 'unit/list?page='.$unit_list- >getLastPage()) ?> <?php endif ?> Adrian Gould kiltot...@gmail.com --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "symfony users" group. To post to this group, send email to symfony-users@googlegroups.com To unsubscribe from this group, send email to symfony-users+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/symfony-users?hl=en -~----------~----~----~----~------~----~------~--~---