示例#1
0
 public function actionSearch()
 {
     $objects = array();
     $criteria = new CDbCriteria();
     $criteria->alias = 'co';
     $criteria->condition = "is_active = 1 AND is_deleted = 0";
     $criteria->addCondition("lang_id = " . $this->lang);
     $criteria->addCondition("category_id = 1");
     //@todo - искать в реальной категории
     if (isset($_REQUEST['data'])) {
         $data = $_REQUEST['data'];
         if (is_array($data) && count($data)) {
             $criteria->join = "";
             $i = 0;
             foreach ($data as $fieldName => $items) {
                 $field = CatalogFilteredFields::model()->findByAttributes(array("category_id" => 1, "name" => $fieldName));
                 if (is_object($field) && is_array($items) && count($items)) {
                     $cond = '(';
                     $i1 = true;
                     foreach ($items as $item) {
                         if (is_numeric($item)) {
                             if (!$i1) {
                                 $cond .= "OR (`fv{$i}`.`field_id` = {$field->id} AND `fv{$i}`.`int_val` = {$item}) ";
                             } else {
                                 $cond .= "(`fv{$i}`.`field_id` = {$field->id} AND `fv{$i}`.`int_val` = {$item}) ";
                                 $i1 = false;
                             }
                         }
                     }
                     $cond .= ')';
                     $criteria->join .= "INNER JOIN `catalog_filtered_fields_values` AS `fv{$i}` ON `co`.`id` = `fv{$i}`.`object_id` " . "AND {$cond} ";
                     $i++;
                 }
             }
         }
     }
     //$criteria->group = "object_id";
     if (isset($_REQUEST['min_price']) && isset($_REQUEST['max_price'])) {
         //$criteria->join = "LEFT JOIN `catalog_objects` ON `catalog_filtered_fields_values`.`object_id` = `catalog_objects`.`id`";
         $criteria->addBetweenCondition('price', CatalogObjects::convertPrice($_REQUEST['min_price']), CatalogObjects::convertPrice($_REQUEST['max_price']));
     }
     $count = CatalogObjects::model()->count($criteria);
     $pages = new CPagination($count);
     $pages->pageSize = 2;
     $pages->applyLimit($criteria);
     $objects = CatalogObjects::model()->findAll($criteria);
     $this->renderPartial('objects', array('objects' => $objects, 'pages' => $pages));
 }
示例#2
0
<form action="/catalog/<?php 
echo $this->currentCategory->url;
?>
" name="catalog-filter" id="catalog-filter"></form>
<ul class="price_menu">
    <?php 
$min = CatalogObjects::convertPrice(CatalogObjects::getMinPrice($this->currentCategory->id));
$max = CatalogObjects::convertPrice(CatalogObjects::getMaxPrice($this->currentCategory->id)) + 10;
$minValue = isset($_REQUEST['min_price']) ? $_REQUEST['min_price'] : ($min < 500 ? $min : 500);
$maxValue = isset($_REQUEST['max_price']) ? $_REQUEST['max_price'] : ($max ? $max : 100000);
?>
    <li>
        <p><span><?php 
echo Localization::translate('filter_cost', $this->lang);
?>
</span></p>
        <div class="newForm">
            <form action="#" method="post">
                <div class="formCost">
                    <label for="minCost">От</label> <input type="text" id="minCost" name="min_price" value="<?php 
echo $minValue;
?>
" form="catalog-filter" />
                    <label for="maxCost">до</label> <input type="text" id="maxCost" name="max_price" value="<?php 
echo $maxValue;
?>
" form="catalog-filter" />
                </div>
                <div class="sliderCont">
                    <div id="slider" data-min="<?php 
echo $min < 500 ? $min : 500;