Jump to content

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 - страница просто перезагружается. Чего не хватает?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

 

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

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

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

Edited by grechanyuk

Share this post


Link to post
Share on other sites

 

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

 

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

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

 

Share this post


Link to post
Share on other sites
11 часов назад, konorws сказал:

 

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

 

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

Share this post


Link to post
Share on other sites

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

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

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

  • +1 1

Share this post


Link to post
Share on other sites
1 час назад, thentru сказал:

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

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

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

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

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

Edited by grechanyuk

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
You are posting as a guest. If you have an account, please sign in.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.