VicTHOR
@VicTHOR
(╮°-°)╮┳━━┳ ( ╯°□°)╯ ┻━━┻

Как сделать try { action } catch ( Exception ) по умолчанию?

В проекте на Yii2 отдельно вынесены контроллеры, обрабатывающие POST-запросы.
Сейчас в каждом action этих API запросов идет блок try-catch, где в catch ловится любой Exception и отдается в виде массива его сообщение с ключем error.
В afterAction установлен формат ответа JSON, все массивы отдаются в виде json, в случае исключения будет ключ error.

Можно ли как-то по умолчанию все action таких контроллеров взять в блок try-catch, что-бы внутри каждого не писать?

пробовал сделать методом actionError(), но срабатывают исключения в behaviors и вообще страницу рендерят.. некорректное поведение.
  • Вопрос задан
  • 34 просмотра
Решения вопроса 1
vitaly_74
@vitaly_74
Может имеет смысл обернуть init()?
а еще у контроллера есть метод runAction(); его тоже можно обернуть, т.к. yii2 вызывает этот метод.
public function runAction($id, $params = [])
    {
        try{
            return parent::runAction($id, $params); // TODO: Change the autogenerated stub  
        }catch(Exception $e){
             echo "hello world"
        }
      }
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы