mendapat 302 pada pembaruan formulir di laravel

Saya menghadapi masalah pengalihan 302 saat memposting data untuk memperbarui semua yang berhasil diperbarui kecuali gambar di mana saya mendapatkan 302 dan halaman saya dialihkan.

ini kode bilah formulir saya:

{!! Form::model($post, ['method' => 'PATCH','route' => ['posts.update', $post->id],'data-parsley-validate' => '','class' => 'form-horizontal','files'=>true,'name'=>'updateabout']) !!}

<div class="col-md-8">

    <input type="hidden" name="csrf_test_name" value="{!! csrf_token() !!}">
    <div class="form-group">
        <label class="col-md-2 control-label"> Title : </label>
        <div class="col-md-10">
            <input class="form-control " name="title" type="text" value="{{$post->title}}" id="title">
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-2 control-label">Slug:</label>
        <div class="col-md-10">
            <input class="form-control" name="slug" type="text" value="{{$post->slug}}" id="slug">
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-2 control-label">Category:</label>
        <div class="col-md-10">
            {{ Form::select('category_id', $categories, null, ['class' => 'form-control']) }}

        </div>
    </div>
    <div class="form-group">
        <label class="col-md-2 control-label">Tags:</label>
        <div class="col-md-10">
            {{ Form::select('tags[]', $tags, null, ['class' => 'form-control select2-multi', 'multiple' => 'multiple']) }}
        </div>
    </div>


    <div class="form-group">
        <label class="col-md-2 control-label">Short-Description:</label>
        <div class="col-md-10">
            <textarea name="short_description" class="form-control" maxlength="140" rows="7" required
                      id="shortdesc">{{$post->short_description}}</textarea>
            <script src="{{ asset("/public/admin/ckeditor/ckeditor.js") }}"></script>
            <script>
                CKEDITOR.replace('shortdesc', {
                    height: 100,
                    toolbar: 'Custom', //makes all editors use this toolbar
                    toolbarStartupExpanded: false,
                    toolbarCanCollapse: false,
                    toolbar_Custom: [] //define an empty array or whatever buttons you want.
                });
            </script>
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-2 control-label">Date:</label>
        <div class="col-md-10">
            {{ Form::text('date', null, ['class' => 'form-control','id'=>'date']) }}
        </div>
        <script type="text/javascript">
            $(document).ready(function () {
                $(function () {
                    $('#date').datepicker({format: 'HH:mm:ss'});
                })
            });
        </script>
    </div>


    <div class="form-group">
        <label class="col-md-2 control-label"> Image: </label>
        <div class="col-md-10">
            <img src="{{asset($post->image)}}" height="200" width="579">
            <input type="hidden" name="imageold" value="{{$post->image}}">
        </div>
    </div>
    <div class="form-group">
        <label class="col-md-2 control-label">Change Image: </label>
        <div class="col-md-10">
            <input type="file" name="imagemain" id="file">
        </div>
    </div>


    <div class="form-group">
        <label class="col-md-2 control-label">Description:</label>
        <div class="col-md-10">
            {{ Form::textarea('description', null, ['class' => 'form-control','id'=>'long_description']) }}
            <script src="//cdn.tinymce.com/4/tinymce.min.js"></script>
            <script>
                tinymce.init({
                    selector: '#long_description',
                    convert_urls: false,
                    statusbar: false,
                    height: '300',
                    plugins: 'image code print preview fullpage  searchreplace autolink directionality  visualblocks visualchars fullscreen image link    table charmap hr pagebreak nonbreaking  toc insertdatetime advlist lists textcolor wordcount   imagetools    contextmenu colorpicker textpattern media ',
                    toolbar: 'formatselect | bold italic strikethrough forecolor backcolor | link | alignleft aligncenter alignright alignjustify  | numlist bullist outdent indent  | removeformat |undo redo | image code| link fontsizeselect  | ',

                    image_title: true,
                    automatic_uploads: true,
                    images_upload_url: '{{url("/admin/upload")}}',
                    file_picker_types: 'image',
                    file_picker_callback: function (cb, value, meta) {

                        var input = document.createElement('input');
                        input.setAttribute('type', 'file');
                        input.setAttribute('accept', 'image/*');

                        input.onchange = function () {
                            var file = this.files[0];

                            var reader = new FileReader();
                            reader.readAsDataURL(file);
                            reader.onload = function () {
                                var id = 'blobid' + (new Date()).getTime();
                                var blobCache = tinymce.activeEditor.editorUpload.blobCache;
                                var base64 = reader.result.split(',')[1];
                                var blobInfo = blobCache.create(id, file, base64);
                                blobCache.add(blobInfo);
                                cb(blobInfo.blobUri(), {title: file.name});
                            };
                        };
                        input.click();
                    }
                });
            </script>
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-2 control-label">Meta-title:</label>
        <div class="col-md-10">
            {{ Form::textarea('meta_title', null, ['class' => 'form-control','id'=>'meta-title']) }}
            <script>
                CKEDITOR.replace('meta-title', {
                    height: 100,
                    toolbar: 'Custom', //makes all editors use this toolbar
                    toolbarStartupExpanded: false,
                    toolbarCanCollapse: false,
                    toolbar_Custom: [] //define an empty array or whatever buttons you want.
                });
            </script>
        </div>
    </div>

    <div class="form-group">
        <label class="col-md-2 control-label">Meta-Keywords:</label>
        <div class="col-md-10">
            {{ Form::textarea('meta_keywords', null, ['class' => 'form-control','id'=>'meta-keywords']) }}
            <script src="{{ asset("/public/admin/ckeditor/ckeditor.js") }}"></script>
            <script>
                CKEDITOR.replace('meta-keywords', {
                    height: 100,
                    toolbar: 'Custom', //makes all editors use this toolbar
                    toolbarStartupExpanded: false,
                    toolbarCanCollapse: false,
                    toolbar_Custom: [] //define an empty array or whatever buttons you want.
                });
            </script>

        </div>
    </div>

    <div class="form-group">
        <label class="col-md-2 control-label">Posted By:</label>
        <div class="col-md-10">
            {{ Form::text('authorname', null, ['class' => 'form-control']) }}
        </div>
    </div>

    <hr>

    <br>

    <div class="form-group row">
        <div class="col-sm-offset-3 col-sm-6">
            {{ Form::submit('Update Post', array('class' => 'btn btn-success')) }}
            <a type="button" id="addslide" class="btn btn-danger">Cancel</a>
        </div>
    </div>
