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

Прайс-лист

СообщениеДобавлено: 09 авг 2017, 16:59
REM
Возникла необходимость указывать две цены в прайсе (от и до).
В таблице создал два дополнительных поля (costto_ru и costto_en) .
Внес изменения в в файлы Price.php
Код: Выделить всё

public function rules
() {
        return array(
            array('cat_id', 'required'),
            array('name', 'i18nRequired'),
            array('name, cost, costto', 'i18nLength', 'max' => 255),
            array('is_bold', 'boolean'),
            array($this->getI18nFieldSafe(), 'safe'),
            array('cat_id, date_created, active, is_bold', 'safe', 'on' => 'search'),
        );

    public function i18nFields(){
        return array(
            'name' => 'varchar(255) not null',
            'cost' => 'varchar(255) not null',
           'costto' => 'varchar(255) not null',
       );
    }
public function attributeLabels() {
        return array(
            '№' => tc('№'),
            'id' => tc('ID'),
            'cat_id' => tc('Разделитель'),
            'name' => tc('Наименование'),
            'name_separator' => tc('Текст в разделителе'),
            'cost' => tc('Цена до'),
                       'costto' => tc('Цена от'),
            'is_bold' => tc('Выделить жирным текстом'),
            'date_created' => tc('Дата добавления'),
            'dateCreated' => tc('Дата обновления'),
            'active' => tc('Статус'),
        );
    }
public function search() {
        $criteria = new CDbCriteria;
        $lang = Yii::app()->language;

        $criteria->compare($this->getTableAlias().'.cat_id', $this->cat_id);
        
        $criteria
->compare($this->getTableAlias().".name_{$lang}", $this->{'name_'.$lang}, true);
        $criteria->compare($this->getTableAlias().".cost_{$lang}", $this->{'cost_'.$lang}, true);
                $criteria->compare($this->getTableAlias().".costto_{$lang}", $this->{'costto_'.$lang}, true);
        $criteria->compare($this->getTableAlias().'.active', $this->active, true);
        $criteria->order = 'cat.sorter ASC, '.$this->getTableAlias().'.sorter ASC';

        $criteria->with = array('cat');

        return new CustomActiveDataProvider($this, array(
            'criteria' => $criteria,
            'pagination' => array(
                'pageSize' => /*param('adminPaginationPageSize', 20)*/ 100,
            ),
        ));
    }
    

Соответственно добавил поля в views/backend/_form.php, admin.php
views/index.php, widgetPrice_list.php
Но почему то не срабатывает пишет
CException

Не определено свойство "Price.costto".

Re: Прайс-лист

СообщениеДобавлено: 09 авг 2017, 20:36
andipas
REM писал(а):Не определено свойство "Price.costto".

Потому что определены 2 другие свойства
REM писал(а):costto_ru и costto_en

Re: Прайс-лист

СообщениеДобавлено: 10 авг 2017, 22:07
REM
Разобрался, связь через class ParentModel extends CActiveRecord не обратил внимания.

Да кстати, у Вас ошибка в разделе Прайс, на странице http://'my site"/price/backend/main/admin кнопка " Добавить наименование" ведет не в то место куда заявлено