Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...

Пагинация


 Поделиться

Рекомендованные сообщения

Привет всем и спасибо, что заглянули^_^ Вот начал изучать пагинацию в опенкарте. Все не могу догнать как она работает, пытался сделать по аналогии - не вышло. Перерыл весь интернет - ничего стоящего. Помогите, пожалуйста. Вот код:

Контроллер:

<?php
class ControllerProductVDIReview extends Controller {

	public function index() {
		$this->load->language('product/vdi_review');
		
		$this->document->setTitle($this->language->get('title')); 
		
		$this->load->model('catalog/vdi_review');
		
		$data['reviews'] = array();

		$review_total = $this->model_catalog_vdi_review->getTotalReviewsByVendorId($this->request->get['vendor_id']);

		$results = $this->model_catalog_vdi_review->getReviewsByVendorId($this->request->get['vendor_id'], ($page - 1) * 10, 10);

		$this->load->model('catalog/review');
		
		if (isset($this->request->get['page'])) {
			$page = $this->request->get['page'];
		} else {
			$page = 1;
		}
		
		foreach ($results as $result) {
			$data['reviews'][] = array(
				'author'     => $result['author'],
				'text'       => nl2br($result['text']),
				'rating'     => (int)$result['rating'],
				'name'		 => $result['name'],
				'date_added' => date($this->language->get('date_format_short'), strtotime($result['date_added'])),
				'customer_id'=> $result['customer_id'],
				'pointsreview'	 => $this->model_catalog_review->getTotalCustomerPointsReview($result['customer_id']),
				'pointsorder'	 => $this->model_catalog_review->getTotalCustomerPointsOrder($result['customer_id']),
				'product_id'		 => $this->url->link('product/product', 'product_id=' . $result['product_id'])
			);
		}
		
		$pagination = new Pagination();
		$pagination->total = $review_total;
		$pagination->page = $page;
		$pagination->limit = 10;
		$pagination->url = $this->url->link('product/vdi_review', 'vendor_id=' . $this->request->get['vendor_id'] . '&page={page}');

		$data['pagination'] = $pagination->render();

		$data['results'] = sprintf($this->language->get('text_pagination'), ($review_total) ? (($page - 1) * 10) + 1 : 0, ((($page - 1) * 10) > ($review_total - 3)) ? $review_total : ((($page - 1) * 10) + 10), $review_total, ceil($review_total / 10));

			$data['column_left'] = $this->load->controller('common/column_left');
			$data['column_right'] = $this->load->controller('common/column_right');
			$data['content_top'] = $this->load->controller('common/content_top');
			$data['content_bottom'] = $this->load->controller('common/content_bottom');
			$data['footer'] = $this->load->controller('common/footer');
			$data['header'] = $this->load->controller('common/header');
		
		$this->response->setOutput($this->load->view('product/vdi_review', $data));
	}
}
?>

Не выводит записи с последующей страницы, при переходе по ссылке вида xxx.xx/....&page=2 - страница просто перезагружается. Чего не хватает?

Ссылка на комментарий
Поделиться на других сайтах


А вы в модель не отправляете параметр Start и Limit которые и занимаются выбором из базы имено тех записей которые соответствуют сранице тоесть в mysql добавляется LIMIT start,limit --> LIMIT 0,10 первая страница  LIMIT 10,10 встарая страница тоесть Start = limit * (page -1) 

Ссылка на комментарий
Поделиться на других сайтах

 

2 часа назад, konorws сказал:

А вы в модель не отправляете параметр Start и Limit которые и занимаются выбором из базы имено тех записей которые соответствуют сранице тоесть в mysql добавляется LIMIT start,limit --> LIMIT 0,10 первая страница  LIMIT 10,10 встарая страница тоесть Start = limit * (page -1) 

да, конечно, только я отправляю start=0, limit =10

Изменено пользователем grechanyuk
Ссылка на комментарий
Поделиться на других сайтах


 

2 часа назад, grechanyuk сказал:

 

да, конечно, только я отправляю start=0, limit =10

Но нусть в том что вы обьявляете переменую page после вызова метода тоесть на начало выборки page = 0

 

Ссылка на комментарий
Поделиться на других сайтах

11 часов назад, konorws сказал:

 

Но нусть в том что вы обьявляете переменую page после вызова метода тоесть на начало выборки page = 0

 

Подскажите как будет правильно по синтаксису это написать?

Ссылка на комментарий
Поделиться на других сайтах


как минимум это

if (isset($this->request->get['page'])) {
  $page = $this->request->get['page'];
} else {
  $page = 1;
}

должно быть до получения $results

  • +1 1
Ссылка на комментарий
Поделиться на других сайтах


1 час назад, thentru сказал:

как минимум это


if (isset($this->request->get['page'])) {
  $page = $this->request->get['page'];
} else {
  $page = 1;
}

должно быть до получения $results

Спасибо огромное! Работает, тему можно закрывать.

Еще один глупый вопрос) как плюсик поставить в репу?

Изменено пользователем grechanyuk
Ссылка на комментарий
Поделиться на других сайтах


Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас
 Поделиться

  • Сейчас на странице   0 пользователей

    • Нет пользователей, просматривающих эту страницу.
×
×
  • Создать...

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.