Перейти к содержанию

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

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

Контроллер:

<?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 и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.