2009-08-07 8 views
0

J'ai un problème avec ZF, mon code semble correct, mais je ne peux pas prendre l'ID de paramètre, il retourne vrai, et je suis accesing l'url droite Donc mon code http://site.com/admin/news/newsedit/1Quel est le problème avec mon itinéraire Zend Framework?

ressemble à ceci:

Route

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

action

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')); 
} 

Qu'est-ce que je fais mal?

+0

@Uffo: Où dans votre code, vous ajoutez la route? – hobodave

+0

dans le bootstrap, j'ai plus d'itinéraires et ils fonctionnent bien – Uffo

Répondre

1

les opérations suivantes:

Vérifiez d'abord si les routes sont définies dans votre contrôleur. Utilisez print_r($this->getFrontController()->getRouter()->getRoutes()); pour confirmer.

Sinon, vous configurez le routeur dans la mauvaise instance.

Utilisation:

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

à la place.

sur un sidenote:

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

ceci ne retourne toutes les lignes. c'est un objet Zend_Db_Table_Select qui n'est pas un objet Zend_Db_Rowset.

Vous devez faire:

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

ou encore plus facile:

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

salutations

+0

Hmm, votre solution ne fonctionne pas pour moi :(.Peut-être ce problème: \t \t/* \t \t \t Nouvelles admine SIDE pagination \t */ \t \t $ Ad-> addRoute ( \t \t \t 'admin_news', \t \t \t new Zend_Controller_Router_Route ('nouvelles /: page ', array (' module '=>' admin ',' controller '=>' news ',' action '=>' index ')) \t \t); \t \t \t \t/* \t \t \t Nouvelles modifier \t \t */ \t \t $ Ad-> addRoute ( \t \t \t 'NewsEdit', \t \t \t new Zend_Controller_Router_Route ('Nouvelles/NewsEdit /: id ', array (' module '=>' admin ',' controller '=>' news ',' action '=>' newsedit ')) \t \t); – Uffo

+0

hmm vous ne pouvez pas voir le code juste comme ça, essayez ici http://pastebin.com/m71b2ce6b – Uffo

+1

ce que je ne comprends pas est, pourquoi vous faites cela en premier lieu, seulement pour vous sauver/id /? par ex. votre URL: http://site.com/admin/news/newsedit/1 URL normale: http://site.com/admin/news/newsedit/id/1 essayez de changer la position des routes que vous postez . Je suppose que si vous définissez news /: page ce serait vrai pour news/newsedit to. (newsedit serait la page) – Rufinus

Questions connexes