Дополнительные параметры поиска: различия между версиями
Abushyk (обсуждение | вклад) |
Abushyk (обсуждение | вклад) |
||
Строка 6: | Строка 6: | ||
<pre> | <pre> | ||
<?php | <?php | ||
− | class Template_Search extends SiteBill { | + | class Template_Search extends SiteBill { |
− | public function getParams(){ | + | public function getParams(){ |
− | $params=array(); | + | $params=array(); |
− | .... | + | .... |
− | return $params; | + | return $params; |
− | } | + | } |
− | public function run(){ | + | public function run(){ |
− | $where_array=array(); | + | $where_array=array(); |
− | $params=$this->getParams(); | + | $params=$this->getParams(); |
− | require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php'); | + | require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php'); |
− | $data_model = new Data_Model(); | + | $data_model = new Data_Model(); |
− | $data_model_array = $data_model->get_kvartira_model(false); | + | $data_model_array = $data_model->get_kvartira_model(false); |
− | $data_model_array = $data_model_array['data']; | + | $data_model_array = $data_model_array['data']; |
− | .... | + | .... |
− | return array( | + | return array( |
− | 'where'=>$where_array, | + | 'where'=>$where_array, |
− | 'params'=>$params | + | 'params'=>$params |
− | ); | + | ); |
− | } | + | } |
− | } | + | } |
− | |||
</pre> | </pre> | ||
− | + | ||
Файл, при существовании, автоматически подключается модулем поиска и запускается методом run() | Файл, при существовании, автоматически подключается модулем поиска и запускается методом run() | ||
Версия 19:26, 29 сентября 2013
Для добавления дополнительных параметров поиска (кроме тех, что обрабатываются моделью или стандартным модулем поиска) можно использовать файл локального поиска.
Этот файл должен быть расположен в папке /template/frontend/имя_шаблона/main/ и иметь имя template_search.php.
Основной код состоит из
<?php class Template_Search extends SiteBill { public function getParams(){ $params=array(); .... 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']; .... return array( 'where'=>$where_array, 'params'=>$params ); } }
Файл, при существовании, автоматически подключается модулем поиска и запускается методом run()
Метод Template_Search::getParams() предназначен для сбора переменных запроса, приведения их к необходимому виду и принятия решения о включении параметра в список обрабатываемых. Например: if(!==$this->getRequestValue('parking')){
$params['parking'] = (int)$this->getRequestValue('parking');
} если не пуста переменная parking, она приводится к целочисельному виду и передается в обработку.
Метод Template_Search::run() получает собранные параметры и обрабатывает их явным образом. Иными словами этот метод должен знать, какие параметры ему придется обработать. Например: if(isset($params['parking']) && isset($data_model_array['parking'])){
$where_array[]=DB_PREFIX.'_data.parking='.$params['parking'];
} найдя параметр parking метод проверяет присутствует ли в модели такое поле и, если да, формирует часть для раздела WHERE запроса на выборку.
С таким же успехом мы мы могли бы передать из формы значение is_parking, но добавить в запрос выборку именно по полю parking.
Ответ от метода Template_Search::run() передается в виде массива элементов where - массив частей условий для WHERE запроса и params - массив параметров для формирования пейджера и сортировочных ссылок. Эти результаты будут добавлены к запросу, формируемому модулем поиска.