fruid Posted November 30, 2020 Share Posted November 30, 2020 I'm having and always have a hard time building PaginatedArrays, I never know where to put the "limit=24" selector so please enlighten me. Here's what I'm doing… $categories = $page->protable('start=0, limit=999999'); // this I need in order to retrieve the pages's "categories" and I don't know how to make use of $rows instead for that purpose because of this confusing limit-API $rows = $page->protable; // put ("limit=20") here? $custom = buildSelector($input, $rows); // this function returns an array of selectors depending on the user input $items = new PaginatedArray; // or here? // or here? $items->find("limit=20") // or like this? $items("limit=20") // or like this? $items = $items("limit=20") // or like this? $items = $items->find("limit=20") foreach ($rows as $r) : if ($custom->get('selector')->matches($r)) : $items->add($r); endif; endforeach; // or at this point? and then if ($items) { // or maybe somewhere here? echo '<span class="grey">'.$items->getPaginationString(array( 'label' => 'entries', 'zeroLabel' => '0 entries', // 3.0.127+ only 'usePageNum' => false, 'count' => count($items), 'start' => $items->getStart(), 'limit' => count($items), 'total' => $items->getTotal() )); and then of course… $pager = $modules->get("MarkupPagerNav"); echo '<div class="uk-flex uk-flex-center">'.$pager->render($items, $options).'</div>'; I'm out of ideas and confused cause it doesn't make sense to me either way. ____ The buildSelector function above returns and array… $selected = new Selectors("$letter, $searchterm, $category"); $custom = new Wirearray; $custom->set('selector', $selected); $built->set('sort', $sort); return $custom; and each of the new selectors are basically strings ("category=whatever") Also, you cannot put the "sort=title" or whatever as a selector for the Selectors function (see above). Why, I know not. I don't know if that is the proper way but selecting kind of works now as opposed to many other ways I tried. Selectors always require a lot of trial and error, it seems to have a very sensitive API, always depends on double quotes, single quotes and how you concatenate. Thanks for help! Link to comment Share on other sites More sharing options...
fruid Posted May 26, 2021 Author Share Posted May 26, 2021 OK so I guess it doesn't make more sense to anyone else out here either. Every time I try to use pagination I spend hours guessing and trying and when I get it to work, I'm back to where I started and I'm not one bit smarter than before because when at the time I will use pagination again, it might be a slightly different scenario that also will require hours of guessing. Here's what I'm trying now (for a different project) $start = $limit * ($input->pageNum() - 1); $allcasts = pages("template=cast"); // first store in in-memory db? $casts = $allcasts->find("has_parent=$page, sort=$sort"); // then find in in-memory db? $casts = sortOutEmpty($casts, $decider); $casts->setStart($start); $casts->setLimit($limit); // I use $decider as a variable so I can dynamically set a field that // depending if it's empty or not // decides whether the page should be displayed in the current language or not function sortOutEmpty($items, $decider) { $casts = new PaginatedArray; foreach ($items as $item) : if ($item->$decider != '') : $casts->add($item); endif; endforeach; return $casts; } The above doesn't work. I understand I need to set the "total" for the array but like I said, I never know how to do that properly. Thanks for help! Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now