问题描述
我在使用 Voyager 时遇到了一些问题。我可以创建属性的访问器,如 documentation 中所述。它可以很好地访问数据,但我还必须创建一个 Mutator 来在保存数据之前更改数据。显然,Voyager 没有实现,所以我尝试通过 Laravel way 来实现。它在常见环境中也能很好地工作,但出于某种原因,Voyager 存在不同的行为。
Mutator 在 Accessor 之后调用,即使只是浏览:
<?PHP
namespace App;
use Illuminate\Database\Eloquent\Model;
class Company extends Model
{
public function setNameAttribute($value){ // my mutator
$value = preg_replace("/[^a-zA-Z]/",'',$value);
$this->attributes['name'] = $value;
}
public function getNamebrowseAttribute(){ // my accessor
return $this->name . '...'; // example
}
}
发生了什么:
当我访问我的模型的浏览器时,getNamebrowseAttribute
被调用,因为它应该是,但之后,setNameAttribute
也被调用,这不应该发生,因为我正在浏览,而不是保存或更新模型。
我尝试调试代码,最后调用的 Voyager 文件是一个视图,来自 voyager/storage/framework/views/
,其中 $data
是模型:
if ($data->{$row->field.'_browse'}) {
$data->{$row->field} = $data->{$row->field.'_browse'}; // <-- this line
}
如您所见,它使用 ...browse
而不是 set...
感谢任何帮助:)
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)