Laravel 航海者突变器

问题描述

我在使用 Voyager 时遇到了一些问题。我可以创建属性的访问器,如 documentation 中所述。它可以很好地访问数据,但我还必须创建一个 Mutator 来在保存数据之前更改数据。显然,Voyager 没有实现,所以我尝试通过 Laravel way 来实现。它在常见环境中也能很好地工作,但出于某种原因,Voyager 存在不同的行为

MutatorAccessor 之后调用,即使只是浏览:

<?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 (将#修改为@)