【发布时间】:2017-07-13 15:18:15
【问题描述】:
我在 YII2 中创建 API,每个请求都运行良好,但在 PUT 请求中我遇到错误
未知属性 – yii\base\UnknownPropertyException
设置未知属性:yii\filters\auth\HttpBearerAuth::formats
这是我的堆栈跟踪
在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Object.php 第 161 行 152153154155156157158159160161162163164165166167168169170
*/ 公共函数 __set($name, $value) { $setter = '设置' 。 $名称; if (method_exists($this, $setter)) { $this->$setter($value); } elseif (method_exists($this, 'get' . $name)) { throw new InvalidCallException('设置只读属性:' . get_class($this) . '::' . $name); } 别的 { throw new UnknownPropertyException('设置未知属性:' . get_class($this) . '::' . $name); } }/**
- 检查是否设置了属性,即已定义且不为空。 *
- 不要直接调用这个方法,因为它是一个 PHP 魔术方法,
- 将在执行
isset($object->property)时被隐式调用。 *- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\BaseYii.php 第 525 行 – yii\base\Object::__set('formats', ['application/json' => 'json'])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Object.php 第 105 行 – yii\BaseYii::configure(yii\filters\auth\HttpBearerAuth, ['only' => ['index', 'view', 'create', 'update', ...], 'formats' => ['application/json' => 'json']])
- yii\base\Object::__construct(['only' => ['index', 'view', 'create', 'update', ...], 'formats' => ['application/json ' => 'json']])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\di\Container.php 第 381 行 – ReflectionClass::newInstanceArgs([['only' => ['index', 'view', 'create', 'update', ...], 'formats' => ['application/json' => 'json']]])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\di\Container.php 第 156 行 – yii\di\Container::build('yii\filters\auth\HttpBearerAuth', [], ['only' => ['index', 'view', 'create', 'update', ...], 'formats' => ['application/json' => 'json']])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\BaseYii.php 第 344 行 – yii\di\Container::get('yii\filters\auth\HttpBearerAuth', [], ['only' => ['index', 'view', 'create', 'update', ...], 'formats' => ['application/json' => 'json']])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Component.php 第 667 行 – yii\BaseYii::createObject(['class' => 'yii\filters\auth\HttpBearerAuth', 'only' => ['index', 'view', '创建','更新',...],'格式' => ['应用程序/json' => 'json']])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Component.php 第 651 行 – yii\base\Component::attachBehaviorInternal(0, ['class' => 'yii\filters\auth\HttpBearerAuth', 'only' => ['index', 'view', 'create', 'update', ...], 'formats' => ['application/json' => 'json']])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Component.php 第 533 行 – yii\base\Component::ensureBehaviors()
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Controller.php 第 272 行 – yii\base\Component::trigger('beforeAction', yii\base\ActionEvent)
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\web\Controller.php 第 164 行 – yii\base\Controller::beforeAction(yii\rest\UpdateAction)
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Controller.php 第 154 行 – yii\web\Controller::beforeAction(yii\rest\UpdateAction)
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Module.php 第 523 行 – yii\base\Controller::runAction('update', ['id' => '1' ])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\web\Application.php 第 102 行 – yii\base\Module::runAction('products/update', ['id' => '1'])
- 在 D:\xampp\htdocs\connect\vendor\yiisoft\yii2\base\Application.php 中 第 380 行 – yii\web\Application::handleRequest(yii\web\Request)
- 在 D:\xampp\htdocs\connect\index.php 第 12 行 – yii\base\Application::run() 6789101112 要求(DIR . '/供应商/autoload.php');要求(目录。 '/vendor/yiisoft/yii2/Yii.php'); $config = 要求(目录 . '/config/web.php'); (new yii\web\Application($config))->run(); $_GET = [ 'id' => '1', ]; Yii 框架 2017-02-23, 09:31:51
Apache/2.4.23 (Win32) OpenSSL/1.0.2h PHP/5.6.28 Yii Framework/2.0.11.2
控制器中的行为是
public function behaviors() {
return [
[
'class' => HttpBearerAuth::className(),
'only' => ['index', 'view', 'create', 'update', 'search'],
'formats' => ['application/json' => Response::FORMAT_JSON,],
],
'verbs' => [
'class' => VerbFilter::className(),
'actions' => [
'index' => ['get'],
'view' => ['get'],
'create' => ['post'],
'update' => ['PUT'],
'delete' => ['delete'],
'deleteall' => ['post'],
'search' => ['get']
],
]
];
}
我正在使用 postman 对其进行测试,并在每个 api 中传递 Authorization。
这是我的标题
可能是什么问题?
【问题讨论】: