@error 未显示 Laravel 中的错误

问题描述 投票:0回答:3

在 Blade 中,不显示单个

@error
,但在
@foreach ($errors->all() as $error)
中显示所有错误。 这是验证

public function updateAthlete(){
        $pass = Hash::make($this->password);
        $info = Athlete::find($this->athlete_id);
    if($this->profile_photo_path){
        File::delete('storage/' . $this->filePath);
        $this->filePath = $this->profile_photo_path->store('AthletesProfile', 'public');
    }

    $this->validate([
        'name'               =>'required|max:70|min:3',
        'name_fa'            =>'required|max:70|min:3',
        'name_pa'            =>'required|max:70|min:3',
    ]);
    
    $info->update([
        'name'               => $this->name,
        'name_fa'            => $this->name_fa,
        'name_pa'            => $this->name_pa,
   ]);

   session()->flash('updated', 'Post successfully updated.');

}

这就是表格

<div class="form-group form-group-default">
    <label>Name in Farsi</label>
    <input type="text" class="form-control" dir="RTL" wire:model="name_fa">
  @error('name_fa') <span class="error" style="color:red">{{ $message }}</span> @enderror
</div>

它没有在控制台中显示任何错误,或者它与样式无关

php laravel laravel-blade laravel-livewire
3个回答
1
投票

你不能像这样使用验证功能。

您需要传递一个 Request 实例才能使其工作:

public function updateAthlete(Request $request) 
{
    // .....

    $request->validate([
        'name'               =>'required|max:70|min:3',
        'name_fa'            =>'required|max:70|min:3',
        'name_pa'            =>'required|max:70|min:3',
    ]);

    // or :

    $this->validate($request, [
        'name'               =>'required|max:70|min:3',
        'name_fa'            =>'required|max:70|min:3',
        'name_pa'            =>'required|max:70|min:3',
    ]);
}

0
投票

实现此目的的一种方法是通过

php artisan make:request UpdateAthleteRequest
创建表单请求验证,该文件将位于
app\Http\Requests
文件夹中,并将您的规则添加到 Rules() 方法中。

public function rules()
{
    return [
        'name'               =>'required|max:70|min:3',
        'name_fa'            =>'required|max:70|min:3',
        'name_pa'            =>'required|max:70|min:3',
    ];
}

在您的控制器中,使用该文件并:

public function updateAthlete(UpdateAthleteRequest $request){
$pass = Hash::make($this->password);
        $info = Athlete::find($this->athlete_id);
    if($this->profile_photo_path){
        File::delete('storage/' . $this->filePath);
        $this->filePath = $this->profile_photo_path->store('AthletesProfile', 'public');
    }
    
    $info->update($request->validated());

   session()->flash('updated', 'Post successfully updated.');
}

完成后您必须重定向到视图文件。就目前而言,您的访问者在更新数据后将看到一个空白页面。


0
投票
`$data = array_merge($data, [
    'name'               => $this->name,
    'name_fa'            => $this->name_fa,
    'name_pa'            => $this->name_pa,

]);`

`$validateData = array_merge($validateData, [
    'name'               =>'required|max:70|min:3',
    'name_fa'            =>'required|max:70|min:3',
    'name_pa'            =>'required|max:70|min:3',
]);`

`$validation = Validator::make($data, $validateData)->validate();`

`$info->update($validation);`

`session()->flash('updated', 'Post successfully updated.');`
© www.soinside.com 2019 - 2024. All rights reserved.