Есть ли возможность сделать разбиение на страницы для нескольких таблиц в пределах одного контроллера и просмотра - PullRequest
0 голосов
/ 13 января 2020

код контроллера: код для контроллера работает для нумерации работодателей, но не может выполнять нумерацию страниц для контроллера Stories.

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

    public function index()
    {
        // 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'));

    }

Код модели: описание модели пока одинаково для всех моделей, но понимает, что определение модели не может работать для модели историй, но, как мы продвигаемся с определением модели таблицы работодателей, которая работает абсолютно нормально.

<?php
// src/Model/Table/EmployersTable.php
namespace App\Model\Table;

use Cake\ORM\Table;

class EmployersTable extends Table
{
    public function initialize(array $config): void
    {
        $this->addBehavior('Timestamp');
    }
}

<?php
// src/Model/Entity/Employer.php
namespace App\Model\Entity;

use Cake\ORM\Entity;

class Spk extends Entity
{
    protected $_accessible = [
        '*' => true,
        'id' => false,
        'slug' => false,
    ];
}

<?php
// src/Model/Table/StoriesTable.php
namespace App\Model\Table;

use Cake\ORM\Table;

class StoriesTable extends Table
{
    public function initialize(array $config): void
    {
        $this->addBehavior('Timestamp');
    }
}

<?php

// src/Model/Entity/Story.php
namespace App\Model\Entity;

use Cake\ORM\Entity;

class Sty extends Entity
{
    protected $_accessible = [
        '*' => true,
        'id' => false,
        'slug' => false,
    ];
}

Ошибка, на которую я продолжаю смотреть, когда выполняю действие загрузки страницы, сталкиваюсь с тем, что данные работодателей называются, но данные историй не могут быть загружены. Предложения открыты для просмотра с нетерпением ждем ваших ответов.

сообщение об ошибке:

Undefined property: EmployersController::$Stories in /Applications/MAMP/htdocs/sd/sd/src/Controller/EmployersController.php

Ответы [ 2 ]

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

Нет, это невозможно, поскольку Cake PHP работает только для одной таблицы с несколькими запросами на пагинацию к одной и той же модели. Но не относится ко многим моделям.

0 голосов
/ 13 января 2020

Конечно, это возможно, функция явно задокументирована . Ошибка не имеет ничего общего с разбиением на страницы, это просто означает, что свойство, к которому вы пытаетесь получить доступ ($this->Stories), не существует.

Контроллеры имеют только одну модель по умолчанию, которая загружается автоматически, и это модель, которая соответствует имени контроллера в соответствии с соглашениями, поэтому в вашей EmployersController это модель Employers. Дополнительные модели необходимо загружать вручную:

$this->loadModel('Stories');

// ...

$stories = $this->paginate($this->Stories, ['scope' => 'story']);

См. Также

...