2017-01-07 10 views
-3

Как установить StatusCode на 400 в slim v2, когда ответ MySql не увенчался успехом?Отправить StatusCode 400, когда «Нет записей найдено»

$app->get('/gg/:user/:pass', 'gg'); 

function gg($user, $pass) { 
       $sql = "..."; 
       try { 
         $db = getDB(); 
         $stmt = $db->prepare($sql); 
         $stmt->bindParam("user", $user); 
         $stmt->bindParam("pass", $pass); 
         $stmt->execute(); 
         $gs = $stmt->fetchAll(PDO::FETCH_OBJ); 
         if ($gs) { 
          .... 
         } else { 
           http_response_code(400); 
           throw new PDOException('No records found.'); 
         } 
       } catch(PDOException $e) { 
         echo '{"error":{"text":'. $e->getMessage() .'}}'; 
       } 
     } 

Api возвращает ошибку состояния 200, но он должен измениться до состояния 400, если данные mysql не найдены.

+3

Добро пожаловать к SO. Не работает почти всегда бесполезное выражение здесь. Каков ожидаемый результат и каков фактический результат - два важных вопроса, на которые вы должны ответить, когда спрашиваете. Создайте вопрос [MCV] (http://stackoverflow.com/help/mcve), чтобы получить более качественные ответы. – marekful

+0

http://docs.slimframework.com/response/status/ –

+0

@Url wow, целые ** 'два' ** сообщения на ваш счет и уже вы бросаете свой весомый реп. недовольный! – YvesLeBorg

ответ

1

According to the slim2 manual the correct approach is:

$app->response->setStatus(400); 

, так как ваш внутри функции, которую нужно получить $app там, есть несколько способов:

в этом случае я предлагаю: http://docs.slimframework.com/configuration/names-and-scopes/

$app = Slim::getInstance(); 
+0

Уже тестировалось. Он говорит: Тип: ОшибкаException Код: 8 Сообщение: Неопределенная переменная: приложение – UrL

+0

$ приложение не входит в вашу область видимости функции – nogad

+0

добавить '$ app = Slim :: getInstance();' к функции – nogad