• Yii2 - как изменить сообщение об ошибке 403 и т.п.?

    dmitrytyt
    @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 ошибки. Оно прерывается раньше.

    Решение добавить исключение для контроллера error:
    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']
              ],
            ],
          ],
        ];
      }
    Ответ написан
    Комментировать
  • Как получить значение параметра post при отправке почты через ajax запрос?

    dmitrytyt
    @dmitrytyt
    А кавычки пробовали добавлять?
    <script type="text/javascript">
        var $_POST = '<?php echo json_encode($_POST); ?>';
        document.write('$_POST["name"]');
    </script>
    Ответ написан
    Комментировать
  • Как в Yii2 отключить автоматическую вставку js?

    dmitrytyt
    @dmitrytyt
    Можно запретить один или несколько комплектов ресурсов, связав false с именами комплектов ресурсов, которые Вы хотите сделать недоступными.
    Настройка Комплектов Ресурсов
    'assetManager' => [
         'bundles' => [
              JqueryAsset::class => false,
              YiiAsset::class => false,
              ActiveFormAsset::class => false
         ],
         // 'bundles' => false
    ]
    Ответ написан
    Комментировать