为什么Zend 2会出现!@#(#(!#@??
好的,所以我正在努力让简单的重定向工作。我有一个名为'listitems'的控制器,其动作叫做'editlistitem'。用手拉雪橇敲了几个小时后,我终于得到了工作表格和验证工作以及对Doctrine的保湿工作,这样我就可以保存结果。
最后一步是将用户重定向到'showlistitem'操作,其中包含跟踪它的id。 (完整路径子路径是'listitem / showlistitem / 2',其中2是我想看的id)
我试过了:
$this->redirect()->toRoute('/listitem/showlistitem/2');
$this->redirect()->toRoute('listitem/showlistitem/2');
$this->redirect()->toRoute('showlistitem/2');
$this->redirect()->toRoute('listitem/showlistitem', array('id' => 2));
$this->redirect()->toRoute('listitem-showlistitem', array('id' => 2));
他们都没有工作! (他们都找不到回路)
到控制器的路径是modules.config.php,其中包含指向操作的子路由。我可以通过手动输入直接转到网址,它工作正常。如何在 bleep 中让Zend将用户从动作重定向到该路由?
答案 0 :(得分:3)
The Redirect plugin提供的toRoute
方法需要将route name
作为参数传递。这是它的解释:
toRoute (string $ route = null,array $ params = array(),array $ options = array(),boolean $ reuseMatchedParams = false)
使用提供的
$params
和$options
重定向到指定路线,以汇总网址。
给出这个简单的路由配置示例:
//module.config.php
'router' => array(
'routes' => array(
'home' => array(
'type' => 'Segment',
'options' => array(
'route' => '/',
'defaults' => array(
'controller' => 'index',
'action' => 'index',
),
),
),
'app' => array(
'type' => 'Literal',
'options' => array(
'route' => '/app',
'defaults' => array(
'controller' => 'index',
'action' => 'index',
),
),
'may_terminate' => true,
'child_routes' => array(
'default' => array(
'type' => 'Segment',
'options' => array(
'route' => '/[:controller[/:action[/:id]]]',
'constraints' => array(
'controller' => '[a-zA-Z][a-zA-Z0-9_-]*',
'action' => '[a-zA-Z][a-zA-Z0-9_-]*',
'id'=>'[0-9]+',
),
),
),
),
),
),
),
此重定向有效:
return $this->redirect()->toRoute('app/default',
array('controller'=>'controller-name', 'action'=>'action-name', 'id'=>$id));
在您的情况下,这将起作用:
return $this->redirect()->toRoute('app/default',
array('controller'=>'listitem', 'action'=>'showlistitem', 'id'=>2));
希望这可以提供帮助