Zend查看url函数问题

时间:2014-05-29 16:47:24

标签: php zend-framework netbeans

首先,我想承认我没有做足够的搜索,主要是因为我不知道如何用适合搜索的单词。它是“在zend中获得干净的网址”还是“忽略了在zend中采取行动之后发生的事情”我真的不能很好地命名它,对此非常抱歉。指导我复制,我会立即删除它:>

现在,故事是这样的:
让我们在页面project/public/home中说我有一个链接

<a href="<?php  
echo $this->url(array(
            'controller' => 'test',
            'action' => 'index'
        ));
        ?>
           ">
               <?php echo $this->translate('go_to_test_index'); ?>
</a>  

这会让我project/public/home/test/index(默认情况下省略索引)

让我们说另一个带参数的链接

<a href="<?php
        echo $this->url(array(
            'controller' => 'message',
            'action' => 'add',
            'id' => 1//some value or another parameter
        ));
        ?>
           ">
               <?php echo $this->translate('go_to_add_message'); ?>
</a>  

这会带我到project/public/home/message/add/1直到现在我完全明白但是当我试图回去时会出现问题

<a href="<?php
        echo $this->url(array(
            'controller' => 'test',
            'action' => 'index'
        ));
        ?>
           ">
               <?php echo $this->translate('back'); ?>
</a>

据我所知,应该带我去project/public/home/test/index但是我得到project/public/home/test/index/id/1(索引没有省略)显示测试/索引页面,但是那个id参数是错误的< / p>

这个问题的正确名称是什么?是什么导致了它?我错过了url的一些参数吗?有关如何修复它的任何指示?

提前多多感谢

重复 Stackoverflow question

引用的文档Zend View Helpers

2 个答案:

答案 0 :(得分:2)

使用Url View Helper中的重置选项,如下所示。

<a href="<?php
        echo $this->url(array(
            'controller' => 'test',
            'action' => 'index'
        ), null, true);
        ?>
           ">
               <?php echo $this->translate('back'); ?>
</a>

以下是有关生成Urls的更多提示。

  1. 创建虚拟主机并将其指向项目公共目录。
  2. 使用BaseUrl帮助程序生成绝对网址。
  3. 使用路线创建路线并生成网址。
  4. 希望这有帮助。

答案 1 :(得分:1)

正如@Jay Bhatt所提到的那样,有一个reset param默认为false。

如果要重置新生成的链接中的所有当前请求参数,请将其设置为true

<a href="<?php 
    echo $this->url(
        array('controller' => 'test', 'action' => 'index'), 
        null, 
        true
    );
        ?>"><?php echo $this->translate('back'); ?></a>

请注意,如果您只想重置一个参数,可以将其设置为null

<a href="<?php echo $this->url(array(
    'controller' => 'test', 'action' => 'index', 'id' => null
));
    ?>"><?php echo $this->translate('back'); ?></a>

希望有所帮助