Symfony возвращает JsonResponse из службы

У меня есть контроллер, возвращающий JsonResponse из мобильного приложения, для каждого действия я должен убедиться, что пользователь подключен с помощью токена. Я хочу делегировать это действие при аутентификации службы.

    $user = $this->em->getRepository('UserBundle:User')->findOneBy(array('email' => $username));
    if (!$user) {
        return new JsonResponse('User not found', 501);
    }
    $session = $this->em->getRepository('UserBundle:Session')->findOneBy(array('user' => $user->getId(), 'token' => $token));
    if(!$session){
        return new JsonResponse('Session not found', 501);
    }
    return true;

здесь все работает хорошо, но в моем контроллере я должен пройти этот тест, чтобы проверить результат.

    if($result instanceof JsonResponse){
        return $result;
    }
    ...

Могу ли я вернуть JsonResponse непосредственно из службы и остановить выполнение в контроллере, или есть ли какие-либо лучшие решения для этого.


person helmis.m    schedule 21.07.2017    source источник


Ответы (1)


Странно, что никто не ответил на этот вопрос, мне бы тоже было любопытно, но мне сказали, что это не выход. Объяснение заключалось в том, что если вы хотите изменить тип ответа с json на что-то другое, вам придется реорганизовать многие классы (включая службы), но если вы создаете ответ в контроллере, вы можете просто изменить его там.

person Jozef Kétyi    schedule 07.09.2017