Создание контроллера для домашней страницы - PullRequest
0 голосов
/ 17 января 2010

Можете ли вы сказать мне, как использовать контроллер для домашней страницы, потому что я пытаюсь поместить данные модели в home.ctp (просмотр домашней страницы) с <?php $this->user->find() ?> но возвращается

Примечание (8): неопределенное свойство: View :: $ user [APP \ views \ pages \ home.ctp, строка 1]

Ответы [ 3 ]

0 голосов
/ 18 января 2010

Вы должны проверить поваренную книгу; у него есть несколько хороших учебников по CakePHP, на http://book.cakephp.org/

Вы на самом деле не предоставили много информации, но я предполагаю, что ваш контроллер uses модель 'Пользователь', и вы ставите $this->user->find() на ваш взгляд, когда он должен быть в вашем контроллере. В действии вашего контроллера вы захотите / должны сделать что-то вроде этого ...

Users_Controller extends AppController {
    function index() {
        $arrayOfUsers = $this->User->find(...);
        $this->set('users', $arrayOfUsers);
    }
}

Затем вы можете - в своем View - получить доступ к «пользователям» следующим образом:

pre($users);

... поскольку вы использовали метод Controller set() для отправки переменной $users в представление.

0 голосов
/ 02 апреля 2012

Контроллер по умолчанию для домашней страницы, т.е. представления home.ctp, находится в /cake/libs/controller/pages_controller.php. Этот контроллер можно переопределить, поместив копию в каталог контроллеров вашего приложения как /app/controllers/pages_controller.php. Затем вы можете изменить этот контроллер по своему усмотрению, то есть использовать модели, вводить переменные для использования на домашней странице и т. Д.

0 голосов
/ 18 января 2010

Все, что вам действительно нужно сделать, это создать новый контроллер, если вы хотите двигаться в этом направлении. Если это единственное утверждение, которое требует доступа к данным, возможно, стоит подделать его только в этом методе PagesController. Например, одна из домашних страниц моих проектов имеет статическое сохранение 99% для списка избранных событий. Вместо того, чтобы переносить все на новый контроллер или даже загружать мою Event модель для всего PagesController (где она не нужна), я просто применил это решение в PagesController::home():

$attractions = ClassRegistry::init ( 'Attraction' )->featured ( 10 );

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...