を使用して Yii2 で REST API を作成しましたActiveController
。actionIndex
すべてのモデルを返すのデフォルトの実装。私がやりたいことは、応答を送信する前に 1 つの属性の値を変更することです。たとえば、データベースに保存された名前だけで画像をアップロードしました。応答を送信する前に、ベース URL に画像名を埋め込みたいと考えています。インデックス メソッド全体をオーバーライドする必要がありますか、action
それともメソッド内の単一の属性を操作できますか?
1058 次
2 に答える
3
fields()
これを行う最も簡単な方法は、モデルのメソッドをオーバーライドすることだと思います。というモデル用に ActiveController を構成したとしYourFile
ます。次の関数をYourFile
モデルに追加すると、応答のすべてのモデルに完全な URL を追加できます。
public function fields() {
return [
'id',
'name' => function() {
return Url::base(true) . $this->name;
}
]
}
このように追加するとtoArray()
、モデルを呼び出すすべてのコードがこの結果を取得することになります。のみで発生させたい場合は、モデルActiveController
を拡張してそこにのみメソッドを含めることができるため、拡張バージョンで を構成できます。YourFile
fields()
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 に答える