在Laravel中如何在特定字段旁边显示错误消息?

时间:2018-11-16 05:31:06

标签: laravel laravel-5

我是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

2 个答案:

答案 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>