Как я могу вернуть объект данных при создании RestException?

function put($id, $name)
{
   try
   {
       product::put($id, $name);
   }
   catch(\util\BadNameException $e)
   {
       throw new RestException(400, "Please supply a better name.");
   }
}

При возврате сообщения об ошибке я также хочу включить результат (array)product::getNamingConvention() в ошибку. Как я могу это сделать?

Я мог бы просто вернуть пользовательский массив с сообщением об ошибке и данными, но я не знаю, как в этом случае установить код состояния 400?

Я использую Рестлер 3.


person Christoffer    schedule 28.10.2012    source источник


Ответы (1)


Класс Responder отвечает за придание структуры ответу на ошибку и ответу на успех.

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

use \Luracast\Restler\Responder;
use \Luracast\Restler\Defaults;

class MyResponder extends Responder
{
    public static $data = null;

    public function formatError($statusCode, $message)
    {
        $r = array(
            'error' => array(
                'code' => $statusCode,
                'message' => $message
            )
        );
        if (isset(self::$data)) {
            $r['data'] = self::$data;
        }
        return $r;
    }
}

Defaults::$responderClass = 'MyResponder';

А затем установите данные из вашего класса, как показано ниже.

function put($id, $name)
{
   try
   {
       product::put($id, $name);
   }
   catch(\util\BadNameException $e)
   {
       MyResponder::$data = product::getNamingConvention();
       throw new RestException(400, "Please supply a better name.");
   }
}
person Community    schedule 29.10.2012