Отправка формы CakePHP с результатами в URL

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

Я отправляю этот код:

 <?php echo $form->create('Search', array('action' => 'results', 'type' => 'post')); ?>
    <?php

            $options = array
            (
                'size' => 45,
                'id' => 'search',
                'tabindex' => 1,
                'maxlength' => 250
            );

            echo $form->text('Search.query', $options);
        ?>

Поэтому, когда я отправляю форму со словами «Hello World», я хочу, чтобы результирующий URL-адрес был:

 [domain]/searches/results/Hello+World

person cdub    schedule 05.06.2011    source источник


Ответы (1)


Вам нужно будет сделать перенаправление, чтобы получить этот точный URL. Отправка формы с использованием GET приведет к /searches/results?SearchQuery=Hello+World. На мой вкус, это было бы вполне адекватно, но если вам нужен красивый URL-адрес, сделайте это в своем контроллере:

class SearchesController extends AppController {
    public function results($query = null) {
        if (!$query && $this->data) {
            $this->redirect(array('action' => 'searches', $this->data['Search']['query']));
        }

        // search
     }
}

Обратите внимание, что для этого требуется один дополнительный обмен данными с сервером.

person deceze♦    schedule 05.06.2011
comment
у меня проблемы, когда я ищу слова, в которых есть пробел... кажется странным - person cdub; 05.06.2011
comment
Какая беда конкретно? Примеры? - person deceze♦; 05.06.2011
comment
неважно, какие-то проблемы с кэшированием и отладочный код все портит - person cdub; 05.06.2011
comment
также добавлено еще одно предложение if, в котором указано, что если $query и $this-›data существуют, то они также должны быть равны, иначе перенаправление - person cdub; 05.06.2011