Страница 1 из 2

Редактирование списка объявлений в админке!

СообщениеДобавлено: 07 апр 2016, 11:03
propawn
Доброго времени суток! Собственно не могу разобраться, как сделать чтобы в разделе объявления сделать фильтр по цене, чтобы можно было искать объявления в админке по цене >= значению которое я укажу.

http://imgur.com/ODPJMot

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 07 апр 2016, 13:16
andipas
В файле protected/modules/apartments/models/Apartment.php

в правилах модели

array('city_id, owner_active, active, type, obj_type_id, ownerEmail, ownerUsername, searchPaidService, deleted, visits, owner_id, price', 'safe', 'on' => 'search'),

в функции public function search() { настройте правило

Код: Выделить всё

$criteria
->addCondition($this->getTableAlias() . '.price >= :price' ); 
$criteria
->params[':price'] = $this->price;
 


работать будет только с выключенным модулем сезонные цены, для работы фильтра с сезонными ценами доработок больше, можем сделать платно, обращайтесь через форму контактов

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 12 апр 2016, 00:24
propawn
Спасибо большое, только вопрос, теперь когда заходишь в объявления, пока не введешь какое-то число в поле Цена, не появляются объявления, как сделать чтобы появлялись?

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 12 апр 2016, 08:59
Xpycm
Навскидку.
Попробуйте обернуть в условие if ($this->price)
Т.е должно получиться так:
Код: Выделить всё
if ($this->price) {
    
$criteria->addCondition($this->getTableAlias() . '.price >= :price' ); 
    
$criteria->params[':price'] = $this->price;

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 12 апр 2016, 12:10
propawn
Помогло, спасибо, еще вопрос:

Хочу сделать чтобы при введение в поле цена значения типа: 1000..3000

Строка делилась и объявления искались по цене от 1000 до 3000

Искал документацию на тему работы со строками в Yii и делением строки, но не нашел

Посредством PHP пытался сделать, но выдает ошибки

Код: Выделить всё
if ($this->price) {
            
$data->explode(".."params[':price']);
            
$criteria->addCondition($this->getTableAlias() . '.price >= :data[0] && .price <= :data[1]' ); 
            
$criteria->params[':price'] = $this->price;
        }  


Можете подсказать что не так делаю?

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 12 апр 2016, 12:37
Xpycm
Код: Выделить всё
$criteria->addCondition($this->getTableAlias() . '.price >= :data[0] && .price <= :data[1]' );  

Здесь мало того, что интерпрератор PHP выдаст ошибку, так ещё и ошибка запроса mySQL будет

И это:
Код: Выделить всё
$data->explode(".."params[':price']); 

в данном случае PHP совсем не понравится. Или может где-то есть объект $data с методом explode?

Наверное, стоит перед началом программирования ознакомиться с: http://php.net/manual/ru/ и http://www.mysql.ru/docs/

Код: Выделить всё
if ($this->price) {
            $data = explode("..", $this->price);
            $criteria->addCondition($this->getTableAlias() . '.price >= '.$data[0].' AND '.$this->getTableAlias() . '.price <= '.$data[1] ); 
        
} 

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 12 апр 2016, 12:39
propawn
Parse error: syntax error, unexpected '[' in C:\Denwer\OpenServer\domains\localhost\protected\modules\apartments\models\Apartment.php on line 482

На эту строку
Код: Выделить всё
$data->explode(".."params[':price']); 

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 12 апр 2016, 12:39
Xpycm
$data = explode("..", $this->price);

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 13 апр 2016, 11:44
propawn
Код: Выделить всё
CDbCommand не удалось исполнить SQL-запросSQLSTATE[42000]: Syntax error or access violation1064 You have an error in your SQL syntaxcheck the manual that corresponds to your MySQL server version for the right syntax to use near '))' at line 1

Теперь такая ошибка

Re: Редактирование списка объявлений в админке!

СообщениеДобавлено: 13 апр 2016, 13:23
Xpycm
Судя по всему одна скобка лишняя, или, может, сразу две

Мы можем реализовать вам функцию такого поиска платно. Обращайтесь: https://monoray.ru/contact