使用Laravel 5,我想发送自定义abort()
消息
例如,如果用户没有操作所需的权限,则
我想abort(401, "User can't perform this actions")
目前,当我这样做时,响应文本是HTML页面而不是消息
我怎样才能只返回消息?
注意:我不想传递不同的视图,只能传递自定义消息。
答案 0 :(得分:10)
根据Laravel 5.4文档:
https://laravel.com/docs/5.4/errors#http-exceptions
您可以在响应文字中使用abort
帮助:
abort(500, 'Something went wrong');
并使用$exception->getMessage()
中的resources/views/errors/500.blade.php
来显示它:
Error message: {{ $exception->getMessage() }}
答案 1 :(得分:6)
答案只是使用response()辅助方法而不是abort()。语法如下。
return response("User can't perform this action.", 401);
答案 2 :(得分:1)
您可以在此处理所有错误例外app / Exceptions / Handler.php Class根据您的要求。
在你的情况下,只需用这个
替换渲染功能public function render($request, Exception $e)
{
return $e->getMessage();
//For Json
//return response()->json(['message' => $e->getMessage()]);
}
答案 3 :(得分:1)
应该能够在模板中使用以下内容:
{{ $exception->getMessage() }}
答案 4 :(得分:1)
您可以将响应包装在abort中,这将停止执行并返回响应。如果您希望它为JSON,则添加->json();
# Regular response
abort( response('Unauthorized', 401) );
# JSON response
abort( response()->json('Unauthorized', 401) );
答案 5 :(得分:0)
首先在您的标题文件或要显示消息的页面中添加错误消息,如:
@if($errors->has())
@foreach ($errors->all() as $error)
<div>{{ $error }}</div>
@endforeach
@endif
在控制器中,你可以做这种事情(例如):
public function store(){
if(user is not permitted to access this action) // check user permission here
{
return redirect()->back()->withErrors("User can't perform this actions");
}
}
您可以使用错误消息重定向
答案 6 :(得分:0)
在Handler.php
我改变了功能:
public function render($request, Exception $e)
{
$response = parent::render($request, $e);
if (method_exists($e, "getStatusCode")) {
if ($e->getStatusCode() == 401) {
$response->setContent($e->getMessage());
}
}
return $response;
}