yii CFormModel 动态属性

发布于 2024-11-07 19:50:28 字数 1198 浏览 0 评论 0原文

我得到这样的形式

    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 和数组作为值,但没有任何效果。有什么想法吗?

i got such form

    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;
    }
}

i want to add dynamical field testF

i try to use __get\__set and array for values, but nothing work. any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄意 2024-11-14 19:50:28

如果动态意味着不需要,则可以将其添加为属性,就像使用 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'),
        );
    }
}

此外,您并没有完全遵循此类类型的主要使用模式。如果我是你,我会建议通过 gii 创建一些 CRUD 并检查模型和表单的使用模式。

If by dynamic you mean not required, you can add it as a property just as you have done with static_field. All attributes, or fields, are encapsulated member data of your FormModel class. So, if you wanted to add your dynamic_field attribute, you could add it in this manner:

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

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

Also, you're not exactly following the dominant usage pattern for this type of class. If I were you, I would suggest creating some CRUD through gii and examining the usage patterns for models and forms.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文