php - 關於使用laravel 中的讀取器(getAttribute)時遇到的問題
PHP中文网
PHP中文网 2017-05-16 12:58:48
0
1
724

場景是:

在前台顯示一個Users表裡的tel欄位時,電話號碼的後4位用*來化替。

我使用的方法是:

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

如果這樣寫,一般的情況下是沒問題的。

但是,當使用者透過表單修改個人資訊時,input所顯示的電話是

例:1391234**

我想解決的是:

在使用讀取器(getAttribute)的情況下,如何在一定的條件下
一時取消到讀取器(getAttribute)的動作,從而達到顯示完整的電話號碼呢?

PHP中文网
PHP中文网

认证高级PHP讲师

全部回覆(1)
習慣沉默

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都沒影響,只是每處顯示的時候都需要用函數替換

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!