代码之家  ›  专栏  ›  技术社区  ›  Jagdish Sharma

拉维尔的表格更新结果是302

  •  3
  • Jagdish Sharma  · 技术社区  · 8 年前

    我面临一个302重定向问题,同时发布数据,以更新所有已成功更新的内容,但我得到302和我的页面重定向的图像除外。

    这是我的表格代码:

    {!! 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() !!} 
    

    还有我的控制器:

    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);
    }
    

    当我发布数据时,除显示302的图像和表格外,所有内容都按照要求更新,以下是屏幕截图: RESPONSE FROM SERVER 我的路线是: Route::resource('posts', 'PostController');

    2 回复  |  直到 8 年前
        1
  •  1
  •   Jagdish Sharma    8 年前

    我认为验证脚本中存在错误 请试试密码

    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);
    }
    

    这会解决你的问题。

        2
  •  1
  •   AliN11    8 年前

    302状态代码含义:

    从…起 Here :

    超文本传输协议(HTTP)302找到重定向状态 响应代码表示请求的资源已被删除 暂时移动到位置标题给定的URL

    因此,在控制器的最后一行,您正在执行重定向:

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

    此外,当Laravel验证失败时,它会自动重定向。

    推荐文章