Дополнительные параметры поиска: различия между версиями

Материал из CMS Sitebill Wiki
Перейти к навигации Перейти к поиску
Строка 6: Строка 6:
 
<pre>
 
<pre>
 
<?php
 
<?php
class Template_Search extends SiteBill {<br />
+
class Template_Search extends SiteBill {
     public function getParams(){<br />
+
     public function getParams(){
         $params=array();<br />
+
         $params=array();
         ....<br />
+
         ....
         return $params;<br />
+
         return $params;
     }<br />
+
     }
     public function run(){<br />
+
     public function run(){
         $where_array=array();<br />
+
         $where_array=array();
         $params=$this->getParams();<br />
+
         $params=$this->getParams();
         require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php');<br />
+
         require_once(SITEBILL_DOCUMENT_ROOT.'/apps/system/lib/model/model.php');
         $data_model = new Data_Model();<br />
+
         $data_model = new Data_Model();
         $data_model_array = $data_model->get_kvartira_model(false);<br />
+
         $data_model_array = $data_model->get_kvartira_model(false);
         $data_model_array = $data_model_array['data'];<br />
+
         $data_model_array = $data_model_array['data'];
         ....<br />
+
         ....
         return array(<br />
+
         return array(
             'where'=>$where_array,<br />
+
             'where'=>$where_array,
             'params'=>$params <br />
+
             'params'=>$params
         );<br />
+
         );
     }<br />
+
     }
}<br />
+
}
?>
 
 
</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 - массив параметров для формирования пейджера и сортировочных ссылок. Эти результаты будут добавлены к запросу, формируемому модулем поиска.