laravel-image数组验证为nullable validate提供了一个错误

yhqotfr8  于 2021-06-17  发布在  Mysql
关注(0)|答案(2)|浏览(283)

我需要验证我的图像数组作为一个图像和特定的图像文件扩展名只。但是我对图像的请求验证不允许我使用inser null值
例如,我会添加一个内容,不想添加图像。然后图像应该包含null,这就是为什么我需要请求验证为null。但根据我的经验,空值是不允许的,它给了我一个错误,为什么?请帮帮我
这是错误。
推广形象必须是形象
这是我的控制器

public function store(Request $request)
    {
        $this->validate($request, [
            'promotion_image' => 'image|nullable|max:1999'
        ]);

            $promotion = [];

        if ($request->has('promotion_image'))
        {   
            //Handle File Upload

            foreach ($request->file('promotion_image') as $key => $file)
            {
                // Get FileName
                $filenameWithExt = $file->getClientOriginalName();
                //Get just filename
                $filename = pathinfo( $filenameWithExt, PATHINFO_FILENAME);
                //Get just extension
                $extension = $file->getClientOriginalExtension();
                //Filename to Store
                $fileNameToStore = $filename.'_'.time().'.'.$extension;
                //Upload Image
                $path = $file->storeAs('public/promotion_images',$fileNameToStore);
                array_push($promotion, $fileNameToStore);
            }

            $fileNameToStore = serialize($promotion);
        }
        else
        {
            $fileNameToStore='noimage.jpg';
        }

        if (count($promotion)) {
            $implodedPromotion = implode(' , ', $promotion);
            $promotionImage = new Promotion;
            $promotionImage->promotion_image = $implodedPromotion;
            $promotionImage->save();

            return redirect('/admin/airlineplus/promotions')->with('success', 'Image Inserted');
        }

        return redirect('/admin/airlineplus/promotions')->with('error', 'Something went wrong.');

        }

这是我的观点

{!! Form::open(['action'=>'Admin\PromotionsController@store', 'method' => 'POST','enctype'=>'multipart/form-data', 'name' => 'add_name', 'id' => 'add_name']) !!}
<div class="form-group">   
    <div class="table-responsive">  
        <table class="table table-bordered" id="dynamic_field">  
           <tr>  
              <td> {{ Form::file('promotion_image[]')}}</td>

              <td>{{ Form::button('', ['class' => 'btn btn-success fa fa-plus-circle', 'id'=>'add','name'=>'add', 'style'=>'font-size:15px;']) }}</td>
           </tr>  
        </table>  
        {{Form::submit('submit', ['class'=>'btn btn-primary', 'name'=>'submit'])}}
    </div> 
</div>  
{!! Form::close() !!}
6kkfgxo0

6kkfgxo01#

无需在验证中添加可为null的属性。只需像这样更改验证代码

$this->validate($request, [
        'promotion_image.*' => 'image|max:1999'
    ]);

如果您需要用户必须添加图像输入,那么您可以使用 required 另一方面,你不需要这样的东西。
上面的代码强制用户添加image类型的文件,或者什么都不添加。
我希望你能理解,如果需要任何解释,请随时询问。

8wigbo56

8wigbo562#

您需要将其作为数组进行验证:

$validator = Validator::make($request->all(), [
    'photos.profile' => 'required|image',
]);

看看拉威尔医生
您可能希望将其与指示当前验证规则仅在该字段存在时才应用的“有时”组合。

相关问题