通过toArray()序列化时隐藏列

时间:2012-07-31 06:46:59

标签: php orm doctrine crud doctrine-1.2

我有一个简单的问题,我常常使用Doctrine 1.2模型的数组序列化版本返回CRUD类型的Ajax请求。我希望能够在execute()结果之后简单地返回toArray()方法,但是,这将显示我不希望公开的模型的数据。一个简单的例子是在我的用户模型上显示密码和salt。虽然我意识到这些已经是散列值,但我不想将其作为JSON响应返回。

我已经倾倒了Doctrine 1.2手册,但没有找到任何提供我正在寻找的功能类型的东西。我意识到我可以迭代结果来手动取消设置()我希望隐藏的列,但我希望有一个更原生的解决方案,我忽略了。

1 个答案:

答案 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()方法和第三个参数的字段数组时,它们将从结果中排除。