Как отобразить данные с другого контроллера на страницах? 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; ?>
Другие вопросы по тегам