Laravel - Запрос проверки для изображения, установленного как Nullable, не разрешен и выдает ошибку, почему? - PullRequest
0 голосов
/ 25 ноября 2018

Мне нужно проверить массив изображений только как изображение и только для определенных файлов изображений.но проверка моего запроса к изображению НЕ ПОЗВОЛЯЕТ мне использовать вставные значения, которые могут иметь значение

Например, я добавлю контент и не хочу добавлять изображения.тогда изображение должно содержать нуль, поэтому мне нужно, чтобы запрос был проверен как обнуляемый.Но по моему опыту нулевое значение не допускается, и это дает мне ошибку, почему?помогите пожалуйста

вот ошибка.

Неопределенная переменная: продвижение

вот мой КОНТРОЛЛЕР

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

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

            $promotion = [];
            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() !!}

Ответы [ 3 ]

0 голосов
/ 25 ноября 2018

Это потому, что вы выбрали файл, отличный от изображения в вашей форме.См. Следующее, чтобы ограничить пользователя только загрузкой изображений.

<input accept=".png, .jpg, jpeg" name="files[]" type="file" multiple>
0 голосов
/ 27 ноября 2018

Не уверен, но попробуйте один раз

'promotion_image' => 'nullable|mimes:jpeg,jpg,png,gif|max:1999'
0 голосов
/ 25 ноября 2018

Вам нужно объявить $promotion = [] выше if ($request->has('promotion_image')), а не внутри него.

Итак:

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

    $promotion = [];

    if ($request->has('promotion_image'))
    {   
        //Handle File Upload
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...