Проверка формы не проверяется частично - PullRequest
0 голосов
/ 27 июня 2019

У меня есть программа Laravel, которая сохраняет данные формы и загружает несколько изображений.В валидации есть два правила.Изображение является обязательным и должно иметь тип изображения (jpg, jpeg, png).Однако проверка только проверяет тип файла и не проверяет «требуется».Даже если нет изображения, оно позволяет пользователю отправить.Почему?

public function updateImages(Request $request, $id)
{
    $validatedData = $request->validate([
        'image' => 'required',
        'image.*' => 'image|mimes:jpeg,png,jpg|max:2048',
    ],
        [
            'image.*.image' => 'Format Error: Please uplaod image in a png or jpg format',
        ]);
    $item = Post::find($id);
    $existing_count = Photo::where('post', $item->id)->count();
    $countrequest = sizeof($request->file('image'));
    $count = $existing_count + $countrequest;
    if ($count >= 6) {
        return back()
            ->withInput()
            ->withErrors(['Only 5 images can be uploaded!']);
    }
    $upload = $this->imageUpload($item, $request);

    return redirect()->back()->with('message', 'Image Updated');
}

Ответы [ 2 ]

0 голосов
/ 28 июня 2019

Вы можете использовать Проверка запроса Laravel

Для создания класса запроса формы

php artisan make:request ImageUpdateRequest

Перейти в приложение / Http / Запросы добавить правила

public function authorize()
{
    return true;
}

public function rules()
{
    return [
        'image' => 'required|image|mimes:jpeg,png,jpg|max:2048'
    ];
}

На вашем контроллере

use App\Http\Request\ImageUpdateRequest;

public function updateImages(ImageUpdateRequest $request, $id)
{
    $item = Post::find($id);
    $existing_count = Photo::where('post',$item->id)->count();
    $countrequest = sizeof($request->file('image'));
    $count= $existing_count+$countrequest;
    if ($count >= 6 ){
        return back()
        ->withInput()
        ->withErrors(['Only 5 images can be uploaded!']);
    }
    $upload = $this->imageUpload($item, $request);
    return redirect()->back()->with('message', 'Image Updated');
}
0 голосов
/ 27 июня 2019

Применить требуется с image.*.Например .-

image.*' => 'require|image|mimes:jpeg,png,jpg|max:2048', 

Попробуйте это решение.Это будет работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...