>  기사  >  백엔드 개발  >  CakePHP 페이지 매김

CakePHP 페이지 매김

王林
王林원래의
2024-08-29 12:58:00950검색

CakePHP에는 개발자를 위한 다양한 기능이 있습니다. 유연하고 사용자 친화적인 웹 애플리케이션을 개발하려는 경우 프레임워크에 페이지 매김 개념을 포함할 수 있습니다. 페이지당 합리적인 수의 레코드를 표시하는 것은 영원히 각 애플리케이션의 기본 부분이었으며 디자이너에게 수많은 뇌 통증을 유발하는 데 사용되었습니다. CakePHP는 정보 페이지 매기기를 위한 빠르고 간단한 방법을 제공하여 디자이너의 부담을 덜어줍니다. 적응력 있고 사용하기 쉬운 웹 애플리케이션을 만드는 데 있어 주요 장애물 중 하나는 자연스러운 UI를 계획하는 것입니다.

무료 소프트웨어 개발 과정 시작

웹 개발, 프로그래밍 언어, 소프트웨어 테스팅 등

CakePHP 페이지네이션이란 무엇인가요?

사용하기 쉬운 연결 지점을 개선하는 것은 웹 애플리케이션 디자이너의 주요 문제 중 하나입니다. 클라이언트가 소스 코드를 구성하는 시점에서 코드 길이와 복잡성이 확장되기 때문입니다. 마찬가지로, 한 페이지에 수백, 수천 개의 기록을 감독하는 것도 어려운 일이었습니다. 게다가 웹 애플리케이션이 흔들리지 않는 품질과 클라이언트 만족을 경험할 수 있도록 단일 페이지에 미묘함을 가져올 수 있는 기회에 투자합니다. 이러한 맥락에서 CakePHP 디자이너는 단일 페이지에서 많은 기록을 무효화할 수 있는 페이지 매김 기능을 제공합니다. 수많은 애플리케이션이 크기와 복잡성을 빠르게 채우지 못하는 경우가 많으며 건축가와 소프트웨어 엔지니어는 수백 또는 수천 개의 기록을 표시하는 데 적응할 수 없다는 것을 관찰합니다.

클라이언트의 이동 기록을 한 페이지에 보여주다 보니 기록의 길이가 과도하게 늘어나 이런 문제가 발생하게 되었습니다

클라이언트는 데이터를 보기 위해 여러 시간대를 살펴봐야 합니다.

휴대폰, 태블릿 등 소형 기기에서도 사이트를 살펴보는 것은 어렵지 않을 것입니다
웹 애플리케이션 실행이 감소됩니다.

이러한 상황에서 CakePHP는 이상적인 페이지 매김 전략을 제시합니다.

CakePHP의 페이지 매김 전략: 모든 레코드를 동등한 부분으로 분리하고 애플리케이션의 필요에 따라 클라이언트에게 단일 레코드를 표시합니다.

모델: 각 페이지에 200개의 레코드가 있고 20개의 레코드만 표시해야 한다고 가정합니다. 전체 시트를 얻기 위한 기본 수학과 마찬가지로 200/20 = 10입니다. 이 때문에 우리는 다용도 또는 작업 영역 가젯과 같은 작은 화면에서 각 페이지의 미묘함을 고객에게 제공하고 싶습니다.

CakePHP 페이지 매김을 구성하는 방법은 무엇입니까?

이제 CakePHP에서 다음과 같이 페이지 매김을 구성하는 방법을 살펴보겠습니다.

때때로 우리는 전통적인 SQL 쿼리를 활용하여 CakePHP에서 페이지 매김을 수행하고 싶을 때가 있습니다. 그 후에는 CakePHP의 미리 정의된 페이지 매기기 유용성이 상실됩니다. CakePHP의 사용자 정의 페이지 매김

CakePHP에서 표준 SQL 조회를 활용하면 Model이나 Behavior에서 페이지 매김 전략을 수행할 수 있습니다. 사용자 정의 질문 페이지 매기기를 수행하기 전에 센터 모델 기술이나 사용자 정의 로케이터를 사용하여 결과를 얻을 수 없는지 확인하면 됩니다. 그러나 사용자 정의 질문에 표준 페이지 매김을 단순히 활용할 수는 없으며, 모델이나 실행에서 페이지 매김 기능을 폐지해야 합니다.

