Форма поиска CakePHP с пустыми переменными

1

Я пытаюсь сделать форму поиска в моем проекте cakephp 2.5. Вот мой взгляд, где создается форма:

<?php 
echo $this->Form->create('Product', array('action' => 'complete_search')); 
    echo $this->Form->input('searchName', array('label' => false, 'div' => false, 'class' => 'form-control', 'autocomplete' => 'off')); 
    echo $this->Form->input('searchCity', array('label' => false, 'div' => false, 'class' => 'form-control', 'autocomplete' => 'off'));
    echo $this->Form->button('Search', array('div' => false, 'class' => 'btn btn-sm btn-primary'));
echo $this->Form->end(); 
?>

Мои продуктыКонтроллер:

public function complete_search(){
    if (!empty($this->request->data['searchName']) && !empty($this->request->data['searchCity'])) {
        $keywordSearch = $this->request->data['searchName'];
        $keywordSearchCity = $this->request->data['searchCity'];
    }else{

        $keywordSearch = 'test';
        $keywordSearchCity = 'testCity';
    }

    $products = $this->Product->find('all', array(
        'recursive' => -1,
        'contain' => array(
            'Brand'
        ),
        'conditions' => array(
            'AND' => array(
                'Brand.active' => 1,
                'Product.active' => 1,
                'Product.date_discount >' => date('Y-m-d H:i:s'),
                'Product.name LIKE' => '%' . $keywordSearch . '%',
                'Brand.city LIKE' => '%'. $keywordSearchCity .'%'
            )
        ),
        'limit' => 200,
    ));

    $products = $this->paginate($products);

    $this->set(compact('products'));
}

И у меня есть complete_search.ctp, чтобы показать результаты.

Проблема в том, что $keywordSearch и $keywordCity всегда пусты... И я не знаю почему. Что случилось с моей формой?

Теги:
cakephp
cakephp-2.0

1 ответ

1
Лучший ответ

Измените это

if (!empty($this->request->data['searchName']) && !empty($this->request->data['searchCity'])) {
        $keywordSearch = $this->request->data['searchName'];
        $keywordSearchCity = $this->request->data['searchCity'];
    }else{

        $keywordSearch = 'test';
        $keywordSearchCity = 'testCity';
    }

К этому

$keywordSearch = 'test';
$keywordSearchCity = 'testCity';

if (!empty($this->request->data['Product']['searchName']) && !empty($this->request->data['Product']['searchCity'])) {
     $keywordSearch = $this->request->data['Product']['searchName'];
     $keywordSearchCity = $this->request->data['Product']['searchCity'];
 }
  • 1
    Ты совершенно прав! Спасибо за вашу помощь, я не думал об этом.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню