确认不起作用,错误消息不会显示Laravel 8

tv6aics1  于 2023-02-20  发布在  其他
关注(0)|答案(3)|浏览(218)

我是一个laravel初学者,也是我第一次使用一个框架,我刚刚学习了5天的laravel,所以我不太了解这个框架,我使用的是最新的laravel 8,我的项目有一个问题,当试图验证数据的形式。
1.我不知道这个方法是否有效(可能无效)

$request->validate([
     'name' => 'required',
     'icons' => 'required',
 ]);

1.当我尝试获取错误消息{{$error}}时,视图中仅显示[]。

<form action="{{ route('poseicon.store') }}" method="post" enctype="multipart/form-data">
@csrf
     <div class="display">
     
        <label>name:</label>
        <input type="text" name="name" id="name">
        <label>icons:</label>
        <input type="file" name="icons" id="icons" class="">
        {{$errors}}
        <input type="submit" value="submit">
    </div>
</form>

这是我的控制器

public function store(Request $request)
{
    $request->validate([
        'name' => 'required',
        'icons' => 'required',
    ]);
    //this working correctly when validate method above deleted 
    $file = $request->file('icons');
    $filename = 'pose-photo-' . time() . '.' . $file->getClientOriginalExtension();
    $path = $file->storeAs('img', $filename);

    //this also working correctly when validate method above deleted 
    Poseicon::create([
        'name' => $request->name,
        'icons' =>  $filename
    ]);
    
    return redirect('/poseicon');
    
}

我已经尝试了所有的文档说,但仍然不工作

jecbmhm3

jecbmhm31#

正如laravel doc所说,您应该使用@error指令之一或在$errors上循环

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

@error('title')
    <div class="alert alert-danger">{{ $message }}</div>
@enderror
mpbci0fu

mpbci0fu2#

简单地把这个代码在你想显示错误信息。Laravel提供这个错误代码。
在你的视图页面你把这个。

@if ($errors->any())
    <div class="alert alert-danger">
        <ul>
            @foreach ($errors->all() as $error)
                <li>{{ $error }}</li>
            @endforeach
        </ul>
    </div>
@endif

在控制器中,您只需声明需要哪个字段。

$request->validate([
        'name' => 'required',
        'icons' => 'required',
    ]);
ndh0cuux

ndh0cuux3#

试试这个。

    • 控制器**
use Illuminate\Support\Facades\Validator;

     $validatedData = Validator::make($request->all(), [
        'name' => 'required',
        'icons' => 'required',
    ])->validate();

    $name = $validatedData['name'];
    $icons = $validatedData['icons'];
    • blade文件**将此放在表单上方
@if ($errors->any())
            <div class="alert alert-danger">
                <ul>
                    @foreach ($errors->all() as $error)
                        <li>{{ $error }}</li>
                    @endforeach
                </ul>
            </div>
        @endif

相关问题