Как отобразить данные с другого контроллера на страницах? CakePHP 4.x
Я хочу связать статьи со страницами, но на последнем экране появляется сообщение об ошибке.
ht tps://s tackru.com/images/5b9f23309b4882b977407d9967ce4857b5b9c505.png ht tps://s tackru.com/images/620dbdec69e799466fcabc49128bdb1829add8d5.png ht tps://s tackru.com/images/455821c7d552d33194017bf0420db3e5981e9177.png
2 ответа
На вашей домашней странице действие
public function homepage() {
$this->loadModel('Articles');
$lastArticles = $this->Articles->find('all', ['limit' => 3, 'order' => 'Articles.created DESC'])->toArray();
$this->set('lastArticles', $lastArticles);
}
View::set
ожидает 2 параметра, один из которых является именем переменной в представлении, а второй - значениями этой переменной для представления.
Вы находитесь в PageController.php, я никогда не использовал этот контроллер для чего-то другого, кроме метода display(). Я не знаю, предназначено ли то, что вы делаете.
Если вы хотите перечислить свои статьи, я бы посоветовал вам настроить это в ArticlesController.php.
//in src/Controller/ArticlesController.php
public function home() {
$lastArticles = $this->Articles->find('all', ['limit' => 3, 'order' => 'Articles.created DESC']);
$this->set('lastArticles', $lastArticles);
}
Затем вам нужно создать шаблон представления с именем, соответствующим имени метода в контроллере (см. Соглашения об именах) - для метода, который я разместил, это "home.php".
//in templates/Articles/home.php
<?php foreach ($lastArticles as $lastArticle): ?>
//.. your fields ..
<?php endforeach; ?>