Zend framework Zend Route-从URL中删除参数名称
我开始使用Zend框架进行开发,我有一个关于路由的问题。有没有一种方法可以代替像这样的URL: www.mysite.com/newsletter/groups/edit/id/1 请注意: www.mysite.com/newsletter/groups/edit/1 (不带参数名id) 我已将此代码放在引导文件中声明自定义路由:Zend framework Zend Route-从URL中删除参数名称,zend-framework,zend-route,Zend Framework,Zend Route,我开始使用Zend框架进行开发,我有一个关于路由的问题。有没有一种方法可以代替像这样的URL: www.mysite.com/newsletter/groups/edit/id/1 请注意: www.mysite.com/newsletter/groups/edit/1 (不带参数名id) 我已将此代码放在引导文件中声明自定义路由: protected function _initRoutes() { $router = Zend_Controller_Front::getInstanc
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
/* Edit Groups */
$route = new Zend_Controller_Router_Route('groups/edit/:group_id',array('controller' => 'groups','action' => 'edit'));
$router->addRoute('group_edit', $route);
return $router;
}
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
/**
* Init Autoloader
*/
protected function _initAutoload()
{
$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
}
/**
* Adiciona alguns routers
*/
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
/* Edit Groups*/
$route = new Zend_Controller_Router_Route('/groups/edit/:groupId',array('controller' => 'group','action' => 'edit'));
$router->addRoute('group_edit', $route);
return $router;
}
}
然后,在我的视图文件中,我使用它来回显URL:
<a href="<?=$this->url(array('group_id' => $group->getId()), 'group_edit');?>" class=""><?=$group->getName()?></a>
我的完整Boostrap文件:
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
/* Edit Groups */
$route = new Zend_Controller_Router_Route('groups/edit/:group_id',array('controller' => 'groups','action' => 'edit'));
$router->addRoute('group_edit', $route);
return $router;
}
<?php
class Bootstrap extends Zend_Application_Bootstrap_Bootstrap
{
protected function _initDoctype()
{
$this->bootstrap('view');
$view = $this->getResource('view');
$view->doctype('XHTML1_STRICT');
}
/**
* Init Autoloader
*/
protected function _initAutoload()
{
$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);
}
/**
* Adiciona alguns routers
*/
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
/* Edit Groups*/
$route = new Zend_Controller_Router_Route('/groups/edit/:groupId',array('controller' => 'group','action' => 'edit'));
$router->addRoute('group_edit', $route);
return $router;
}
}
在我的编辑操作中,我可以在所有请求参数中执行var_转储,以查看是否设置了groupId,是的,确实如此
array(3) { ["groupId"]=> string(3) "555" ["controller"]=> string(6) "groups" ["action"]=> string(6) "edit" }
顺便说一句,我已经在这里寻找了很多答案,有一个答案,但对我来说没有解决办法
谢谢 您可以尝试删除下划线:
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
/* Edit Groups */
$route = new Zend_Controller_Router_Route('groups/edit/:groupId',array('controller' => 'groups','action' => 'edit'));
$router->addRoute('group_edit', $route);
return $router;
}
及之后:
<a href="<?=$this->url(array('groupId' => $group->getId()), 'group_edit');?>" class=""><?=$group->getName()?></a>
下划线不适合在这种情况下使用,我选择将名称放在CamelCased中。您可以尝试删除下划线:
protected function _initRoutes()
{
$router = Zend_Controller_Front::getInstance()->getRouter();
/* Edit Groups */
$route = new Zend_Controller_Router_Route('groups/edit/:groupId',array('controller' => 'groups','action' => 'edit'));
$router->addRoute('group_edit', $route);
return $router;
}
及之后:
<a href="<?=$this->url(array('groupId' => $group->getId()), 'group_edit');?>" class=""><?=$group->getName()?></a>
下划线不适合在这种情况下使用,我选择将名称放在CamelCased中。好的,已解决。 我所做的是向组id添加一个默认值(NULL),因此在我的引导文件中,我现在有以下内容:
$route = new Zend_Controller_Router_Route('/groups/edit/:group_id',array('controller' => 'groups','action' => 'edit', 'group_id' => NULL));
谢谢@philien 好,已解决 我所做的是向组id添加一个默认值(NULL),因此在我的引导文件中,我现在有以下内容:
$route = new Zend_Controller_Router_Route('/groups/edit/:group_id',array('controller' => 'groups','action' => 'edit', 'group_id' => NULL));
谢谢@philien 我试着改变你说的话,但还是有错误。也许我的bootstrap文件中有什么东西…我已经用bootstrap文件的完整代码编辑了我的答案。如果我指的是所有的作品,我试着改变你说的,但仍然得到了错误。也许我的bootstrap文件中有什么东西…我已经用bootstrap文件的完整代码编辑了我的答案。如果我指的是所有作品。请将您的解决方案发布为答案,而不是问题的编辑。请将您的解决方案发布为答案,而不是问题的编辑。