2013-11-15 4 views
0

мне нужно «OnClick» действие на кнопке, так что я попадаю на что-то вроде этого:CakePHP - Создать поле поиска с кнопкой поиска

location/[textfield_data] 

Я используя cakephp, и в этот момент ближайший я достиг этого.

echo $this->Form->input('link', array('label' => false, "class" => "form-control input-medium", "placeholder" => __('Procurar'))); 

echo $this->Form->button('', array('class' => 'btn btn-primary icon-search icon-white' ,'onclick' => "location.href='/'")); 

С моим кодом, CakePHP является получение меня это:.

/[view]?data%5Blink%5D= 

[Вид] является текущей страницы я нахожусь в

нашел решение

Ive нашел решение таким образом.

echo $this->Form->input('link', array('label' => false, "class" => " form-control input-medium", "placeholder" => __('Procurar'), 'id' => 'search')); 

echo $this->Form->button(null, array('class' => 'btn btn-primary icon-search icon-white' ,'onclick' => "location.href='/mywantedurl/'+document.getElementById('search').value;")); 

Обратите внимание, что я не использовал любой форма-> создать или форма-> конец, в противном случае она не будет работать.

ответ

0

Я использую подобный код

echo $this->Form->input('link', array('label' => false, "class" => "form-control input-medium", "placeholder" => __('Procurar'), 'id' => 'search-field')); 
echo $this->Form->button('', array('class' => 'btn btn-primary icon-search icon-white' , 'id' => 'search-button')); 
$this->Js->get('#search-button'); 
$this->Js->event('click', 'edit()'); 

$this->Js->buffer 
(
    "function edit() 
    { 
     search_term = this.document.getElementById('search-field').value; 
     if(search_term) 
      window.location = \"/index.php/location/\" + search_term; 
     return false; 
    }" 
); 
+0

Я высоко ценю вашу помощь, но когда я разместил код, кнопка просто не реагировала, также нет ошибок JS в отладчике. –

+0

Я редактировал, была ошибка в if in js – arilia

1

Почему вы должны использовать JavaScript? Вместо этого используйте метод GET. Вы должны использовать GET вместо POST запросов для поиска любого удобного способа, таким образом, запрос может быть книгой обозначенной т.д.

Вы бы добиться этого с помощью $this->request->query вместо $this->request->data.

<?php 
// app/View/Locations/index.ctp 
echo $this->Form->create('Location', array('type' => 'get')); 
echo $this->Form->input('Location.keywords'); 
echo $this->Form->end('Search'); 

И тогда в вашем соответствующем контроллере:

<?php 
// app/Controller/LocationsController.php 
class LocationsController extends AppController { 

    public function search() { 
     if (!isset($this->request->query['keywords'])) { 
      throw new BadRequestException(); 
     } 

     $results = $this->Location->findByKeywords($this->request->query['keywords']); 

     $this->set('results', $results); 
    } 
} 

я не знаю реальную схему таблиц базы данных или ваши имена моделей, но выше, должны направить вас в правильном направлении.

+0

Оценил за вашу помощь, но я не хотел использовать какой-либо GET, так как мне нужен чистый URL-адрес без какого-либо URL-адреса. –

+0

Если это происходит в URL-адресе, либо в качестве параметра строки запроса, либо в сегменте, то он * нуждается в кодировке без ограничений. –

Смежные вопросы