S
S
Sergey Semenko2015-01-24 23:52:37
Yii
Sergey Semenko, 2015-01-24 23:52:37

Yii2 - how to change 403 error message etc.?

How can I change this message?
9929fc51433143fbb457ef8ea2c4cf72.png
That's how nothing changes

public function behaviors() {
    return [
      'access' => [
        'class' => AccessControl::className(),
        'rules' => [
          [
            'allow' => true,
            'roles' => ['admin'],
            'denyCallback' => function ($rule, $action) {
              throw new ForbiddenHttpException('У Вас нет доступа');
            },
          ],
        ],
      ],
    ];
  }

Answer the question

In order to leave comments, you need to log in

2 answer(s)
A
Anton Kucherov, 2015-01-25
@abler98

Have a look at SiteController.php . There is a method there:

public function actions()
    {
        return [
            'error' => [
                'class' => 'yii\web\ErrorAction',
            ],
           ...
        ];
    }

The default handler is the class: yii\web\ErrorAction
You need to remove the code in this class ( SiteController.php ):
'error' => [
                'class' => 'yii\web\ErrorAction',
            ],

And implement your method named actionError . Or implement it as a separate class, similar to yii\web\ErrorAction

Дмитрий, 2019-03-23
@dmitrytyt

Дополню своим ответом.
При использовании таких настроек в SiteController.php у меня появляется код ошибки 500
Это происходит, когда у пользователя нет роли admin.

public function behaviors() {
    return [
      'access' => [
        'class' => AccessControl::className(),
        'rules' => [
          [
            'allow' => true,
            'roles' => ['admin']
          ],
        ],
      ],
    ];
  }

/**
     * {@inheritdoc}
     */
    public function actions()
    {
        return [
            'error' => [
                'class' => ErrorAction::class,
                // Тут можно добавить свой шаблон. 
                // Или ничего не указывать, при этом будет использоваться тот, который прописан в 'errorHandler'
                'view' => 'site/error', 
                'layout' => 'error'
            ]
        ];
    }

И сообщение:
An Error occurred while handling another error:
yii\web\ForbiddenHttpException: Вам не разрешено производить данное действие. in \vendor\yiisoft\yii2\filters\AccessControl.php:158
Оказывается, что дело не доходит до 403 ошибки. Оно прерывается раньше.
public function behaviors() {
    return [
      'access' => [
        'class' => AccessControl::className(),
        'except' => ['error'],
        'rules' => [
          [
            'allow' => true,
            'roles' => ['admin']
          ],
        ],
      ],
    ];
  }

public function behaviors() {
    return [
      'access' => [
        'class' => AccessControl::className(),
        'rules' => [
         [
             'actions' => ['error'],
             'allow' => true,
          ],
          [
             'allow' => true,
             'roles' => ['admin']
          ],
        ],
      ],
    ];
  }

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question