Rules in controller:
public function behaviors()
{
return [
'access' => [
'__class' => AccessControl::class,
'only' => ['logout'],
'rules' => [
[
'actions' => ['logout'],
'allow' => true,
'roles' => ['@'],
],
],
],
'verbs' => [
'__class' => VerbFilter::class,
'actions' => [
'logout' => ['POST'],
],
],
];
}
2018-12-28 18:12:05 [190.142.158.89][1][l1k039mhme6vo5jnul7hbkf3h5][error][Error] Error: Call to a member function allows() on array in /home/domain.com/public_html/vendor/yiisoft/yii-web/src/filters/AccessControl.php:122
Stack trace:
#0 /home/domain.com/public_html/vendor/yiisoft/yii-core/src/base/ActionFilter.php(77): yii\web\filters\AccessControl->beforeAction(Object(yii\base\InlineAction))
#1 [internal function]: yii\base\ActionFilter->beforeFilter(Object(yii\base\ActionEvent))
#2 /home/domain.com/public_html/vendor/yiisoft/yii-core/src/base/Component.php(642): call_user_func(Array, Object(yii\base\ActionEvent))
#3 /home/domain.com/public_html/vendor/yiisoft/yii-core/src/base/Controller.php(276): yii\base\Component->trigger(Object(yii\base\ActionEvent))
#4 /home/domain.com/public_html/vendor/yiisoft/yii-web/src/Controller.php(367): yii\base\Controller->beforeAction(Object(yii\base\InlineAction))
#5 /home/domain.com/public_html/vendor/yiisoft/yii-core/src/base/Controller.php(158): yii\web\Controller->beforeAction(Object(yii\base\InlineAction))
#6 /home/domain.com/public_html/vendor/yiisoft/yii-core/src/base/Module.php(542): yii\base\Controller->runAction('logout', Array)
#7 /home/domain.com/public_html/vendor/yiisoft/yii-web/src/Application.php(94): yii\base\Module->runAction('site/logout', Array)
#8 /home/domain.com/public_html/vendor/yiisoft/yii-core/src/base/Application.php(544): yii\web\Application->handleRequest(Object(yii\web\Request))
#9 /home/domain.com/public_html/public/index.php(11): yii\base\Application->run()
#10 /home/domain.com/public_html/public/index.php(12): {closure}()
#11 {main}
Fix Instance::ensure, but it still did not work.
public function init(): void
{
parent::init();
if ($this->user !== false) {
$this->user = Yii::ensureObject($this->user, User::class);
}
foreach ($this->rules as $i => $rule) {
if (is_array($rule)) {
$this->rules[$i] = Yii::createObject(array_merge($this->ruleConfig, $rule));
}
}
}