Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Api 如何在Yii2中定制函数和响应?_Api_Rest_Yii2 - Fatal编程技术网

Api 如何在Yii2中定制函数和响应?

Api 如何在Yii2中定制函数和响应?,api,rest,yii2,Api,Rest,Yii2,目前我正在Yii2框架上使用RESTAPI。我已经建立了基本功能并取消了一些主题 public function actions() { // GET ACTIONS $actions = parent::actions(); // UNSET ACTIONS unset($actions['delete'], $actions['create']); // CUSTOM FUNCTION FOR INDEX $actions['index']['

目前我正在Yii2框架上使用RESTAPI。我已经建立了基本功能并取消了一些主题

public function actions()
{
    // GET ACTIONS
    $actions = parent::actions();
    // UNSET ACTIONS
    unset($actions['delete'], $actions['create']);
    // CUSTOM FUNCTION FOR INDEX
    $actions['index']['prepareDataProvider'] = [$this, 'actionIndex'];

    return $actions;
}
我添加了自定义函数,目前它只是原始函数的一个副本

public function actionIndex()
{
    /* @var $modelClass \yii\db\BaseActiveRecord */
    $modelClass = $this->modelClass;
    return new ActiveDataProvider([
        'query' => $modelClass::find(),
    ]);
}
这将调用DB表产品。现在我想在
localhost/api/v1/products/1
回报是:

<response>
        <id>1</id>
        <product>Product 1</product>
</response>

1.
产品1
我也有产品的关系表,我想我的API返回

<response>
        <id>1</id>
        <product>Product 1</product>
        <related>
            <id>2</id>
            <id>5</id>
        </related>
</response>

1.
产品1
2.
5.
我不知道如何修改整个函数,而不仅仅是数据提供程序准备。我需要做2个SQL查询——第一个是获取产品数据,第二个是获取相关产品并合并主题作为响应

感谢您在advanced中的回答。

您可以在模型中添加
fields()
extraFields()
方法来实现此目的,如下所述:

因此,在您的情况下,您可以使用:

public function extraFields() {
  return ['__relation_name_here__'];
}

您不应该为此修改函数,还有另一个函数返回关于1项的详细信息。再次阅读RESTAPI文档。还有哪些函数可以返回详细信息?关于获取详细数据,只有GET和HEAD方法。。。然而,这根本不是我的问题。我想修改返回数据并寻找解决方案的函数。无论退货修改是什么。。。它可以是
状态:0,数据:[data]
您也可以命名返回的字段,在这种情况下,您可以命名为:
return['related'=>'\uu relationship\u name\u here']