php - 提交数据并重定向到同一页面后的 Laravel 自定义错误消息,并带有一些小错误信息
问题描述
所以基本上我的计划是让我的应用程序更简单。如果用户想借很多书,可能是用户再次扫描同一本书,我得到的页面如下:
https://gyazo.com/e7236fec2cfc745d604d7eced2a1e333
或使用这个:
我知道这是laravel的生产模式,而不是开发模式。那么如何为用户重定向包含错误信息的页面,以便他可以理解他扫描了这本书两次?所以我只想将数据库问题错误消息转换为简单的重定向和消息,但我怎样才能达到这个目标?
首先我给你我的视图代码:
<div class="row justify-content-center">
<div class="col-md-8">
<!-- <script> setTimeout(function(){window.location=localhost:8000/}, 5); </script> -->
<br>
<br>
<div class="card">
<div class="card-header">{{ __('lend book') }}</div>
<div class="card-body">
<form method="POST" action="{{ route('borrow.store') }}">
@csrf
<div class="form-group row">
<label for="serialnumber" class="col-md-4 col-form-label text-md-right">{{ __('Bitte serialnumber scannen') }}</label>
<div class="col-md-6">
<input id="serialnumber" type="text" class="form-control{{ $errors->has('serialnumber') ? ' is-invalid' : '' }}" name="serialnumber" value="{{ old('serialnumber') }}" required autofocus>
@if ($errors->has('serialnumber'))
<span class="invalid-feedback">
<strong>{{ $errors->first('serialnumber') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="ma_id" class="col-md-4 col-form-label text-md-right">{{ __('scan membercard to identify yourself') }}</label>
<div class="col-md-6">
<input id="ma_id" type="password" class="form-control" name="ma_id" required>
@if ($errors->has('ma_id'))
<span class="invalid-feedback">
<strong>{{ $errors->first('ma_id') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row">
<label for="comment" class="col-md-4 col-form-label text-md-right">{{ __('comment') }}</label>
<div class="col-md-6">
<input id="comment" type="text-field" class="form-control" name="comment" placeholder="Test">
@if ($errors->has('comment'))
<span class="invalid-feedback">
<strong>{{ $errors->first('comment') }}</strong>
</span>
@endif
</div>
</div>
<div class="form-group row mb-0">
<div class="col-md-6 offset-md-4">
<button type="submit" class="btn btn-primary">
{{ __('send') }}
</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
@endsection
这是我的控制器代码:
public function store(Request $request)
{
$this->middleware('guest');
request()->validate([
'seriennummer' => 'required',
'ma_id' => 'required'
]);
borrow::create($request->all());
return redirect()->route('borrow.index')
->with('success','Proccess succesfully');
}
所以我尝试将返回更改为以下内容:
redirect()->back()->withErrors($validator)->withInput();
或者
return back()->with('autofocus', true);
和这样的视图:
<input id="serialnumber" type="text" class="form-control{{ $errors->has('serialnumber') ? ' is-invalid' : '' }}" name="serialnumber" value="{{ old('serialnumber') }}" required @if (Session::has('autofocus')) autofocus @endif>
任何人都可以帮我解决这个问题吗?或者有任何想法如何解决这个问题?
解决方案
php artisan make:request BookRequest
在您的根项目文件夹(CMD)中运行;
将新请求添加到控制器中的函数中,如下所示:
use App\Http\Requests\BookRequest
Class BookController extends Controller
{
...
public function store (BookRequest $request)
{
<Your code here, you do not need to worry about validation, it is done previous of calling store now! If it fails it redirects automatically to the previous page!>
... Your logic to add the book into the DB...
}
...
}
您的BookRequest 课程位于App\Http\Requests
:
Class BookRequest extends FormRequest
{
public function authorize()
{
<You can add here authorization like if user is authenticated. If you do not wish so, and just make it available just return TRUE>
return TRUE;
}
public function rules()
{
return [
'seriennummer' => 'required|unique',
'ma_id' => 'required'
];
}
public function messages()
{
return [
'seriennummer.required' => 'You need to select a book',
'seriennummer.unique' => 'Seems like you have added the same book more than once!',
... Your other fields you wish to validate. This fields are declared on the form!...
];
}
}
在您看来:
@if ($errors->any())
<div class="alert alert-danger">
<ul>
@foreach ($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
@endif
推荐阅读
- python-3.x - 我们如何在 Jupyter-Notebook (Anaconda) 中从 firebase 检索实时数据库到 Python3
- angular - How to initialize Full Calendar version 4 in Angular
- json - Python Error in extracting data from nested json
- java - IBM MQ 使用用户名/密码列出队列
- android - 如果行数超过一个,如何在 Android 的 TextView 中的特定单词之前插入换行符?
- django - gunicorn:错误:参数--error-logfile/--log-file:预期一个参数
- google-maps - 在页面加载时打开 Google Maps API 信息窗口
- html - How to hide Button if Job is successfully executed in angular 7
- java - Reading and interpreting a logical expression in a program
- node.js - Get the version number of an installed Node package without loading it?