Что не так с моим маршрутом Zend Framework? - PullRequest
0 голосов
/ 08 августа 2009

У меня проблема с ZF, мой код выглядит нормально, но я не могу взять идентификатор параметра, он возвращает true, и я правильно получаю URL-адрес http://site.com/admin/news/newsedit/1

Итак, мой код выглядит так:

Маршрут

$ad = self::$frontController->getRouter();      
$ad->addRoute('newsedit',
    new Zend_Controller_Router_Route(
        'news/newsedit/:id',
         array(
            'module' => 'admin',
            'controller' => 'news',
            'action' => 'newsedit'
         )
    )
);

Действие

public function newseditAction()
{
    /*
        Disable Layout
    */
    $this->_helper->layout->disableLayout();
    /*
        @return : boolen OR string
    */
    $_id = ($this->_getParam('id') !== NULL) ? (int)$this->_getParam('id') : false;

    if ($_id) {
        /*
            @return : array
        */
        $_get = $this->news->select()->where('id = ?', $_id);
        if (count($_get) > 0) {
            $this->view->data = $_get;
        }
    }
    Zend_Debug::dump($this->_getParam('id'));
}

Что я делаю не так?

1 Ответ

1 голос
/ 08 августа 2009

Попробуйте следующее:

Сначала проверьте, установлены ли маршруты в вашем контроллере. использование print_r($this->getFrontController()->getRouter()->getRoutes()); подтвердить.

Если нет, вы устанавливаете маршрутизатор не в том экземпляре.

Использование:

$ad = Zend_Controller_Front::getInstance()->getRouter();

вместо.

на обозначении:

 $_get = $this->news->select()->where('id = ?', $_id);

это не возвращает никаких строк. это объект Zend_Db_Table_Select, а не объект Zend_Db_Rowset.

Вам нужно будет сделать:

$select = $this->news->select()->where('id = ?', $_id);
$_get = $this->news->fetchAll($select);

или даже проще:

$_get = $this->news->find($_id)

привет

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