CFormModel динамические поля

Общие вопросы по использованию фреймворка. Если не знаете как что-то сделать и это про Yii, вам сюда.
Ответить
kukuruku
Сообщения: 1310
Зарегистрирован: 2011.02.14, 11:36

CFormModel динамические поля

Сообщение kukuruku »

есть такой класс

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

class CC extends CFormModel
{
    public $static_field;
    public $fields;

    public function rules()
    {
        return array(
            array('static_field, testF', 'required')
        );
    }



    public function getForm()
    {
        return new CForm(array(
            'showErrorSummary'=>true,
            'elements'=>array(
                'static_field'=>array(),
                'testF'=>array(),
            ),
            'buttons'=>array(
                'submit'=>array(
                    'type'=>'submit',
                    'label'=>'Next'
                )
            )
        ), $this);
    }

    public function attributeLabels()
    {
        return array(
            'static_field' => 'static_field'
        );
    }


    public function  __get($name)
    {
        if (isset($this->fields[$name]))
            return $this->fields[$name];
        else
            return '';
    }

    public function  __set($name, $value)
    {
        $this->fields[$name] = $value;
    }
}
 
хочу добавить динамические поля, к примеру testF
в итоге не работает ничего, даже static_field не возращается
есть идеи?

Аватара пользователя
RSol
Сообщения: 325
Зарегистрирован: 2010.05.07, 08:36
Откуда: Северодонецк, Украина
Контактная информация:

Re: CFormModel динамические поля

Сообщение RSol »

Переопредели гетеры и сетеры, а также формирование правил валидации.

kukuruku
Сообщения: 1310
Зарегистрирован: 2011.02.14, 11:36

Re: CFormModel динамические поля

Сообщение kukuruku »

и...?
что переопределять? че с ними не так?

Аватара пользователя
alexk984
Сообщения: 433
Зарегистрирован: 2010.10.21, 15:03
Контактная информация:

Re: CFormModel динамические поля

Сообщение alexk984 »

Только была тема о динамических полях viewtopic.php?f=3&t=3100 суть в том что нельзя в CModel (а соответственно и в классах-наследниках) добавить поля динамически, нет такого метода, но пишут что Behavior решает эту проблему, у меня пока не было времени разобраться с этим.

zibert02
Сообщения: 203
Зарегистрирован: 2010.11.24, 17:29

Re: CFormModel динамические поля

Сообщение zibert02 »

не пойму почему нельзя, есть же get\set значит можно
я обнаружил только в том проблему что между постбеками не сохраняются значения, пришлось хранить не в $this->fields а в сесии, непонятно тогда чего обычные паблик проперти сохраняются

Аватара пользователя
alexk984
Сообщения: 433
Зарегистрирован: 2010.10.21, 15:03
Контактная информация:

Re: CFormModel динамические поля

Сообщение alexk984 »

zibert02 писал(а):не пойму почему нельзя, есть же get\set значит можно
я обнаружил только в том проблему что между постбеками не сохраняются значения, пришлось хранить не в $this->fields а в сесии, непонятно тогда чего обычные паблик проперти сохраняются
Получается нужно переопределить этот метод http://www.yiiframework.com/doc/api/1.1 ... set-detail потому что он устанавливает значения только для тех полей которые уже существуют.

kukuruku
Сообщения: 1310
Зарегистрирован: 2011.02.14, 11:36

Re: CFormModel динамические поля

Сообщение kukuruku »

поглядел код- чето сильно наворочено
ладно сделаю через сесии

Ответить