php - 在 laravel 的表单更新中得到 302

标签 php mysql forms laravel http-status-code-302

我在发布数据以更新已成功更新的所有内容时遇到 302 重定向问题,除了我收到 302 并且我的页面被重定向的图像。

这是我的表单 Blade 代码:

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

和我的 Controller :

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

最佳答案

我认为验证脚本有错误 请尝试代码

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

这将解决您的问题。

关于php - 在 laravel 的表单更新中得到 302,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50540253/

相关文章:

javascript - 无需提交表单即可获取输入字段的值

javascript - AngularJS : Handling value with same input name

javascript - React 会在状态更改时丢弃排队事件吗?

php - 光谱颜色选择器将 id 和颜色发送到 php

javascript - 将 XML 传递到 Javascript 以在 Google map 中显示标记

mysql - 您可以在 MariaDB 中的 select 语句中调用存储过程吗

php - 24 小时后自动从数据库中删除行

javascript - Angular 2 - 表单提交未检索 value 属性

php - 如何从数据库获取数据并使用 php 中的下拉列表将其显示到标签?

PHP数组作为变量名