Можно ли сделать так, чтобы разбиение на страницы работало как отдельный элемент на странице с помощью навигации? - PullRequest
0 голосов
/ 16 января 2020

Код контроллера:

     public $paginate = [
        'Employers' => ['scope' => 'employer'],
        'Stories' => ['scope' => 'story',
                      'page' => 1,
                      'limit' => 1]
    ];

    public function index()
    {
        //load model
        $this->loadModel('Stories');

        // Paginate property
        $this->loadComponent('Paginator');

        // In a controller action
        $stories = $this->paginate($this->Stories, ['scope' => 'story']);
        $employers = $this->paginate($this->Employers, ['scope' => 'employer']);
        //pr($stories);
        $this->set(compact('employers', 'stories'));
    }

Из этого кода необходимо понимать, что код выглядит так, как требуется, но в то же время я не могу перемещаться дальше, мне также требуется код для запуска, поэтому я сохраняю этот чистый код также составьте код, который будет работать в соответствии с одной страницей, но код требует, чтобы код составлял цикл, который переходит к следующей записи журнала без изменения страницы, на которой отображается ie index. php.

Код представления:

<div class="row">
<div class="large-8 columns" style="border-right: 1px solid #E3E5E8;">
<article>
    <?php
        foreach($stories as $story){

            echo '<hr><div class="row">
            <div class="large-6 columns">
            <p>'.$this->Html->image($story['image'].'.jpg', ['alt'=>'image for article']).'</p>
            </div>
            <div class="large-6 columns">
            <h5><a href="#">'.$story['title'].'</a></h5>
            <p>
            <span><i class="fi-torso"> By '.$story['creator'].' &nbsp;&nbsp;</i></span>
            <span><i class="fi-calendar"> '.$story['created'].' &nbsp;&nbsp;</i></span>

            </p>
            <p>'.$story['story'].'</p>
            </div>
            </div><hr>';
        }
    ?>

<ul class="pagination" role="navigation" aria-label="Pagination">
    <li class="disabled"><?php echo $this->Paginator->prev('  ' . __('previous')); ?></li>
    <!--<li class="current">1</li>
    <li><a href="#" aria-label="Page 2">2</a></li>
    <li><a href="#" aria-label="Page 3">3</a></li>
    <li><a href="#" aria-label="Page 4">4</a></li>-->
    <li><?php echo $this->Paginator->prev(' >> ' . __('next')); ?></li>
</ul>
</article>
</div>

Написанный код делает пагинацию отображаемой на виде, но не работает, когда я щелкаю по кнопке paginator.

1 Ответ

0 голосов
/ 11 февраля 2020

Это возможно, следуйте приведенному ниже коду, чтобы заставить это работать.

    public $paginate = [

        'Stories' => ['scope' => 'story',
                      'limit' => 1,
                      ]
    ];

    public function initialize(): void
    {
        parent::initialize();
        $this->loadComponent('Paginator');
    }

    public function index()
    {
        //load model
        $this->loadModel('Stories');
        $this->loadModel('Sectors');

        // Paginate property
        $this->loadComponent('Paginator');

        // In a controller action
        $employers = $this->Employers->find('all');
        $sectors = $this->Sectors->find('all');
        $stories = $this->paginate($this->Stories->find('all', ['scope' => 'story']));
        //pr($sectorsandcourses);
        $this->set(compact('employers', 'stories', 'sectors'));
    }

Важным фактором, который обнаруживается, является то, что мы устанавливаем ограничение на количество результатов для отображения каждого экземпляра.

...