1

Doctrine1.2モデルの配列シリアル化バージョンでCRUDタイプのAjaxリクエストを返すことがよくあるという単純な問題があります。execute()の結果の後にtoArray()メソッドを簡単に返すことができるようにしたいと思いますが、これにより、公開したくないモデルに関するデータが表示されます。簡単な例は、私のユーザーモデルで、パスワードとソルトが表示されることです。これらはすでにハッシュされた値であることに気づきましたが、JSON応答として返してほしくないものです。

Doctrine 1.2のマニュアルに目を通しましたが、探しているタイプの機能を提供するものは見つかりませんでした。結果を繰り返し処理して、非表示にしたい列を手動でunset()できることに気付きましたが、見落としていたよりネイティブなソリューションがそこにあることを望んでいます。

4

1 に答える 1

1

自分で作ってみませんtoArray()か?

これを行う場合は、すべてのBase*クラスから継承するsfDoctrineRecordクラスを拡張する必要があります。ドキュメントに記載されています。

あなたは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()3番目のパラメーターにフィールドの配列を使用してメソッドを使用すると、それらは結果から除外されます。

于 2012-07-31T07:38:53.953 に答える