2009-08-07 17 views
0

私はZFに問題がある、私のコードはOKに見えますが、私は、パラメータIDを取ることができない、それはtrueを返し、そして私は、URLをaccesingてる右http://site.com/admin/news/newsedit/1Zend Frameworkルートの何が問題になっていますか?

だから私のコードは次のようになります

ルート

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

私は間違っているの?

+0

@Uffo:あなたのコードで、あなたがルートを追加していますか?ブートストラップに – hobodave

+0

、私はもっとルートがあり、彼らは正常に動作します。 – Uffo

答えて

1

次を試してください:

まず、ルートがコントローラに設定されているかどうかを確認してください。確認するには print_r($this->getFrontController()->getRouter()->getRoutes()); を使用してください。

そうでない場合は、ルータを誤ったインスタンスに設定しています。

使用:代わりに

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

。追記上の

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

これは任意の行を返すdoesntの。これはZend_Db_Table_Selectオブジェクトであり、Zend_Db_Rowsetオブジェクトではありません。

あなたは何をする必要があります:

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

またはさらに簡単:

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

挨拶

+0

ええ、あなたのソリューションは私のためには動作しません。 \t \t/* \t \t \tニュースページネーションADMINE SIDE \t */ \t \t $ AD-> addRoute( \t \t \t 'admin_news'、 \t \t \t新しいますZend_Controller_Router_Route( 'ニュース:この問題になる可能性/ 'page'、array( 'module' => 'admin'、 'controller' => 'news'、 'action' => 'index')) \t \t); \t \t \t \t/* \t \t \tニュース編集 \t \t */ \t \t $ AD-> addRoute( \t \t \t 'newsedit'、 \t \t \t新しいますZend_Controller_Router_Route( 'ニュース/ newsedit /:ID '、' controller '=>' news '、' action '=>' newsedit ')) \t \t); – Uffo

+0

hmmあなたはこのようなコードを見ることができません。ここで試してみてください。http://pastebin.com/m71b2ce6b – Uffo

+1

私は理解できません。例えば、 。あなたのURL:http://site.com/admin/news/newsedit/1通常のURL:http://site.com/admin/news/newsedit/id/1 投稿したルートの位置を切り替えよう。あなたがnews /:pageを定義するかどうかは、news/newseditに当てはまると思います。 (newseditはページになります) – Rufinus