,我不知道如何讓這樣的URL中的ID:Zend框架獲得ID /我實際使用Zend刪除/ 2
/delete/2
我知道我可以用做:
// if URL is /delete/id/2
$request->getParam('id');
但我想要的是像第一個網址/delete/2
這聽起來更符合我的邏輯。
想法?
感謝您的幫助
,我不知道如何讓這樣的URL中的ID:Zend框架獲得ID /我實際使用Zend刪除/ 2
/delete/2
我知道我可以用做:
// if URL is /delete/id/2
$request->getParam('id');
但我想要的是像第一個網址/delete/2
這聽起來更符合我的邏輯。
想法?
感謝您的幫助
我想你應該能夠使用路線解決這類問題。您可以通過添加這例如您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');
更多信息請參見該文檔。
在這種情況下,我們必須爲每個在url中傳遞參數的動作添加唯一的條目。 – 2014-01-14 06:00:09
試試這個:添加的功能,以您的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');
應該可以正常工作。
ZF,你可能知道是傳統的MVC,這意味着你必須以某種方式發送信息。你可以使用的其他技術是路由器,然後通過這種方式實現你想要的。 – medina 2013-04-09 03:28:35
是的,我知道,但不幸的是它不是一個真正的REST式URL。其他框架以簡單和優雅的方式完成這項工作。無論如何,我不是在這裏談論每個框架的利弊。但只是想知道Zend是否有可能。謝謝您的回答。 – lkartono 2013-04-09 03:33:59
你有沒有試過路線隊友? – medina 2013-04-09 03:34:51