suchen

Heim  >  Fragen und Antworten  >  Hauptteil

php - 关于使用laravel 中的读取器(getAttribute)时遇到的问题

场景是:

在前台显示一个Users表里的tel字段时,电话号的后4位用*来化替。

我使用的方法是:

class User extends Model
{
    public function getTelAttribute () {
        return substr($this->attributes['tel'], 0, 7) . '****';
    }
}

如果这样写,一般的情况下是没问题的。

但是,当用户通过表单修改个人信息时,input中所显示的电话是

例:1391234**

我想解决的是:

在使用读取器(getAttribute)的情况下,如何在一定的条件下
一时取消到读取器(getAttribute)的动作,从而达到显示完整的电话号码呢?

PHP中文网PHP中文网2738 Tage vor727

Antworte allen(1)Ich werde antworten

  • 習慣沉默

    習慣沉默2017-05-16 13:00:48

    1. 做两个

    导出Array时隐藏一个,这样做有弊病,导出的JSON接口中,tel都是**

    protected $hidden = [
        'tel_original'
    ];
    
    function getTelAttribute() {
        return substr($this->attributes['tel'], 0, 7) . '****');
    }
    
    function getTelOriginalAttribute() {
        return $this->attributes['tel'];
    }

    2. 运行时替换

    不修改tel,但是在模板中显示时,用函数替换一下
    这样对导出JSON都没影响,只是每处显示的时候都需要用函数替换

    Antwort
    0
  • StornierenAntwort