Я ищу предложения по разумному подходу Cake к созданию URL-адреса, основанного на идентификаторе сеанса, который я могу поделиться с другими, чтобы увидеть те же результаты поиска, которые я вижу на моем конце.
Я знаю в стандартном php, я бы просто получил идентификатор сеанса и передал его URL. Но я думаю, что у Cake, вероятно, есть метод или подход для этой точной вещи (моя догадка). Я еще не смог найти что-то конкретное.
Любые идеи относительно наилучшего подхода к этому с помощью методов Cake? Или мне нужно будет изобрести колесо?
Вы спрашиваете об этом, потому что используете POST, и, следовательно, URL-адрес не включает параметры поиска, как это было бы через GET?
Я использую следующую конструкторскую парадигму для поиска во всех приложениях, которые я создаю.
Таким образом, код действия может выглядеть примерно так:
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
Я решил это:
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(); } ...
}