Laravel 6 Ошибка проверки? - PullRequest
       0

Laravel 6 Ошибка проверки?

0 голосов
/ 02 марта 2020

У меня проблема с моим Laravel проектом.

$request->validate(
[
    'blogs_file' => 'required|image|mimes:jpeg,jpg,png|max:2048',
    'blogs_title' => 'required|unique:App\Blogs,blogs_title',
    'blogs_content' => 'required',
]);

Я установил ограничение на blogs_file. Это должно разрешить только jpg, png, jpeg и максимум 2 МБ.

Но когда я пытаюсь поместить файл mp4, он проходит. В чем здесь проблема?

Я уже добавил enctype="multipart/form-data" к моей форме на блейд-странице.

Если я хочу поместить файл mp4 или zip ниже 2 МБ, проверка работает нормально , Но если я загружаю любые данные размером более 2 МБ; это проходит. На самом деле, когда я проверяю к моей БД; blogs_file приходит NULL на этом пути, но возвращается с успешным сообщением пользователю.

ОБНОВЛЕНИЕ:

my create.blade. php file;

<div class="box-body">
    <form action="{{route('blogs.store')}}" method="POST" enctype="multipart/form-data">
        @csrf
        <div class="form-group">
            <label>Resim Seç</label>
            <div class="row">
                <div class="col-xs-12">
                    <input class="form-control" required name="blogs_file" type="file">
                </div>
            </div>
        </div>
        <div class="form-group">
            <label>Başlık</label>
            <div class="row">
                <div class="col-xs-12">
                    <input class="form-control" required type="text" placeholder="Blog Başlığı..." name="blogs_title">
                </div>
            </div>
        </div>

        <div class="form-group">
            <label>Sayfa Linki</label>
            <div class="row">
                <div class="col-xs-12">
                    <input class="form-control" placeholder="Sayfa linki girebilirsiniz(isteğe bağlı)"
                           name="blogs_slug" type="text">
                </div>
            </div>
        </div>

        <div class="form-group">
            <label>İçerik</label>
            <div class="row">
                <div class="col-xs-12">
                    <textarea class="form-control" id="editor1" name="blogs_content"
                              required></textarea>
                </div>
                <script>
                    CKEDITOR.replace( 'editor1' );
                </script>
            </div>
        </div>
        <div class="form-group">
            <label>Durum</label>
            <div class="row">
                <div class="col-xs-12">
                    <select name="blogs_status" class="form-control">
                        <option value="1">Aktif</option>
                        <option value="0">Pasif</option>
                    </select>
                </div>
            </div>
        </div>
        <div align="right" class="box-footer">
            <button type="submit" class="btn btn-primary">Ekle</button>
        </div>
    </form>
</div>

route :

Route::resource('blogs','BlogController');

BlogController:

public function store(Request $request)
{
    if (strlen($request->blogs_slug)>3)
    {
        $slug=Str::slug($request->blogs_slug);
    } else {
        $slug=Str::slug($request->blogs_title);
    }

    if ($request->hasFile('blogs_file'))
    {
        $request->validate(
        [
            'blogs_file' => 'required|file|mimes:jpeg,jpg,png|max:2048',
            'blogs_title' => 'required|unique:App\Blogs,blogs_title',
            'blogs_content' => 'required',
        ]);

        $file_name=uniqid().".".$request->blogs_file->getClientOriginalExtension();
        $request->blogs_file->move(public_path('images/blogs'),$file_name);
        $request->blogs_file=$file_name;
    }
    $blog= new Blogs;
    $blog->blogs_file=$request->blogs_file;
    $blog->blogs_title=$request->blogs_title;
    $blog->blogs_slug=$slug;
    $blog->blogs_content=$request->blogs_content;
    $blog->blogs_status=$request->blogs_status;
    $blog->uniqid=uniqid();
    $blog->save();
    if ($blog)
    {
        return redirect(route('blogs.index'))->with('success','İşlem Başarılı!');
    } else {

        return back()->with('error','İşlem Başarısız!');
    }
}

1 Ответ

3 голосов
/ 02 марта 2020

первая. Вы пропустили file правило.

2-е. Вы можете использовать либо image правило (которое проверяет файл как jpeg, png, bmp, gif, svg или webp), либо использовать mimes:jpeg,jpg,png:

Таким образом, ваша проверка будет либо:

'blogs_file' => 'required|file|mimes:jpeg,jpg,png|max:2048',

Или:

'blogs_file' => 'required|file|image|max:2048',

3-й. Вы поместили свою проверку $request->validate в if, это неправильно и создает проблему! Вы можете условно добавить правила или использовать после хука проверки вместо более сложных проверок.

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