Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Recommended Posts

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

Контроллер:

<?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 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.