Zend Frameworks Quickstart методы find () Действие и Просмотр - PullRequest
0 голосов
/ 14 февраля 2012

Я пытаюсь расширить руководство по быстрому старту Zend Framework, пытаясь создать индивидуальное представление для каждой записи в гостевой книге, но я что-то упускаю и продолжаю получать ошибки вроде:

Trying to get property of non-object in C:\wamp\www\quickstart.local\application\views\scripts\guestbook\display.phtml

Я получаю это при попытке выполнить следующее для моего displayAction и моего display.phtml:

//view
<p><?php echo $this->escape($this->entry->id); ?></strong> <a><?php echo $this->escape($this->entry->comment); ?></a><br>
<?php echo $this->escape($this->entry->email); ?></p>

//action
public function displayAction()
{
$id = $this->getRequest()->getParams('id');

$entry = new Application_Model_GuestbookMapper();
$this->view->entry = $entry->find($id);
}

И функция find () в программе отображения такая же, как в учебном пособии.

Я просмотрел всю сеть и нашел только учебные пособия, в которых полностью отсутствует структура руководства по быстрому старту. Хотя все они сами по себе твердые, я хотел бы найти решение этой проблемы. Что я делаю не так?

Я на среднем уровне с php и новичок в Zend Framework. Пожалуйста, имейте это в виду при ответе.

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012

Если вы следуете быстрому запуску verboten, вам нужно что-то вроде этого

public function displayAction()
{
    $id = $this->getRequest()->getParam('id');
    $model = new Application_Model_Guestbook;
    $mapper = new Application_Model_GuestbookMapper;

    $mapper->find($id, $model);

    if (null === $model->getId()) {
        throw new Zend_Controller_Action_Exception(
            sprintf('Guestbook entry %d not found', $id), 404);
    }
    $this->view->entry = $model;
}
0 голосов
/ 15 февраля 2012

Для того, чтобы использовать GuestbookMapper с методом Find (), вам необходимо предоставить два элемента информации методу: идентификатор и экземпляр Guestbook. Экземпляр гостевой книги является обязательным, поскольку в нем есть все методы получения и установки, которые использует маппер для генерации возвращаемых данных.

//action updated
public function displayAction()
{
$id = $this->getRequest()->getParams('id');

$guestbook = new Application_Model_GuestBook();
$entry = new Application_Model_GuestbookMapper();
$this->view->entry = $entry->find($id, $guestbook);
}

для подробного объяснения того, как это работает, ознакомьтесь с главой 9 Пережить углубление

...