it-swarm-vi.com

Nhầm lẫn phân trang - Phân trang sử dụng bắt đầu, PopulateState sử dụng giới hạn bắt đầu?

Tôi hơi bối rối.

Khi tôi nhìn vào liên kết được tạo bởi phân trang ở giao diện người dùng, tôi thấy một tham số truy vấn có tên start được bao gồm trong các liên kết số trang riêng lẻ và liên kết Bắt đầu và Kết thúc.

Tuy nhiên, phương thức populateState trong cơ sở JModelList lớp tìm limitstart if $this->contextnon null value.

Vì hàm tạo cơ sở cho JModelList bộ $this->context để bằng với <component_name>.<model_name>, Nó trông giống như trong trường hợp mặc định - $this->context sẽ không null, vì vậy popatedState thường sẽ gán giá trị từ $_GET['limitstart'] bằng cách sử dụng getUserStateFromRequest() khi đoạn mã được hiển thị:

$value = $app->getUserStateFromRequest($this->context . '.limitstart', 'limitstart', 0);
$limitstart = ($limit != 0 ? (floor($value / $limit) * $limit) : 0);
$this->setState('list.start', $limitstart); 

Tôi sẽ rất biết ơn nếu ai đó có thể giải thích lý do tại sao mọi việc được thực hiện theo cách này và tôi phải làm gì để có được popatedStatephân trang để đồng ý với biến giữ hàng rằng trang sẽ bắt đầu vào.

TIA.

7
Nick Weavers

Một số mã mặc định gây nhầm lẫn vì j Joomla sử dụng mã cho các quy trình bắt đầu kết thúc hiển thị trang. Theo yêu cầu, phân trang cần theo hai biến trạng thái được đặt, vì vậy bạn cần đặt trong phương thức popatedState () được ghi đè của mô hình (nguồn - com_weblinks) -

// List state information
$limit = $app->getUserStateFromRequest('global.list.limit', 'limit', $app->getCfg('list_limit'), 'uint');
$this->setState('list.limit', $limit);

$limitstart = JRequest::getUInt('limitstart', 0);
$this->setState('list.start', $limitstart);

hơn nữa, nếu bạn xem phương thức getPagination () trong lớp cha jmodellist, bạn có thể biết được cách mọi thứ được tính từ các biến trạng thái để hiển thị phân trang.

3
dev-m