现在我有一个类型转换器,从string
到我的User::class
,设置如下.顺便说一下,我只是把它用于User类,我有一些特定的User对象,我不想持久化,这就是为什么它只是反序列化他们:
class UserConverter extends AbstractTypeConverter
{
protected $priority = 1;
protected $sourceTypes = ['string'];
protected $targetType = User::class;
public function convertFrom($source, string $targetType,
array $convertedChildProperties = [],
PropertyMappingConfigurationInterface $configuration = null)
{
return unserialize($source);
}
}
注册后,它按预期工作,例如,从Fluid表单到Controller操作,序列化对象自动反序列化。
这适用于单个属性,例如$report->user
。我尝试对数组属性实现同样的效果,例如$report->users
。因此我做了:
class UserArrayConverter extends AbstractTypeConverter
{
protected $priority = 1;
protected $sourceTypes = ['array'];
protected $targetType = 'array';
public function convertFrom($source, string $targetType,
array $convertedChildProperties = [],
PropertyMappingConfigurationInterface $configuration = null)
{
return ['TODO'];
}
}
但是在调试TODO行时,我发现执行线程永远不会到达它,当然,我得到的$report->users
是字符串数组(序列化对象),而不是Users数组。
我应该如何创建TypeConverter,以便它可以将字符串数组转换为用户数组?
打印格式3:10.4,PHP:7.4
提前感谢!
1条答案
按热度按时间h43kikqp1#
您应该使用第一个属性Map器,并在initializeAction中进行操作。
未经测试,但这应该是方法。