【问题标题】:Zend framework redirector doesn't work properlyZend 框架重定向器无法正常工作
【发布时间】:2012-03-31 08:43:04
【问题描述】:

我正在尝试使用 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' );

当再次加载起始页时,“添加”链接指向起始页,不再指向添加页。其他两个链接也会发生同样的事情。

有人可以帮帮我吗?

【问题讨论】:

    标签: zend-framework


    【解决方案1】:

    您正在尝试使用动作助手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(),试试这样的方法(它接受一个url):

    $this->_redirect('/index/start');
    

    【讨论】:

      【解决方案2】:

      我认为start一定是它自己的路由。因此在使用url视图助手时需要指定默认路由:

      在 start.phtml 中,试试这个:

      <p><a href="<?php echo $this->url(
              array ('controller' => 'disc','action' => 'add'), 'default');
              ?>">Add</a></p>
      

      【讨论】:

      • 感谢您的回答。现在我的两个链接工作正常,除了第一个,我以同样的方式修改它们。这很奇怪。你的回答很有帮助。
      • 很高兴您的问题已解决。请考虑将此答案标记为已接受,以便遇到相同问题的任何人都可以立即找到答案。
      • 据我了解,您可以通过单击答案左侧的“白色”复选标记将其切换为绿色,将答案标记为已接受。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-23
      • 2015-08-09
      • 2014-07-01
      相关资源
      最近更新 更多