我有以下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}
应该怎么可能
答案 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');