모델에서 CakePHP 페이지 매김을 대체하기 위한 자체 전략/근거를 활용하기 위해 우리는 paginate() 및 paginateCount()라는 두 가지 기능을 추가하고 싶습니다.

방대한 정보를 표시하기 위해 페이지 매김을 활용할 수 있으며 이 구성 요소는 활용이 매우 간단한 cake PHP 4를 통해 액세스할 수 있습니다.

다음 스크린샷에서는 다음과 같이 서로 다른 값을 가진 여러 데이터베이스 항목을 볼 수 있습니다.

이제 페이지 매김을 사용할 수 있도록 항목이 거의 없는 단일 페이지에 레코드를 표시해야 합니다. 따라서 먼저 Routes.php 파일을 다음과 같이 구성해야 합니다.

<?php
use Cake\Http\Middleware\CsrfProtectionMiddleware;
use Cake\Routing\Route\DashedRoute;
use Cake\Routing\RouteBuilder;
$routes->setRouteClass(DashedRoute::class);
$routes->scope('/', function (RouteBuilder $builder) {
$builder->registerMiddleware('csrf', new CsrfProtectionMiddleware([
'httpOnly' => true,
]));
$builder->applyMiddleware('csrf');
//$builder->connect('/pages',['controller'=>'Pages','action'=>'display', 'home']);
$builder->connect('posts',['controller'=>'Posts','action'=>'index']);
$builder->fallbacks();
});

이제 Controller.php 파일을 생성하고 다음과 같은 코드를 작성해야 합니다.

<?php
namespace App\Controller;
use App\Controller\AppController;
class PostsController extends AppController {
public function index(){
$this->loadModel('rounds);
$articles = $this->rounds->find('all')->order(['rounds.id ASC']);
$this->set('rounds', $this->paginate($rounds, ['limit'=> '4']));
}
}
?>

설명

위 파일에서는 레코드 표시 논리를 작성했는데, 여기서는 단일 페이지에 4개의 레코드를 표시하려고 합니다.

이제 디렉터리를 만들고 그 디렉터리 아래에 새 index.php 파일을 만들고 다음 코드를 작성해야 합니다.

<div>
<?php foreach ($rounds as $key=>$rounds) {?>
<a href="#">
<div>
<p><?= $rounds->title ?> </p>
<p><?= $rounds->details ?></p>
</div>
</a>
<br/>
<?php
}
?>
<ul class="pagination">
<?= $this->Paginator->prev("<<") ?>
<?= $this->Paginator->numbers() ?>
<?= $this->Paginator->next(">>") ?>
</ul>
</div>

이제 위 코드를 localhost에서 실행해 보세요. 위 구현의 최종 결과는 다음 스크린샷을 사용하여 설명했습니다.

Using Controller Cakephp pagination

In the regulator, we start by characterizing the default question conditions pagination will use in the $paginate regulator variable. These circumstances serve as the reason for your pagination questions. They are increased by the sort, direction, limit, and page boundaries passed in from the URL. It is critical to note that the request key should be characterized in an exhibit structure like beneath:

class RoundController extends AppController
{
public $paginate = [
'limit' => 20,
'order' => [
'Round.title' => 'Desc'
]
];
public function initialize()
{
parent::initialize();
$this->loadComponent('Paginator');
}
}

In this code, we can include different options that are supported by the find () method as per our requirements.

class RoundController extends AppController
{
public $paginate = [
'fields' => ['Rounds.id', 'Rounds.created'],
'limit' => 20,
'order' => [
'Rounds.title' => 'Desc'
]
];
public function initialize()
{
parent::initialize();
$this->loadComponent('Paginator');
}
}

While you can pass the vast majority of the question choices from the paginate property it is often cleaner and more straightforward to wrap up your pagination choices into a Custom Finder Method. You can characterize the locater pagination utilizing finder choice.

Conclusion

From the above article, we have taken in the essential idea of the CakePHP pagination and we also see the representation and examples. From this article, we learned how and when we use the CakePHP pagination.

위 내용은 CakePHP 페이지 매김의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:PHP의 크론다음 기사:PHP의 크론