아래에는 Yii에서 일반적으로 사용되는 몇 가지 Yii 페이징 방법과 예제 코드가 있습니다. 여기에는 일반적인 페이징과 Ajax 페이징이 모두에게 도움이 되기를 바랍니다.
코드 복사 코드는 다음과 같습니다.
$this->widget('zii.widgets.CListView', 배열(
'dataProvider' => $dataProvider, //데이터
'itemView' => '_view', //표시된 템플릿
'id' => Yii::app()->컨트롤러->id,
'itemsTagName' => 'ul',
'ajaxVar' => '', //기본값은 페이지 또는 ajax입니다. 이를 제거하면 URL이 더 간결해집니다.
'htmlOptions' => array('class' => Yii::app()->controller->id),
'loadingCssClass' => '로딩', //기본값은 목록 보기 로딩
//'템플릿' => '{summary}{sorter}{items}{pager}',//표시 순서
//'ajaxUpdate' => false, //ajax 페이징 false인지 페이징에 표시된 컨테이너 ID인지
//'beforeAjaxUpdate' => 'before_ajax_update', //common.js에서 콜백 함수가 완성되었습니다
//'afterAjaxUpdate' => 'after_ajax_update',
'빈텍스트' => '
아직 데이터가 없습니다!
', //데이터가 없을 때 내용 표시
'pagerCssClass' => '페이지 매김', //페이지 매김 클래스
'페이저' => 배열(
'selectedPageCssClass' => 'active', //현재 페이지의 클래스
'hiddenPageCssClass' => 'disabled', //페이지 클래스 비활성화
'헤더' =>
~
'htmlOptions' => array('class' => ''),
'firstPageLabel' => '홈',
'nextPageLabel' => '다음 페이지',
'prevPageLabel' => '이전 페이지',
'lastPageLabel' => '마지막 페이지',
),
))
?>
두 번째 유형: 배열 형태의 페이징 데이터를 위한 CLinkPager
컨트롤러:
$criteria = 새 CDbCriteria()
$criteria->order = '뉴스_ID DESC'
$criteria->조건 = 'user_id = 1'
$count = 뉴스::모델()->count($criteria)
$pages = 새로운 CPagination($count)
$페이지->페이지 크기 = 10;
$pages->applyLimit($criteria)
$list = 뉴스::model()->findAll($criteria)
$this->render('index', array('list' => $list, 'pages' => $pages))
}
보기:
$this--->widget('CLinkPager', 배열(
'페이지' => $페이지,
'selectedPageCssClass' => '활성', //현재 페이지의 클래스
'hiddenPageCssClass' => 'disabled', //페이지 클래스 비활성화
'header' => '', //페이지 이전에 표시되는 콘텐츠
'maxButtonCount' => 10, //페이지 매기기 횟수 표시
'htmlOptions' => array('class' => ''),
'firstPageLabel' => '홈페이지',
'nextPageLabel' => '다음 페이지',
'prevPageLabel' => '이전 페이지',
'lastPageLabel' => '마지막 페이지',
)
);
?>
세 번째 유형: DAO는 페이징을 구현합니다.
컨트롤러 레이어:
코드 복사
코드는 다음과 같습니다.
공용 함수 actionReport()
{
$sql = "td_delivery
에서 송금 날짜, 합계(비율) 합계 선택
송금 날짜별로 그룹화
송금 날짜순으로 주문 desc";
$criteria=새 CDbCriteria();
$this->render('보고서',배열(
'게시물'=>$posts,
'페이지'=>$페이지,
));
}
레이어 보기:
코드 복사
코드는 다음과 같습니다.
$row["sumrate"]));?>
?>
//페이징 위젯 코드:
$this->widget('CLinkPager',array('pages'=>$pages));
모델 레이어:
코드 복사
코드는 다음과 같습니다.
/**
* @var 문자열 속성 : 일일 배송비(통계용)
* 새로 추가된 필드에 대한 선언이 필요합니다
*/
공개 $dayrate;
/*
* 통계기능 : 일일 배송비 통계
*/
공개 함수 통계()
{
$criteria = 새 CDbCriteria;
$criteria->select = '송금일, 합계(비율) AS 일률';
$criteria->group = '송금일';
return new CActiveDataProvider(get_class($this), array(
'기준'=>$기준,
'정렬'=>배열(
// 헤더에서 클릭 정렬을 위한 필드를 설정합니다.
'속성'=>배열(
'송금',
'dayrate'=>배열(
'asc'=>'일요율',
'desc'=>'일요율 DESC',
)
),
'defaultOrder'=>'송금 날짜 설명',
),
))
}
컨트롤러 레이어:
/**
* 운송장 통계 기능:
* 날짜별 통계
*/
공개 함수 actionReport()
{
$model=new Delivery('통계');
$model->unsetAttributes(); // 기본값 지우기
$this->render('보고서',array(
'모델'=>$모델,
));
}
레이어 보기:
widget('zii.widgets .gridView', 배열(
'id'=>'delivery-grid',
'dataProvider'=>$model->통계(),
'필터'=>$모델,
'열'=>배열(
'송금',
'일요율',
배열(
'class'=>'CButtonColumn',
),
),
));
?>
장점: 내장 스타일을 사용할 수 있습니다. 단점: 효율성이 약간 떨어집니다.
다섯 번째 유형: Ajax 페이징
YII에서 Ajax 페이지 매김을 구현하는 방법은 여러 가지가 있습니다. 보다 전통적인 방법은 뷰에서 JS를 작성하여 구현하는 것입니다.
현재 보이는 js의 대략적인 로직은 다음과 같습니다
$('#listview .yiiPager a').live('click ',함수 (){
$.ajax({
url:$(this).attr('href'),
성공:기능(html){
$('#listview').html(html);
}
});
false 반환;//태그 차단
});
그런 다음 컨트롤러에서 ajax 요청을 결정한 다음 renderPartial 메서드를 사용하여 부분 목록 보기를 렌더링합니다. 그런 다음 부분 보기는 보기의 ajax 메서드에 의해 부분적으로 새로 고쳐진 div에 채워집니다. 컨트롤러의 일반적인 논리는 다음과 같습니다.
if (Yii::app()->request-> isAjaxRequest) {
$this->renderPartial('_comments',array(
'모델' =>$모델,
'comments' => $comments,//foreach는 부분 보기에서 각 데이터를 가져옵니다
'페이지' => $페이지,
));
Yii::app()->end();
}
나중에 나는 YII의 CListview가 페이징을 캡슐화하고 foreach가 목록을 표시하며 데이터 정렬을 지원한다는 것을 알았습니다. 자세한 내용은 YII API 매뉴얼에서 확인할 수 있습니다. CListview는 기본적으로 ajax로 페이지를 매깁니다.
컨트롤러 내:
$criteria = 새 CDbCriteria();
$criteria->order = ''create_time` DESC';
$dataProvider = new CActiveDataProvider('설명', array(
'페이지 매김'=>배열(
'pageSize'=>Yii::app()->params['commentsPerPage'],//검색할 데이터 수를 결정하기 위해 페이징 항목 수를 설정
),
'기준'=>$기준,
));
$this->render('댓글',array(
'모델' => $모델,
'dataProvider' => $dataProvider,
));
그런 다음 보기:
widget('zii.widgets .CListView' , 배열(
'dataProvider'=>$dataProvider,
'itemView'=>'_comments',
//'ajaxUpdate'=> false,//이렇게 하면 AJAX 페이지 넘김이 발생하지 않습니다
'pager' => array(//pager 구성 정보입니다. 기본값은 array('class'=>'CLinkPager')
입니다. 직접 구성할 수도 있습니다
'nextPageLabel' => '다음 페이지 »',
'prevPageLabel' => '' 이전 페이지'
),
//여기에서 몇 가지 정렬 규칙을 구성할 수도 있습니다. 자세한 내용은
매뉴얼을 참조하세요.
));
?>
이는 매우 편리한 Ajax 페이징을 구현합니다.
이 기사가 Yii 프레임워크를 기반으로 PHP 프로그램을 설계하는 데 도움이 되기를 바랍니다.