Как реализовать значение поиска в качестве параметра URL в Zend - PullRequest
0 голосов
/ 19 декабря 2011

У меня следующий 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>

Когда я нажимаю "Отправить", я хочу, чтобы URL был

domain.com / users / index / search / {search_word}.И нужно также разбить на страницы.

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

Как это должно быть возможно

Ответы [ 2 ]

0 голосов
/ 19 декабря 2011

Вы можете установить действие формы на index/search/.Но я думаю, что он не может перенаправить на index/search/keywords

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

Также вы можете перенаправить на действие, начиная с вашего текущего каталога.

$this->_redirect('index/search/keywords/values');
0 голосов
/ 19 декабря 2011

В форме измените method="post" на method="get".Это не будет устанавливать URL-адрес так, как вам нужно, однако будет помещать поиск в URL-адрес как запрос: domain.com/users/?search=my+keyword+here&submit=Search

В качестве альтернативы, вы контролер перенаправили форму, как только она была получена в этой структуре URL-адреса?

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

Это всего лишь пример.Что он делает, так это проверяет, была ли отправлена ​​форма (по почте - никаких изменений в вашей форме не требуется).Если форма действительна, тогда перенаправьте на другой URL.Первый параметр gotoRouteAndExit - это массив параметров;в этом случае имя параметра - «поиск», а значение извлекается из формы.Вам нужно будет создать маршрут (в этом коде он называется searchRoute) в вашем файле начальной загрузки.

...