</div>


{!! Form::close() !!} 

dan pengontrol saya:

public function update(Request $request, $id)
{
    // Validate the data
    $postdata = Post::find($id);

    //print_r($post);

    if ($request->input('slug') == $postdata->slug) {
        //echo 'slug match';
        //exit();
        $this->validate($request, [
            'title'            => 'required|max:255',
            'category_id'      => 'required|integer',
            'long_description' => 'required',
        ]);
    } else {
        //echo 'new slug matching';
        //exit();
        $this->validate($request, [
            'title'            => 'required|max:255',
            'slug'             => 'required|alpha_dash|min:5|max:255|unique:posts,slug',
            'category_id'      => 'required|integer',
            'long_description' => 'required',
        ]);
    }

    if ($request->hasFile('imagemain')) {

        //echo 'request has old file to unlink ';
        // exit();
        //unlink($request->get('image'));
        // Get filename with the extension
        $filenameWithExt = $request->file('imagemain')->getClientOriginalName();
        // Get just filename
        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
        // Get just ext
        $extension = $request->file('imagemain')->getClientOriginalExtension();
        $fileNameToStore = $filename . '_' . time() . '.' . $extension;
        // Upload Image
        $path = $request->file('imagemain')->move('public/blogsimages', $fileNameToStore);
        // Filename to store
        echo $fileNameToStore = $path;
    } else {
        $fileNameToStore = $request->input('imageold');
        // exit();
    }

    // Save the data to the database
    $post = Post::find($id);

    $post->title = $request->input('title');
    $post->slug = $request->input('slug');
    $post->category_id = $request->input('category_id');
    $post->description = $request->input('description');
    $post->short_description = $request->input('short_description');
    $post->date = $request->input('date');
    $post->image = $fileNameToStore;
    $post->meta_title = $request->input('meta_title');
    $post->meta_keywords = $request->input('meta_keywords');
    $post->authorname = $request->input('authorname');

    $post->save();

    if (isset($request->tags)) {
        $post->tags()->sync($request->tags);
    } else {
        $post->tags()->sync([]);
    }

    // set flash data with success message
    Session::flash('success', 'This post was successfully saved.');

    // redirect with flash data to posts.show
    return redirect()->route('posts.show', $post->id);
}

