在Yii2 REST API中一起使用JSON和JSONP格式

时间:2014-12-19 06:40:14

标签: php yii yii2 yii2-advanced-app

我是yiiframework的新手。

我想在Yii2 REST api中一起使用JSONP和JSON格式,这意味着如果api调用正常,响应得到json,如果用jsonp ajax调用api,得到JSONP结果,我在论坛或stackoverflow中找不到任何东西配置。我该怎么办?我将行为中的Response::FORMAT_JSON用于控制器,但我想在控制器的行为中一起使用Response::FORMAT_JSONResponse::FORMAT_JSONP。如何一起配置?

1 个答案:

答案 0 :(得分:2)

使用format类的yii\web\Response属性:

public class YourController extends Controller {
    /**
     * json/jsonp witching example
     */
    function actionJson(
        $callback = null
    ) {
        // retrieve data to be returned
        $data = array(
            // your data here
        );
        // set "fomat" property
        Yii::$app->getResponse()->format =
            (is_null($callback)) ?
                self::FORMAT_JSON : 
                self::FORMAT_JSONP;
        // return data
        return (is_null($callback)) ?
            $data :
            array(
                'data'     => $data,
                'callback' => $callback
            );
    }
}