抛出RestException时如何返回数据对象?

时间:2012-10-28 08:12:38

标签: php restler

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?

我正在使用Restler 3。

1 个答案:

答案 0 :(得分:0)

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.");
   }
}