Php 通过toArray()序列化时隐藏列
我有一个简单的问题,我经常返回CRUD类型的Ajax请求以及Doctrine 1.2模型的数组序列化版本。我希望能够在execute()结果之后简单地返回toArray()方法,但是,这将显示关于我不希望公开的模型的数据。一个简单的例子是在我的用户模型上显示密码和salt。虽然我意识到这些已经是散列值,但我不希望将其作为JSON响应返回Php 通过toArray()序列化时隐藏列,php,orm,doctrine,crud,doctrine-1.2,Php,Orm,Doctrine,Crud,Doctrine 1.2,我有一个简单的问题,我经常返回CRUD类型的Ajax请求以及Doctrine 1.2模型的数组序列化版本。我希望能够在execute()结果之后简单地返回toArray()方法,但是,这将显示关于我不希望公开的模型的数据。一个简单的例子是在我的用户模型上显示密码和salt。虽然我意识到这些已经是散列值,但我不希望将其作为JSON响应返回 我已经翻阅了Doctrine 1.2手册,但没有找到任何提供我正在寻找的功能类型的内容。我意识到我可以迭代结果来手动取消设置()我想要隐藏的列,但我希望有一个我
我已经翻阅了Doctrine 1.2手册,但没有找到任何提供我正在寻找的功能类型的内容。我意识到我可以迭代结果来手动取消设置()我想要隐藏的列,但我希望有一个我忽略的更原生的解决方案 为什么不构建自己的
toArray()
如果要这样做,必须扩展从所有基类继承的sfDoctrineRecord类
您必须将configuredoctor()
放入config/ProjectConfiguration.class.php
中
然后你会有这样一节课:
class myDoctrineRecord extends sfDoctrineRecord
{
}
因此,您可以在此处轻松添加自定义toArray()
:
class myDoctrineRecord extends sfDoctrineRecord
{
public function toArray($deep = true, $prefixKey = false, array $excludeFields = array())
{
// do every thing like the original toArray
// but when a column match one entry in $excludeFields, don't add it
}
}
因此,当对第三个参数的字段数组使用
toArray()
方法时,它们将被排除在结果之外。为什么不构建自己的toArray()
如果要这样做,必须扩展从所有基类继承的sfDoctrineRecord类
您必须将configuredoctor()
放入config/ProjectConfiguration.class.php
中
然后你会有这样一节课:
class myDoctrineRecord extends sfDoctrineRecord
{
}
因此,您可以在此处轻松添加自定义toArray()
:
class myDoctrineRecord extends sfDoctrineRecord
{
public function toArray($deep = true, $prefixKey = false, array $excludeFields = array())
{
// do every thing like the original toArray
// but when a column match one entry in $excludeFields, don't add it
}
}
因此,当将toArray()
方法与第三个参数的字段数组一起使用时,它们将从结果中排除