У меня есть форма поиска, которая имеет поле ввода текста, три флажка и предварительно выбранное значение по умолчанию в раскрывающемся списке на основе пользовательских данных из базы данных.
например. Если пользователь живет в сообществе 1, то в раскрывающемся списке в качестве значения по умолчанию выбирается 1.
Я хочу, чтобы CakePHP выполнял поиск в базе данных, отфильтрованный по этому значению, и вернуть результат с разбивкой на страницы. Это достаточно просто при нажатии кнопки отправки, но я хочу выполнять поиск при загрузке страницы без взаимодействия с пользователем.
Теперь в контроллере я попытался получить значение сообщества из другого места, кроме раскрывающегося списка:
if ($this->request->is('post)) {
//Perform normal search with the other input fields included.
} else {
//Do the filtered search only by commune value, which I get from a function.
}
Проблема в том, что нумерация страниц не будет работать. Это ожидаемо, поскольку при нумерации страниц используется GET. Когда я пытаюсь изменить страницу, это не сообщение, и условия поиска снова будут установлены только на значение значения сообщества, и я получаю ошибку в операторе SQL.
Извините, если мое объяснение выше немного сумбурно, но вам придется меня извинить, поскольку английский не является моим родным языком.
Я нужны предложения, как это сделать по-другому. Возможно ли это вообще? Я подозреваю, что есть простое решение этой проблемы, но я новичок в CakePHP и, похоже, не могу его понять.
Выполнение поиска
$conditions = $this->setSearchConditions($this->request->data);
$res = $this->paginate('Ad', array($conditions));
$this->set('res', $res);
//limit is set in public $paginate variable
Настройка условий поиска
private function setSearchConditions($data) {
$conditions = array();
// $this->log('Search: DATA', 'debug');
//$this->log($data, 'debug');
if ($this->request->is('post)) { //Submit-button is clicked, performing full search
//$this->log('Dette er en post', 'debug');
if ($data['Ad']['searchField']) { //Text searchfield is not empty, adding title or description to search criteria
$this->log('Søkefeltet er ikke tomt', 'debug');
$str_search = '%' . $data['Ad']['searchField'] . '%';
$conditions[] = array(
'OR' => array(
'Ad.title LIKE' => $str_search,
'Ad.description LIKE' => $str_search
)
);
}//if
if ($data['Ad']['commune_id']) { // Commune dropdown is not empty, adding commune_id to search criteria
$conditions[] = array(
'Ad.commune_id' => $data['Ad']['commune_id']
);
}//if
if ($data['Ad']['type_id']) { // Type checkboxes are not empty, adding type_id to search criteria
$orArray = array();
foreach ($data['Ad']['type_id'] as $type) {
$orArray[] = array('Ad.type_id' => $type);
}
$conditions[] = array(
'OR' => $orArray
);
}//if
} else {
$conditions[] = array(
'Ad.commune_id' => $this->getDefaultCommune();
):
}
return $conditions;
}
Подробнее здесь: https://stackoverflow.com/questions/149 ... down-value
CakePHP: автоматический поиск по заранее выбранному значению раскрывающегося списка. ⇐ Php
Кемеровские программисты php общаются здесь
1719268686
Anonymous
У меня есть форма поиска, которая имеет поле ввода текста, три флажка и предварительно выбранное значение по умолчанию в раскрывающемся списке на основе пользовательских данных из базы данных.
например. Если пользователь живет в сообществе 1, то в раскрывающемся списке в качестве значения по умолчанию выбирается 1.
Я хочу, чтобы CakePHP выполнял поиск в базе данных, отфильтрованный по этому значению, и вернуть результат с разбивкой на страницы. Это достаточно просто при нажатии кнопки отправки, но я хочу выполнять поиск при загрузке страницы без взаимодействия с пользователем.
Теперь в контроллере я попытался получить значение сообщества из другого места, кроме раскрывающегося списка:
if ($this->request->is('post)) {
//Perform normal search with the other input fields included.
} else {
//Do the filtered search only by commune value, which I get from a function.
}
Проблема в том, что нумерация страниц не будет работать. Это ожидаемо, поскольку при нумерации страниц используется GET. Когда я пытаюсь изменить страницу, это не сообщение, и условия поиска снова будут установлены только на значение значения сообщества, и я получаю ошибку в операторе SQL.
Извините, если мое объяснение выше немного сумбурно, но вам придется меня извинить, поскольку английский не является моим родным языком.
Я нужны предложения, как это сделать по-другому. Возможно ли это вообще? Я подозреваю, что есть простое решение этой проблемы, но я новичок в CakePHP и, похоже, не могу его понять.
Выполнение поиска
$conditions = $this->setSearchConditions($this->request->data);
$res = $this->paginate('Ad', array($conditions));
$this->set('res', $res);
//limit is set in public $paginate variable
Настройка условий поиска
private function setSearchConditions($data) {
$conditions = array();
// $this->log('Search: DATA', 'debug');
//$this->log($data, 'debug');
if ($this->request->is('post)) { //Submit-button is clicked, performing full search
//$this->log('Dette er en post', 'debug');
if ($data['Ad']['searchField']) { //Text searchfield is not empty, adding title or description to search criteria
$this->log('Søkefeltet er ikke tomt', 'debug');
$str_search = '%' . $data['Ad']['searchField'] . '%';
$conditions[] = array(
'OR' => array(
'Ad.title LIKE' => $str_search,
'Ad.description LIKE' => $str_search
)
);
}//if
if ($data['Ad']['commune_id']) { // Commune dropdown is not empty, adding commune_id to search criteria
$conditions[] = array(
'Ad.commune_id' => $data['Ad']['commune_id']
);
}//if
if ($data['Ad']['type_id']) { // Type checkboxes are not empty, adding type_id to search criteria
$orArray = array();
foreach ($data['Ad']['type_id'] as $type) {
$orArray[] = array('Ad.type_id' => $type);
}
$conditions[] = array(
'OR' => $orArray
);
}//if
} else {
$conditions[] = array(
'Ad.commune_id' => $this->getDefaultCommune();
):
}
return $conditions;
}
Подробнее здесь: [url]https://stackoverflow.com/questions/14911517/cakephp-automatic-search-on-pre-selected-dropdown-value[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия