2013-07-19 3 views
0

У меня есть форма, которая отправляет данные через GET, какВ том числе параметр GET в маршрутах и ​​рамки .html страницы

Что означает, когда я делаю:

echo $this->Form->create('Search', array('type'=>'get', 'url'=> array('controller'=>'searches','action'=>'results'))); 
echo '<div class="search-box">'; 
echo $this->Form->input('search', array(
    'class' => 'search-input', 
    'placeholder' => 'Search Domain Names', 
    'label'=>false)); 
echo $this->Form->input('', array(
    'class' => 'search-icon', 
    'label' => false, 
    'type' => 'submit' 
    )); 
echo $this->Form->end(); 
    ?> 

Я получаю URL как: example.com/Searches/results?search=asdadasdasd

Я хочу обрамляют маршруты, такие, что я получаю следующий URL:

example.com/search/asdadasdasd.html

Я посмотрел на: http://book.cakephp.org/2.0/en/development/routing.html

меня, как получить расширение: http://book.cakephp.org/2.0/en/development/routing.html#file-extensions

Но, как я буду получать искать запрос внутри?

Благодаря

ответ

0

Это невозможно с самого CakePHP, при создании формы он не знает о сроке поиска, так как он еще не существует, поэтому генерации такой URL придется сделать динамически при подаче форма, то есть на стороне пользователя, для которой требуется JavaScript.

Проще всего было бы использовать серверную сторону URL rewriting.

Вот пример (отлично работают в app/webroot/.htaccess), он проверяет строку запроса для ключа search, и использует его значение для переадресации в случае, если путь к URL соответствует /searches/results (оба, путь и строка запроса обрабатываются нечувствительны к регистру):

RewriteCond %{QUERY_STRING} ^search=(.*)$ [NC] 
RewriteRule ^searches/results$ /search/%1.html? [NC,R=302,L] 

Это перезаписать URLs как /searches/results?search=whatever к /search/whatever.html.

+0

Это было быстро! Я опаздываю. ОК! Да, позвольте мне попробовать. – Karma