首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用laravel更新了302份表格

用laravel更新了302份表格
EN

Stack Overflow用户
提问于 2018-05-26 07:07:35
回答 2查看 2.6K关注 0票数 3

我正面临一个302重定向问题,同时在更新所有成功更新的数据时,除了我得到302和我的页面重定向的图像之外。

这是我的表格刀片代码:

代码语言:javascript
复制
{!! 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() !!} 

我的控制器:

代码语言:javascript
复制
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的图像和表单外,所有更新的内容都是屏幕截图:

我的路线是:Route::resource('posts', 'PostController');

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-06-11 07:04:39

我认为验证脚本中有错误,请尝试一下代码。

代码语言:javascript
复制
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
EN

Stack Overflow用户

发布于 2018-05-26 07:17:30

302状态代码,意思是:

来自这里

HyperText传输协议(HTTP302)发现重定向状态响应代码指示请求的资源已临时移动到位置标头提供的URL

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

代码语言:javascript
复制
return redirect()->route('posts.show', $post->id);

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50540253

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档