我有一个简单的问题,我常常使用Doctrine 1.2模型的数组序列化版本返回CRUD类型的Ajax请求。我希望能够在execute()结果之后简单地返回toArray()方法,但是,这将显示我不希望公开的模型的数据。一个简单的例子是在我的用户模型上显示密码和salt。虽然我意识到这些已经是散列值,但我不想将其作为JSON响应返回。
我已经倾倒了Doctrine 1.2手册,但没有找到任何提供我正在寻找的功能类型的东西。我意识到我可以迭代结果来手动取消设置()我希望隐藏的列,但我希望有一个更原生的解决方案,我忽略了。
答案 0 :(得分:1)
为什么不建立自己的toArray()
?
如果要这样做,则必须扩展从所有Base *类继承的sfDoctrineRecord类。 It is describe in the doc
您必须将configureDoctrine()
放在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()
方法和第三个参数的字段数组时,它们将从结果中排除。