如何在zend中将搜索值实现为url参数

时间:2011-12-19 08:57:31

标签: zend-form zend-framework

我有以下html

<form method="post" action="" id="formsearch">
    <table>
        <tr>
            <td>Keyword</td>
            <td><input type="text" name="search" id="search" value="<?php echo $this->search?>" /></td>
            <td><input type="submit" value="Search" /></td>
        </tr>
    </table>
    </form>

当我按提交时,我希望网址

  

domain.com/users/index/search/ {search_word}。并且还需要分页。

     

domain.com/users/index/page/2/search/ {search_word}

应该怎么可能

2 个答案:

答案 0 :(得分:0)

在表单中,将method="post"更改为method="get"。这不会根据需要设置网址,但会将搜索结果作为查询进入网址:domain.com/users/?search=my+keyword+here&submit=Search

或者,让控制器在接收到此网址结构后重定向表单吗?

//controller
if($this->getRequest()->isPost() and $form->isValid($this->getRequest()->getPost())
{
  $this->_helper->redirecter->gotoRouteAndExit(array('search' => $form->getData('search')), 'searchRoute');
}

这只是一个例子。它正在做的是检查表单是否已提交(通过邮寄 - 表格不需要更改)。如果表单有效,则重定向到另一个URL。 gotoRouteAndExit的第一个参数是一个参数数组;在这种情况下,参数名称为“search”,并且该值从表单中获取。您需要在引导程序文件中创建路径(在此代码中名为searchRoute)。

答案 1 :(得分:0)

您可以将表单操作设置为index/search/。但我认为它无法重定向到index/search/keywords

$form->setAction('/index/search');

此外,您可以从当前目录重定向到操作。

$this->_redirect('index/search/keywords/values');