Путь к идентификатору сеанса CakePHP или другой способ поделиться результатами URL - рекомендации приветствуются - PullRequest
0 голосов
/ 12 апреля 2011

Я ищу предложения по разумному подходу Cake к созданию URL-адреса на основе идентификатора сеанса, которым я могу поделиться с другими, чтобы увидеть те же результаты поиска, которые я вижу на своем конце.

Я знаю в стандартном phpЯ бы просто получил идентификатор сессии и передал его в URL.Но моя догадка Cake, вероятно, имеет метод или подход для этой конкретной вещи (моя догадка).Я пока не смог найти что-то конкретное.

Есть какие-нибудь идеи относительно лучшего подхода к этому с помощью методов Cake?Или мне нужно будет заново изобрести колесо на этом?

Ответы [ 2 ]

1 голос
/ 12 апреля 2011

Вы спрашиваете об этом, потому что вы используете POST и, следовательно, URL не включает параметры поиска, как это было бы через GET?

Я использую следующую парадигму дизайна для поиска во всех создаваемых мной приложениях.

  1. Форма поиска отправляется как POST.
  2. В действии контроллера, если форма отправляется как публикация, я извлекаю параметры поиска, а затем перенаправляю на URL-адрес, который включает (именованные *) параметры.

Таким образом, код действия может выглядеть примерно так:

function search() {
    if($this->RequestHandler->isPost()) {
        // let's say we extract parameters called $a and $b here
        $this->redirect(array(
            'action' => 'search',
            'a' => $a,
            'b' => $b
        )
        exit();
    )
    // perform the normal search operation
    // the 'a' and 'b' parameters can be accessed in the $this->params['named']
    // array, automatically extracted by the CakePHP router using the configuration below.
}

Что касается именованных параметров, я бы настроил это в моих маршрутах. Php:

Router::connectNamed(array('a', 'b'));

Это приводит к перенаправлению выше, создавая красивый, чистый URL, например:

http://example.com/controller/search/a:FOO/b:BAR
0 голосов
/ 13 апреля 2011

Я решил это:

search ( ... ) {
    if ($this->RequestHandler->isPost()) {
        $this->Session->write('search_form_sess', $this->data);
        $initial_url = $ApplicantAge . '/' . $SpouseAge . '/' . $NumberChildren . '/' . $Vision . '/' . $Zip;
        $this->redirect(array('action' => 'search', $initial_url));
        exit();
    }
...

}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...