当使用 Livewire 在 Laravel Blade 中运行验证时,如何隐藏某些内容?

Posted

技术标签:

【中文标题】当使用 Livewire 在 Laravel Blade 中运行验证时,如何隐藏某些内容?【英文标题】:How do I hide something when a validation runs in Laravel Blade using Livewire? 【发布时间】:2021-09-08 14:45:12 【问题描述】:

我的 Laravel 刀片中有一个输入类型的文件,我还在 livewire 中验证了image|max:1024。问题是输入验证但它出错了,因为 Laravel Blade 显示的 img 不是图像的文件类型,所以我想在它没有达到验证时隐藏它。

    <div class="pb-2">
        @if ($header_image)
            @error('header_image')
                <span class="error"> $message </span>
            @enderror
            <img src=" $header_image->temporaryUrl() "  width='50%'>
        @else
            <img src="url('storage/photos/'.$banner->header_image)"  width='50%' />
        @endif
    </div>

我想隐藏带有temporaryUrl() 的那个。

【问题讨论】:

你到底要隐藏什么,输入元素还是错误包??? 我想隐藏 img 元素。当我输入不是图像的文件时,哪个会出错 那么如果抛出错误使该属性为 null,那么刀片 @if 语句上的这种方式不会进入 ->temporaryUrl() 我可以参考一下如何使这个为空吗? 【参考方案1】:

您可以使用此验证器方法来处理失败时的任何操作

$validation = Validator::make($data,$rules);
if($validation->fails()) 
   $this->property = null;

【讨论】:

【参考方案2】:

我对此有另一种方法。我使用 livewire dehydrate 功能。在 livewire 组件中:

public function dehydrate()

    if ($this->getErrorBag()) 
        //Do whatever you like..
    

【讨论】:

以上是关于当使用 Livewire 在 Laravel Blade 中运行验证时,如何隐藏某些内容?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 8 livewire 在任务完成或在其外部单击页面时隐藏菜单组件

使用 Laravel Livewire 和 Laravel Fortify 进行登录

错误:此路由不支持 POST 方法。支持的方法:GET、HEAD。 - 使用 laravel livewire

Laravel Livewire 分页

如何使用 if 路由条件在 2 个单独的视图函数中使用相同的渲染? (Laravel/Livewire)

如何在 Laravel 7 中使用 Livewire 显示存储路径中的图像