0

を使用して Yii2 で REST API を作成しましたActiveControlleractionIndexすべてのモデルを返すのデフォルトの実装。私がやりたいことは、応答を送信する前に 1 つの属性の値を変更することです。たとえば、データベースに保存された名前だけで画像をアップロードしました。応答を送信する前に、ベース URL に画像名を埋め込みたいと考えています。インデックス メソッド全体をオーバーライドする必要がありますか、actionそれともメソッド内の単一の属性を操作できますか?

4

2 に答える 2

3

fields()これを行う最も簡単な方法は、モデルのメソッドをオーバーライドすることだと思います。というモデル用に ActiveController を構成したとしYourFileます。次の関数をYourFileモデルに追加すると、応答のすべてのモデルに完全な URL を追加できます。

public function fields() {
    return [
        'id',
        'name' => function() {
            return Url::base(true) . $this->name;
        }
    ]
}

このように追加するとtoArray()、モデルを呼び出すすべてのコードがこの結果を取得することになります。のみで発生させたい場合は、モデルActiveControllerを拡張してそこにのみメソッドを含めることができるため、拡張バージョンで を構成できます。YourFilefields()ActiveController

于 2016-06-23T06:23:39.707 に答える
1

特定のフィールドの表示名を変更することもできます。

class User extends \yii\db\ActiveRecord implements  \yii\web\IdentityInterface {    
/**     * API safe fields     */    
public function fields()    {

    return [            
        'id',            
        'email_address' => 'email',            
        'first_name',            
        'last_name',            
        'full_name' => function($model) {                
            return $model->getFullName();            
        },            
        'updated_at',            
        'created_at'        
    ];    
} 

}

ここで完全なチュートリアルを参照してください: http://p2code.com/post/configuring-activecontroller-display-fields-yii-2-21

于 2016-10-27T13:10:13.540 に答える