【发布时间】:2017-11-14 08:07:29
【问题描述】:
我正在关注 Laracast 的 API 教程并尝试创建一个所有其他控制器都扩展的 ApiController。 ApiController 负责响应处理。
class ApiController extends Controller
{
protected $statusCode;
public function getStatusCode()
{
return $this->statusCode;
}
public function setStatusCode($statusCode)
{
$this->statusCode = $statusCode;
}
public function respondNotFound($message = 'Not Found!')
{
return Reponse::json([
'error' => [
'message' => $message,
'status_code' => $this->getStatusCode()
]
]);
}
}
我还有一个扩展 ApiController 的 ReportController。
class ReportController extends ApiController
{
/**
* Display the specified resource.
*
* @param int $id
* @return \Illuminate\Http\Response
*/
public function show($id)
{
$report = Report::find($id);
if (! $report ) {
$this->respondNotFound(Report does not exist.');
}
return Response::json([
'data'=> $this->ReportTransformer->transform($report)
], 200);
}
}
当我尝试从ReportController 调用respondNotFound 方法时,我得到了
类 'App\Http\Controllers\Response' 未找到错误
即使我将use Illuminate\Support\Facades\Response;添加到父类或子类中,我也会收到错误消息。我该如何解决这个问题?
任何帮助将不胜感激。
【问题讨论】:
-
改用
use Response;。或response()助手 -return response()->json(...);。 -
您用于导入类
Response的命名空间似乎不正确。使用正确的。 -
使用语句是每个文件的,即使它们包含在父类中,您仍然必须将它们包含在子类中。在子类中添加外观使用语句或使用
\Response
标签: php laravel rest laravel-5