2015-04-13 2 views
0

Проверка с помощью ParamFetcher очень изящна, но сообщения об ошибках не очень хороши. Он содержит много ненужной информации, которую я не хочу показывать пользователям api.Как изменить сообщение об ошибке, данное ParamFetcher?

Например:

"Параметр запроса parent_id значение 'а' нарушил ограничение (Запрос значение параметра 'а', не соответствуют требованиям '\ D +')"

Я хочу преобразовать это сообщение в более простое сообщение: «parent_id должно быть целым числом»

Как я могу это сделать?

Код, который дает ошибку ниже. И я не вижу способа дать другие сообщения об ошибках.

Возможно, существует еще одна альтернатива для параметров запроса валидации.

$constraint = new Regex(array(
     'pattern' => '#^'.$config->requirements.'$#xsu', 
     'message' => sprintf(
        "%s parameter value '%s', does not match requirements '%s'", 
        $paramType, 
        $param, 
        $config->requirements 
     ), 
)); 

Исходный код: https://github.com/FriendsOfSymfony/FOSRestBundle/blob/master/Request/ParamFetcher.php#L220

+0

Если я помню, вы можете использовать пользовательское ограничение в разделе 'requirements'. Попробуйте свой собственный класс 'Regex' с префиксом '@' – Twifty

ответ

2

Я сделал запрос тянуть к FOSRestBundle, чтобы решить эту проблему https://github.com/FriendsOfSymfony/FOSRestBundle/pull/1015

Вы можете использовать его, как показано ниже

@QueryParam(name="parent_id", requirements={"rule" = "\d+", "error_message" = "parent_id must be an integer"}, strict=true, nullable=true, description="Parent Id") 

Сообщение об ошибке:

{ 
    "code": 400, 
    "message": "parent_id must be an integer" 
} 
Смежные вопросы