Intereting Posts
Почему «нет такого файла или каталога … autoload.php» при доступе к приложению Laravel? Как найти неиспользуемые функции в PHP-проекте Лучший способ проверить API REST? Получить массив массива рекурсивно и создать выделенную строку подчеркивания Проверка даты, которая выпадает на рабочий день или на выходные? Отправить электронное письмо нескольким получателям на основе выбранной опции в php? PHP scandir URL-адреса получить имя текущего скрипта PHP в файле include Отправлять электронную почту с разрывами строк, используя mail () в php mysqli bind_param не устанавливает ошибку $ stmt-> или $ stmt-> errno PHP file_get_contents () и настройки заголовков запросов Настройка значка продажи продукта JQuery ajax xhr 100% завершено до запуска? Как проверить, имеет ли изображение прозрачность с помощью GD? Использование PHP exec () дает ошибку: Fatal: Нет такого файла или каталога; вы установили

Поиск с двумя полями не обязательно

Я хотел бы выполнить функцию поиска на своем веб-сайте. В этом исследовании будут показаны продукты, основанные на названии продукта и его местонахождении. Мой взгляд :

<?php echo $this->Form->create('Product', array('type' => 'GET')); ?> <div class="col col-sm-4"> <?php echo $this->Form->input('search', array('label' => false, 'div' => false, 'class' => 'form-control', 'autocomplete' => 'off', 'value' => $search)); ?> </div> <div class="col col-sm-2"> <?php echo $this->Form->input('searchCity', array('label' => false, 'div' => false, 'class' => 'form-control', 'autocomplete' => 'off')); ?> </div> <div class="col col-sm-3"> <?php echo $this->Form->button('Search', array('div' => false, 'class' => 'btn btn-sm btn-primary')); ?> </div> <?php echo $this->Form->end(); ?> 

Два поля поиска: одно для имени и второе для местоположения.

Мой контроллер (работал только для одного поля поиска):

 if(!empty($this->request->query['search']) || !empty($this->request->data['name'])) { $search = empty($this->request->query['search']) ? $this->request->data['name'] : $this->request->query['search']; $search = preg_replace('/[^a-zA-Z0-9 ]/', '', $search); $terms = explode(' ', trim($search)); $terms = array_diff($terms, array('')); $conditions = array( 'Brand.active' => 1, 'Product.active' => 1, 'Product.date_discount >' => date('Ymd H:i:s') ); foreach($terms as $term) { $terms1[] = preg_replace('/[^a-zA-Z0-9]/', '', $term); $conditions[] = array( 'OR' => array( array('Product.name LIKE' => '%' . $term . '%'), //array('Brand.city LIKE' => '%' . $this->request->query['searchCity'] . '%') ) ); } $products = $this->Product->find('all', array( 'recursive' => -1, 'contain' => array( 'Brand' ), 'conditions' => $conditions, 'limit' => 200, )); if(count($products) == 1) { return $this->redirect(array('controller' => 'products', 'action' => 'view', 'slug' => $products[0]['Product']['slug'])); } $terms1 = array_diff($terms1, array('')); $this->set(compact('products', 'terms1')); } 

Никакие поля поиска не являются обязательными. Если используется только поле поиска имени, оно отображает все продукты на основе имени продукта независимо от местоположения. Если только поле поиска города, оно покажет все продукты в местоположении. Если и то, и другое, он отобразит все продукты на основе имени и местоположения.

Я не знаю, что изменить, чтобы сделать это. Я попытался сделать еще один if(!empty($this->request->query['searchCity']) если я разместил выше, но это не сработало (скопируйте вставьте первые, если и я изменил условия). Я делаю?

Благодарю.