php - 关于使用laravel 中的读取器(getAttribute)时遇到的问题
本文介绍了php - 关于使用laravel 中的读取器(getAttribute)时遇到的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
场景是:
在前台显示一个Users表里的tel字段时,电话号的后4位用*来化替。
我使用的方法是:
class User extends Model
{
public function getTelAttribute () {
return substr($this->attributes['tel'], 0, 7) . '****';
}
}
如果这样写,一般的情况下是没问题的。
但是,当用户通过表单修改个人信息时,input中所显示的电话是
例:1391234**
我想解决的是:
在使用读取器(getAttribute)的情况下,如何在一定的条件下
一时取消到读取器(getAttribute)的动作,从而达到显示完整的电话号码呢?
解决方案
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
都没影响,只是每处显示的时候都需要用函数替换
这篇关于php - 关于使用laravel 中的读取器(getAttribute)时遇到的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文