搜尋

首頁  >  問答  >  主體

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中文网2789 天前751

全部回覆(1)我來回復

  • 習慣沉默

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

    回覆
    0
  • 取消回覆