我是laravel的新手。我创建了一个简单的页面,用户可以在其中将产品添加到数据库中。如果产品标题或金额为空;我也可以显示错误。但是我想在特定字段旁边显示错误。如果标题为空,则错误将显示在标题字段旁边。 我使用JS等搜索并找到了解决方案。但是有没有办法仅使用laravel来实现呢?
我的看法就是这样
var bindingConfiguration =
Bind<IInterface1, IInterface2, IInterface3, IInterface4>()
.To<Implementation>()
.BindingConfiguration;
kernel.AddBinding(new Binding(typeof(IInterface5), bindingConfiguration));
我的控制器就是这样
<form method="POST" action="create">
@csrf
<input type="text" name="title" placeholder="Product name"><br>
<textarea name="description" placeholder="Description"></textarea><br>
<input type="string" name="amount" placeholder="Price per unit"><br>
<button type="submit">Add Product</button>
</form>
@if(count($errors))
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
@endif
答案 0 :(得分:2)
您需要检查错误并在需要的地方显示,如下所示
@if ($errors->has('title')) <p style="color:red;">{{ $errors->first('title') }}</p> @endif
和
@if ($errors->has('amount')) <p style="color:red;">{{ $errors->first('amount') }}</p> @endif
在您要查看的代码中,可以将其放置为
<form method="POST" action="create">
@csrf
<input type="text" name="title" placeholder="Product name">
@if ($errors->has('title')) <p style="color:red;">{{ $errors->first('title') }}</p> @endif <br>
<textarea name="description" placeholder="Description"></textarea><br>
<input type="string" name="amount" placeholder="Price per unit">
@if ($errors->has('amount')) <p style="color:red;">{{ $errors->first('amount') }}</p> @endif <br>
<button type="submit">Add Product</button>
</form>
此外,您还可以通过如下所示从控制器返回错误文本来打印自定义消息
$customMessages = [
'title.required' => 'The title field is required to be filled',
'amount.required' => 'The amount field should be completely filled'
];
$this->validate(request,[
'title'=> 'required',
'amount' => 'required',
], $customMessages);
相反,如果要显示某个字段的所有错误,可以按如下所示打印它们
@if ($errors->has('title'))
<p style="color:red;">
@foreach ($errors->get('title') as $errormessage)
{{ $errormessage }}<br>
@endforeach
</p>
@endif
答案 1 :(得分:1)
您可以在$errors
数组中得到的所有错误
只需通过输入字段名称获取它们
示例:
<div class="form-group {{ $errors->has('title') ? 'has-error' : ''}}">
<label for="titile" class="col-sm-3 control-label">Title: </label>
<div class="col-sm-6">
<input class="form-control" placeholder="Product name" required="required" name="title" type="text" id="title">
{!! $errors->first('title', '<p class="help-block">:message</p>') !!}
</div>
</div>
在这里,$errors->first('title')
表示它在$errors
数组中获得标题错误的第一个索引。
在您看来,您可以这样做:
<form method="POST" action="create">
@csrf
<input type="text" name="title" placeholder="Product name"><br>
{!! $errors->first('title', '<p class="help-block">:message</p>') !!}
<br>
<textarea name="description" placeholder="Description"></textarea><br>
{!! $errors->first('description', '<p class="help-block">:message</p>') !!}
<br>
<input type="string" name="amount" placeholder="Price per unit"><br>
{!! $errors->first('amount', '<p class="help-block">:message</p>') !!}
<br>
<button type="submit">Add Product</button>
</form>