收到 422 错误后,我无法在 blade 中显示错误消息
I can't display error messages in blade after I get 422 error
我对 laravel 中异常或错误处理的整个概念不熟悉。基本上我有表单请求,当不满足规则时,在控制台中显示 422 错误,我想将其转换为 blade 中的错误消息,但我失败了。
我已经在 Exception/Handle 中尝试过了。php
public function render($request, Exception $exception)
{
return redirect()->back()->with('error', 'Invalid data');
// return parent::render($request, $exception);
}
我在 blade 中的错误消息应该适用于此:
@if(Session::has('error'))
<div class="alert alert-error">
{{ Session::get('error') }}
@php
Session::forget('error');
@endphp
</div>
@endif
我知道我应该在 returning 之前检查错误代码或实例,但我只是想让它正常工作。我不能 return 任何东西(根本没有回应)。
一种认为有效的方法是 return parent::render($request, $exception);
并且它在控制台
中显示错误消息
更多信息
不知道有没有帮助,但是请求是从Vue应用程序到控制器的,它以FormRequest为参数。
此外,我无法检查错误代码,我试过了
public function render($request, Exception $exception)
{
if ($exception->getCode() === 422) {
return response([], 356); //should throw 356 error
}
return parent::render($request, $exception); // instead this return fires and gives me 422 error
}
Vue 组件
我的模板:
<template>
<form class="form" @submit.prevent="submit()">
<input type="text" class="form-control-plaintext textField"
placeholder="Post a comment" required v-model="textField">
<button :disabled="disabled" class="btn btn-success submit" type="submit">Post</button>
<button :disabled="disabled" class="btn btn-dark submit" type="reset">Cancel</button>
</form>
</template>
我的 axios 方法:
axios
.post('/comments', {
textField: this.textField,
id: this.id,
routeName: this.routename,
})
.then(response => {
this.name = '';
this.callReload(this.id);
this.textField = '';
})
.catch(function (error) {
console.log(error)
});
您可能想要更改 render
函数,我假设它是从 App\Exceptions\Handler.php
到 return JSON
对于通过 [=13 发出请求的例外情况=].
public function render($request, $exception)
{
if ($request->isJson()) {
return response()->json(['error' => 'Error Detail'], 422);
}
}
您还需要检查 exception
类型,而不是简单地 return 任何 JSON 异常的 422 状态代码。
我对 laravel 中异常或错误处理的整个概念不熟悉。基本上我有表单请求,当不满足规则时,在控制台中显示 422 错误,我想将其转换为 blade 中的错误消息,但我失败了。
我已经在 Exception/Handle 中尝试过了。php
public function render($request, Exception $exception)
{
return redirect()->back()->with('error', 'Invalid data');
// return parent::render($request, $exception);
}
我在 blade 中的错误消息应该适用于此:
@if(Session::has('error'))
<div class="alert alert-error">
{{ Session::get('error') }}
@php
Session::forget('error');
@endphp
</div>
@endif
我知道我应该在 returning 之前检查错误代码或实例,但我只是想让它正常工作。我不能 return 任何东西(根本没有回应)。
一种认为有效的方法是 return parent::render($request, $exception);
并且它在控制台
更多信息
不知道有没有帮助,但是请求是从Vue应用程序到控制器的,它以FormRequest为参数。
此外,我无法检查错误代码,我试过了
public function render($request, Exception $exception)
{
if ($exception->getCode() === 422) {
return response([], 356); //should throw 356 error
}
return parent::render($request, $exception); // instead this return fires and gives me 422 error
}
Vue 组件
我的模板:
<template>
<form class="form" @submit.prevent="submit()">
<input type="text" class="form-control-plaintext textField"
placeholder="Post a comment" required v-model="textField">
<button :disabled="disabled" class="btn btn-success submit" type="submit">Post</button>
<button :disabled="disabled" class="btn btn-dark submit" type="reset">Cancel</button>
</form>
</template>
我的 axios 方法:
axios
.post('/comments', {
textField: this.textField,
id: this.id,
routeName: this.routename,
})
.then(response => {
this.name = '';
this.callReload(this.id);
this.textField = '';
})
.catch(function (error) {
console.log(error)
});
您可能想要更改 render
函数,我假设它是从 App\Exceptions\Handler.php
到 return JSON
对于通过 [=13 发出请求的例外情况=].
public function render($request, $exception)
{
if ($request->isJson()) {
return response()->json(['error' => 'Error Detail'], 422);
}
}
您还需要检查 exception
类型,而不是简单地 return 任何 JSON 异常的 422 状态代码。