ketika saya memposting data semuanya diperbarui sesuai kebutuhan kecuali gambar dan formulir yang menunjukkan 302 berikut tangkapan layarnya: RESPONSE FROM SERVER rute saya adalah : Route::resource('posts', 'PostController');


person Jagdish Sharma    schedule 26.05.2018    source sumber
comment
Kode status 302 berarti terjadi pengalihan. Anda mengalihkan dengan return redirect()->route('posts.show', $post->id);   -  person AliN11    schedule 26.05.2018


Jawaban (2)


Saya pikir ada kesalahan dalam skrip validasi, silakan coba kodenya

public function update(Request $request, $id)
{
    // Validate the data
    $postdata = Post::find($id);

    //WITHOUT VALIDATION



    if ($request->hasFile('imagemain')) {

        //echo 'request has old file to unlink ';
        // exit();
        //unlink($request->get('image'));
        // Get filename with the extension
        $filenameWithExt = $request->file('imagemain')->getClientOriginalName();
        // Get just filename
        $filename = pathinfo($filenameWithExt, PATHINFO_FILENAME);
        // Get just ext
        $extension = $request->file('imagemain')->getClientOriginalExtension();
        $fileNameToStore = $filename . '_' . time() . '.' . $extension;
        // Upload Image
        $path = $request->file('imagemain')->move('public/blogsimages', $fileNameToStore);
        // Filename to store
        echo $fileNameToStore = $path;
    } else {
        $fileNameToStore = $request->input('imageold');
        // exit();
    }

    // Save the data to the database
    $post = Post::find($id);

    $post->title = $request->input('title');
    $post->slug = $request->input('slug');
    $post->category_id = $request->input('category_id');
    $post->description = $request->input('description');
    $post->short_description = $request->input('short_description');
    $post->date = $request->input('date');
    $post->image = $fileNameToStore;
    $post->meta_title = $request->input('meta_title');
    $post->meta_keywords = $request->input('meta_keywords');
    $post->authorname = $request->input('authorname');

    $post->save();

    if (isset($request->tags)) {
        $post->tags()->sync($request->tags);
    } else {
        $post->tags()->sync([]);
    }

    // set flash data with success message
    Session::flash('success', 'This post was successfully saved.');

    // redirect with flash data to posts.show
    return redirect()->route('posts.show', $post->id);
}

INI akan Memecahkan Masalah Anda.

person Jagdish Sharma    schedule 11.06.2018

Arti kode status 302 :

Dari Di sini:

Kode respons status pengalihan HyperText Transfer Protocol (HTTP) 302 Ditemukan menunjukkan bahwa sumber daya yang diminta telah dipindahkan sementara ke URL yang diberikan oleh header Lokasi

Jadi di baris terakhir pengontrol Anda, Anda melakukan pengalihan:

return redirect()->route('posts.show', $post->id);

Juga ketika validasi Laravel gagal, itu mengarahkan Anda secara otomatis.

person AliN11    schedule 26.05.2018
comment
terima kasih atas balasan Anda @ AliN11 meskipun saya menghapus baris itu, saya tetap akan membuka halaman yang sama tanpa mengunggah file. Masalah utamanya adalah ... file harus diperbarui jika ada perubahan - person Jagdish Sharma; 26.05.2018
comment
Oke, sudah memeriksa validasi - person Jagdish Sharma; 26.05.2018
comment
tidak ada kesalahan validasi dalam skrip semuanya baik-baik saja bahkan gambar disimpan ke folder tetapi tidak diperbarui di db - person Jagdish Sharma; 26.05.2018
comment
@JagdishSharma Saya tidak menemukan masalah apa pun dengan kode yang Anda berikan. Bisakah Anda mencari tahu dari mana masalahnya? - person AliN11; 26.05.2018
comment
Jika Anda mengalihkan kembali, berarti validasi gagal - person AliN11; 26.05.2018