我需要使用_get
所以我只是在User entity
进行了测试:
protected function _getName($name)
{
return $name . ' - FOOBAR';
}
所以在视图中我做了Debug($user)
,并且结果是:
'properties' => [
'id' => (int) 32,
'name' => 'Daniel Pedro', //<- Clean Value
'email' => 'daniel@gmail.com',
],
'dirty' => [],
'original' => [],
'virtual' => [],
'errors' => [],
您可以注意到属性name
的原始值为Daniel Pedro
,所以我认为我在_getName
做错了但是当我在表单中查看输入时,值是Daniel Pedro - FOOBAR
。
我的问题是,如何在Debug中显示变异值?
答案 0 :(得分:1)
使用可能的muatated值检查属性的最简单方法是提取可见属性,例如
debug($entity->extract($entity->visibleProperties()));
这不包括已在$_hidden
属性中定义为“隐藏”的属性,如果您也需要它们,那么您必须明确包含它们
debug($entity->extract(array_merge($entity->visibleProperties(), $entity->hidden())));
如果你想以某种方式在实体的调试输出中包含它,那么你将不得不覆盖EntityTrait::__debugInfo()
方法并在那里添加变异属性。
简单示例,在您的实体类中(您可以创建一个基本实体类,您的所有实体都会扩展,以便您在所有实体中都具有此功能):
public function __debugInfo()
{
$info = parent::__debugInfo();
$info['propertiesIncludingPossiblyMutatedValues'] =
$this->extract(array_keys($this->_properties));
return $info;
}
或者,如果您只想看到那些真正发生变异的那些:
public function __debugInfo()
{
$info = parent::__debugInfo();
$info['mutated'] = array_diff(
$this->extract(array_keys($this->_properties)),
$this->_properties
);
return $info;
}
这应该会让你了解事情是如何运作的。