tazam

Локальный обработчик формы поиска

Recommended Posts

Ребята тыкнете носом какой из файлов является локальным обработчиком поиска "search_form_generator.php" или "kvartira_search.php" ?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ни тот, ни другой.

Эти файлы - генераторы. Они в какой-то мере создают формы поиска.

А вот обрабатывает данные с них /apps/system/lib/frontend/grid/grid_constructor.php либо его наследник.

 

Если уточните суть проблемы смогу более точно подсказать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ни тот, ни другой.

Эти файлы - генераторы. Они в какой-то мере создают формы поиска.

А вот обрабатывает данные с них /apps/system/lib/frontend/grid/grid_constructor.php либо его наследник.

 

Если уточните суть проблемы смогу более точно подсказать.

дело в том что создал таблицу "удобства" в неё добавил такие колонки как "Интернет","Бойлер","Телевизор","Кондиционер","Стиральная машина"... дальше я как понял нужно колонки добавить в файл "standart_search_form.tpl" , но при добавлении нормально выводиться только интернет , а остальные чекбоксы "поиск>расширенный" создаются без имени просто чекбоксы , как мне подсказали нужно найти файл обработчика и дать ему команду .

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Понял о чем вы.

Тогда kvartira_search.php

Но не следует править в нем, так как он системный и затрется при обновлениях.

Посмотрите вот этот пост,, я тут описывал принцип http://www.etown.ru/s/topic/241-добавить-новые-поля-в-поиск/?p=2741

 

Там отличием будет то, что вместо 

$form_generator->get_single_select_box_by_query

у вас будет использоваться 

$form_generator->get_checkbox

ведь я так понимаю, что эти поля у вас чекбоксы.

 

Ознакомьтесь с постом по ссылке и если совсем не разберетесь, напишите, сделаем.

 

ПС. Ну и для поиска придется подключить локальный поиск. Так что ознакомьтесь заодно и с этим - http://wiki.sitebill.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Понял о чем вы.

Тогда kvartira_search.php

Но не следует править в нем, так как он системный и затрется при обновлениях.

Посмотрите вот этот пост,, я тут описывал принцип http://www.etown.ru/s/topic/241-добавить-новые-поля-в-поиск/?p=2741

 

Там отличием будет то, что вместо 

$form_generator->get_single_select_box_by_query

у вас будет использоваться 

$form_generator->get_checkbox

ведь я так понимаю, что эти поля у вас чекбоксы.

 

Ознакомьтесь с постом по ссылке и если совсем не разберетесь, напишите, сделаем.

 

ПС. Ну и для поиска придется подключить локальный поиск. Так что ознакомьтесь заодно и с этим - http://wiki.sitebill.ru/index.php?title=%D0%94%D0%BE%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5%D0%BB%D1%8C%D0%BD%D1%8B%D0%B5_%D0%BF%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80%D1%8B_%D0%BF%D0%BE%D0%B8%D1%81%D0%BA%D0%B0

добавил файл local_kvartira_search.php в указанное место , поменял гланую строчку с именем файла , давил в нём строчку 

if ( $this->getConfigValue('tv_in_form') ) {        	$this->template->assert('tv_list', $form_generator->get_checkbox($kvartira_model['data']['tv_id']));        }

в standart_search_form.tpl добавил строчку 

<tr><td>{$L_TV}</td><td><div class="select_box_td"><input type="checkbox" name="is_tv"{if isset($smarty.request.is_tv)} checked="checked"{/if} value="1" /></div></td></tr>

добавил в папку main файл tempelate_search.php в нем создал 

<?phpclass Template_Search extends SiteBill {    public function getParams(){        $params=array();        if(''!==$this->getRequestValue('tv')){    $params['tv'] = (int)$this->getRequestValue('tv');}        return $params;    }    public function run(){        $where_array=array();        $params=$this->getParams();        require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php');        $data_model = new Data_Model();        $data_model_array = $data_model->get_kvartira_model(false);        $data_model_array = $data_model_array['data'];        if(isset($params['tv']) && isset($data_model_array['tv'])){    $where_array[]=DB_PREFIX.'_data.tv='.$params['tv'];}        return array(            'where'=>$where_array,            'params'=>$params	        );    }}

результат 

 

как то странно вышло , что при создании новой вкладки "Аренды" назовём её так , появилось значение "Телевизор" в выборе и я его поставил , сохранился , выводит на новую вкладку нормально .

post-1965-0-00150600-1395098059_thumb.pn

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

{$L_TV} - это вы не задали, напишите там просто ТВ.

исправил всё равно на первой вкладке глухо , а ещё во второй при активации чекбокса находит всё что есть из объектьов , хотя там вообще нет такого значения )

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

исправил всё равно на первой вкладке глухо , а ещё во второй при активации чекбокса находит всё что есть из объектьов , хотя там вообще нет такого значения )

Адрес сайта скажите.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1

if ( $this->getConfigValue('tv_in_form') ) {
    $this->template->assert('tv_list', $form_generator->get_checkbox($kvartira_model['data']['tv_id']));
}

 

Тут замного. Условия не надо - оно проверяет настройки, а такого параметра как tv_in_form в настройках не существует. Оставьте только 

$this->template->assert('tv_list', $form_generator->get_checkbox($kvartira_model['data']['tv_id']));

2. У вас в формгенераторе фигурирует 'tv_id', но в запрос вы уже отправляете tv (DB_PREFIX.'_data.tv'). Но системное имя поля в форме практически всегда соотвествует имени колонки в БД. Тут, возможно, какое-то из названий не правильное.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас