在__toString方法中使用Laravel JSON响应

时间:2017-02-09 11:38:11

标签: laravel symfony

我的类中有一个返回JSON响应的方法。

public function response(){

    return \Response::json(['data'=>'somedata']);
}

为了能够使用更多链式方法,每当我想要将对象作为响应返回时,我想使用__toString()方法。像这样:

public function __toString(){

    return $this->response();

}

但是我收到了这个错误:

Method MyClass::__toString() must return a string value

哪个有意义,但我该怎么做呢。我查看了Laravel和Symfony JsonResponse类,无法找到解决此问题的方法。我尝试了getContent(),但这只是一个字符串而不是正确的Json响应。

2 个答案:

答案 0 :(得分:0)

经过大量研究后,我找到了解决方案。我不知道它是否是最好的,但它是:

public function __toString(){

    $this->response()->send();
    return '';
}

这实际上是对Symfony\Component\HttpFoundation\Response::send()方法的调用,而不是返回字符串。

答案 1 :(得分:0)

Thyis是一个较晚的响应,但是我找到了一个更好的解决方案,让Laravel处理响应:

public function __toString(){
    return Response::json($this)->content() ' Returns a string
}