2018-12-05 11:31:23 117次浏览 1条回答 0 悬赏 10 金钱

比如我在 common/models 这个目录下有个 Operation 模型,然后在 backend/models/form 目录下有adFormbannerForm继承了 Operation,其中 adbanner 共有的属性都放在 Operation,也就是rulesattributeLabels 里面,adFormbannerForm 只是放他们各自有的属性,可是发现使用adForm 没法把 Operation 中的 rules 属性继承过来,好像是 adForm 里面的 rules 会覆盖掉Operation,而不是对 rules 进行追加,要怎么弄,才能是的两个文档的 rule 都拼起来,不用把Operation 里面的共有属性 rules 要重复写?

亿速云

最佳答案

  • drodata 发布于 2018-12-05 12:19

    rules() 和 attributeLabels() 返回的都是数组,在子类内调用 parent::rules()parent::attributeLabels() 可获取,之后自行组装即可,下面是自定义 attributeLabels() 的例子:

    // adForm.php
    
    use yii\helpers\ArrayHelper;
    
    public function attributeLabels()
    {
        // parent::attributeLabels() 内含有 Operation 内的属性标签
        return ArrayHelper::merge(parent::attributeLabels(), [
            // 这里放置 adForm 内的属性标签
            'status' => '状态',
        ]);
    }
    
    3 条回复
    回复于 2018-12-05 14:18

    那再问下adForm模型里面的beforeSave这个函数,能不能同样的方法继承Operation的beforeSave?

    回复于 2018-12-05 15:47

    类似的,parent::beforeSave()就行。
    顺便说一下哥们,你提的问题明显不是框架的问题,而是你的php面向对象的继承关系还不清楚,建议你趁机复习下PHP的基础,面向对象部分。

    回复于 2018-12-05 16:04

    好的,谢谢你的建议,我刚接触PHP三个月的时间,很多都是一头雾水哈

    没有找到数据。
您需要登录后才可以回答。登录 | 立即注册
clao
见习主管

clao

注册时间:2018-08-03
最后登录:2018-12-10
在线时长:6小时56分
粉丝1
金钱80
威望20
积分340

热门问题