2013-04-09 136 views
0

,我不知道如何讓這樣的URL中的ID:Zend框架獲得ID /我實際使用Zend刪除/ 2

/delete/2 

我知道我可以用做:

// if URL is /delete/id/2 
$request->getParam('id'); 

但我想要的是像第一個網址/delete/2這聽起來更符合我的邏輯。

想法?

感謝您的幫助

+0

ZF,你可能知道是傳統的MVC,這意味着你必須以某種方式發送信息。你可以使用的其他技術是路由器,然後通過這種方式實現你想要的。 – medina 2013-04-09 03:28:35

+0

是的,我知道,但不幸的是它不是一個真正的REST式URL。其他框架以簡單和優雅的方式完成這項工作。無論如何,我不是在這裏談論每個框架的利弊。但只是想知道Zend是否有可能。謝謝您的回答。 – lkartono 2013-04-09 03:33:59

+0

你有沒有試過路線隊友? – medina 2013-04-09 03:34:51

回答

1

我想你應該能夠使用路線解決這類問題。您可以通過添加這例如您config.ini文件創建

/delete/2 

路線:

[production] 
routes.delete.route = "delete/:id" 
routes.delete.defaults.controller = delete 
routes.delete.defaults.action = index 
routes.delete.id.reqs = "\d+" 

在此指定URL匹配,其中單詞開始用冒號:是變量。正如你所看到的,你也可以在你的變量regex風格上設置需求。在你的例子中,id很可能是一個或多個數字,導致對此變量的\d+要求。

這條路線將鏈接指向delete控制器的index行動,並設置id作爲GET-VAR。您可以更改此.ini代碼以適應您的特定需求。我剛剛描述的方法的.ini爲here一般文檔和here

路由,可以通過將下面的代碼引導文件中加入:

$config = new Zend_Config_Ini('/path/to/config.ini', 'production'); 
$router = new Zend_Controller_Router_Rewrite(); 
$router->addConfig($config, 'routes'); 

更多信息請參見該文檔。

+0

在這種情況下,我們必須爲每個在url中傳遞參數的動作添加唯一的條目。 – 2014-01-14 06:00:09

0

試試這個:添加的功能,以您的bootstrap.php

protected function _initRoute(){ 
    $this->bootstrap ('frontcontroller'); 
    $front = $this->getResource('frontcontroller'); 
    $router = $front->getRouter(); 
    $deleteRoute = new Zend_Controller_Router_Route(
    'delete/:id', 
    array(
     'controller' => '{enter-your-controller-name-here}', 
     'action'  => '{enter-your-action-name-here}' 
     ) 
    ); 
    $router->addRoute('delete', $deleteRoute); 
} 

不要忘記更換{進入,您的控制器名,這裏}與控制器名稱和{輸入,您的行動名字在這裏}與行動名稱。

添加此代碼後,$request->getParam('id');應該可以正常工作。