我正在尝试使用Zend Framework开发网站,但我遇到了一个问题: 我有默认控制器,它显示一个带链接的页面。该链接使用另一个控制器并将我重定向到该控制器的起始页面(我已在我的自定义控制器中实现了startAction(),并在modules / default / view / scripts / disc目录中实现了start.phtml页面。)起始视图包含一个从数据库填充的表,以及三个链接:添加,编辑和删除。对于我在start.phtml中使用的添加链接,使用以下代码:
<p><a href="<?php echo $this->url ( array ('controller' => 'disc','action' => 'add'));?>">Add</a></p>
对于其他两个链接,除了动作名称之外。我第一次使用其中一个链接时,一切正常,但当它返回到起始页面时,所有链接都不再起作用。他们只是让我进入起始页面。在我的addAction()中,我做了我需要的事情,最后我使用以下代码返回到开始页面:
$this->_helper->redirector ( 'start' );
当再次加载起始页面时,“添加”链接指向起始页面,而不再指向“添加”页面。其他两个链接也会发生同样的事情。
有人可以帮助我吗?
答案 0 :(得分:2)
您正在尝试使用动作助手Redirector()
的简写版本$this->_helper->redirector ( 'start' );
为避免与实用程序方法版本混淆(因为我不知道确切的默认值是什么),我总是使用正确的表单。
//the redirector helper has to many options to comfortably short hand.
//gotoSimple(), gotoUrl() and gotoRoute() are all easy to use.
$this->_helper->getHelper('Redirector')->gotoSimple('action' => 'start', 'controller' => 'index')
使用实用程序方法_redirect(),尝试类似这样的东西(它接受网址):
$this->_redirect('/index/start');
答案 1 :(得分:0)
我认为start
必须是自己的路线。因此,您需要在使用url
视图助手时指定默认路由:
在start.phtml中,试试这个:
<p><a href="<?php echo $this->url(
array ('controller' => 'disc','action' => 'add'), 'default');
?>">Add</a></p>