我已经用我自己的类扩展了一个类,并且如果我点击了方法responseNotFound(我肯定会这么做是因为dd()如果我在ApiController中编写它就可以了),它将不会返回任何内容。它只是以某种方式跳过了来自responseNotFound的返回,并返回到if语句下面的返回,该语句具有随json一起提供的所有数据的所有空值(这实际上是正常情况,但是永远不要执行此行)。
class LessonsController extends ApiController{
...some other methods here...
public function show($id)
{
$lesson = Lesson::find($id);
if (! $lesson) {
$this->respondNotFound('Lesson does not exist');
}
return Response::json([
'data' => $this->lessonTransformer->transform($lesson),
], 200);
}
和ApiController看起来像:
use Illuminate\Support\Facades\Response;
class ApiController extends Controller{
protected $statusCode = 404;
public function getStatusCode()
{
return $this->statusCode;
}
public function setStatusCode($statusCode)
{
$this->statusCode = $statusCode;
}
public function respondNotFound($message = 'Not Found')
{
return Response::json([
'error' => [
'message' => $message,
'status_code' => $this->getStatusCode()
]
]);
}}
我也曾尝试在LessonController中为statusCode调用getter,但同样的事情,它只是不响应返回。但是,正如我上面提到的,如果我在ApiController中将任何东西死掉并转储了,一切正常,它应该可以正常工作,因此,如果我将此Response :: json ... dd放在前面。
任何人都有这个问题,或者有什么想法可能是什么原因?
答案 0 :(得分:1)
我认为您的问题出在逻辑块上。请尝试以下操作:
if (!$lesson){
return $this->respondNotFound('Lesson does not exist');
}
您必须在if块中使用return关键字停止脚本,否则即使 respondNotFound()调用后, LessonsController 中的脚本仍将继续运行。
答案 1 :(得分:0)
您可能只需要在return
之前添加$this->respondNotFound('Lesson does not exist');
,一切就可以正常工作