YII2 rest API中的“NetworkError:405 Method Not Methoded”

时间:2015-09-16 12:45:31

标签: php rest yii2

我正在使用Yii2 rest API,当我调用enquiryontroller的create action时,我收到此错误:“NetworkError:405 Method Not Allowed”。

我还会查看YII2文档,但无法跟踪我的问题。

请检查并恢复,这将是一个很大的帮助。

这是控制器代码,即EnquiryController.php:

<?php
namespace frontend\controllers;
use Yii;
use common\models\Enquiry;
use yii\filters\ContentNegotiator;
use yii\web\Response;
use yii\filters\AccessControl;
use yii\rest\ActiveController;
use yii\filters\auth\HttpBearerAuth;
use yii\filters\VerbFilter;
use yii\data\ActiveDataProvider;


class EnquiryController  extends ActiveController
{
    /**
     * @inheritdoc
     */
    public $modelClass = 'common\models\Enquiry';
    public $serializer = [
        'class' => 'yii\rest\Serializer',
        'collectionEnvelope' => 'items',
    ];
    public function behaviors()
    {
        $behaviors = parent::behaviors();
        $behaviors['authenticator'] = [
            'class' => HttpBearerAuth::className(),

        ];
        $behaviors['contentNegotiator'] = [
            'class' => ContentNegotiator::className(),
            'formats' => [
                'application/json' => Response::FORMAT_JSON,
            ],
        ];





        return $behaviors;
    }


    public function actions()
    {
        $actions = parent::actions();

        // disable the "delete" and "create" actions
        unset($actions['create']);
        unset($actions['delete'], $actions['view']);
        unset($actions['index']);
        // customize the data provider preparation with the "prepareDataProvider()" method

        return $actions;
    }

    public function actionCreate()
    {

        $model = new Enquiry();
        return Yii::$app->getRequest()->getBodyParams();

        if ($model->load(Yii::$app->getRequest()->getBodyParams(), '') && $model->validate()) {

            $model->slug = \common\components\Helper::slugify($model->title);
            $model->user_id = Yii::$app->user->id;
            $model->save();
            //mail functionality
            return true;
        }
        return $model;

    }

}

和config / main-local.php中的代码:

'urlManager' => [
            'class' => 'yii\web\UrlManager',
            'baseUrl' => $baseUrl,
            'enablePrettyUrl' => true,
            'showScriptName' => false,
            //'enableStrictParsing' => true,
            'rules' => [
                ['class' => 'yii\rest\UrlRule', 'controller' =>['api'],  'pluralize'=>true],
            ],

        ],

    ],
    'as access' => [
        'class' => 'mdm\admin\components\AccessControl',
        'allowActions' => [
           'site/*',
            'api/login',
            'profile/*',
            'api/activate-user',
            'api/contact',
            'home/*',
            'post/*', 
            'pages/*', 
            'categories/*',
            'guestbook/*',
            'faq/*',
            'news/*',
            'events/*',
            'enquiry/*',
            'partners/*',
            'api/signup'// add or remove allowed actions to this list
        ]
    ], 

1 个答案:

答案 0 :(得分:1)

查看this guide

   // disable the "delete" and "create" actions
unset($actions['delete'], $actions['create']);

因为在您的代码中禁用了创建,删除,查看和索引操作

public function actions()
{
    $actions = parent::actions();

    // disable the "delete" and "create" actions ????? 
    unset($actions['create']);    ////????
    unset($actions['delete'], $actions['view']); ///  ????
    unset($actions['index']);   ////????
    // customize the data provider preparation with the "prepareDataProvider()" method

    return $actions;
}