yii CFormModel динамические свойства - PullRequest
0 голосов
/ 18 мая 2011

я получил такую ​​форму

    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

Я пытаюсь использовать __get\__set и массив для значений, но ничего не получается. есть идеи?

1 Ответ

1 голос
/ 18 мая 2011

Если под динамическим вы подразумеваете не обязательный, вы можете добавить его как свойство, как вы это сделали со static_field. Все атрибуты или поля являются инкапсулированными данными члена вашего класса FormModel. Итак, если вы хотите добавить свой атрибут dynamic_field, вы можете добавить его следующим образом:

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

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

Кроме того, вы не совсем следуете доминирующей схеме использования для этого типа класса. На вашем месте я бы предложил создать CRUD с помощью gii и изучить шаблоны использования моделей и форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...