2017-07-07 7 views
0

ビューに渡す前にエンティティのメンバ名を変更するエレガントな方法はありますか?私の例では、私はエンティティ製品を持っています。私の製品にはメンバーapplication_idがあります。私はそれをjsonに出力します。今私のFrontend Developerは、この値をapplicationId(アンダースコアなし)として受け取りたいと考えています。cakePHP3:レンダリング前にエンティティのメンバ名を変更する

私は、オブジェクトで他のオブジェクトなどを含むかなり複雑な構造体を返すので、ループ全体で結果セット全体を繰り返し、メンバー名を変更したくありません。だから私はエンティティを調べ、$ _mapのようなものを見つけて、カスタム名にメンバー名をマップすることができるようにしたいと考えましたが、何も見つかりませんでした。

beforeRenderでループを使用せずにこれを行う方法はありますか?仮想&隠しフィールドリスト が適用されているJSONにエンティティを変換する場合

答えて

1

manual

を言います。エンティティはJSONにも再帰的に変換されます。この は、ロードされたエンティティとその関連付けを熱心に実行すると、CakePHP が、関連するデータを正しい 形式に変換する処理を正しく処理することを意味します。

だから、あなたはあなたのEntotyで仮想プロパティを作成することができ、このよう

protected $_virtual = ['ApplicationId']; 

protected function _getapplicationId() 
{ 
    return $this->application_id; 
} 

はケーキの命名規則に対して少しだが、それは

+0

おかげで、十分に考えていなかったが動作します。私はまだそれを出力から削除するために$ _hiddenにapplication_idを追加する必要がありますが、それは大丈夫です。しかし面白いことに、_getapplicationId()の$ this-> application_idにアクセスしようとすると、XDebugが私に正しい値を示すにもかかわらず、nullです。私は_getapplicationId()を_getapplicationid()に変更しなければなりませんでした。これは、getapplicationIdが実際の値application_idを取得しようとしていると思われるInflectorの内部構造のためです。 – Seb

関連する問題