首页 > 解决方案 > Laravel:创建按钮返回相同的视图但空白并且不创建任何记录

问题描述

我是 laravel 的新手,我正在创建一个 CMS。我创建了一个视图来创建帖子,但是在我输入数据并单击创建提交后,页面刷新并显示相同的视图,但没有输入,也没有创建记录,当它应该显示一个 Flash 消息并返回帖子索引视图时。

这是我的视图 HTML:

@section('content')
<div class="card card-default">
    <div class="card-header">
       {{ isset($post) ? 'Edit Post' : 'Create Post' }}
    </div>
    <div class="card-body">
        <form action="{{ isset($post) ? route('posts.update', $post->id) : route('posts.store') }}" method="POST" enctype="multipart/form-data">
            @csrf
            @if (isset($post))
                @Method('PUT')
            @endif
            <div class="form-group">
                <label for="title">Title</label>
                <input type="text" class="form-control" name="title" id="title" value="{{isset($post) ? $post->title : ""}}">
            </div>
            <div class="form-group">
                <label for="description">Description</label>
                <textarea name="description" id="description" cols="5" rows="3" class="form-control">{{isset($post) ? $post->description : ""}}</textarea>
            </div>
            <div class="form-group">
                <label for="content">Content</label>
                <input id="content" type="hidden" name="content" value="{{isset($post) ? $post->content : ""}}">
                <trix-editor input="content"></trix-editor>
            </div>
            <div class="form-group">
                <label for="published_at">Published at</label>
                <input type="text" class="form-control" name="published_at" id="published_at" value="{{isset($post) ? $post->published_at : ""}}">
            </div>
            
            @if (isset($post))
                <div class="form-group">
                    <img src="{{ asset('/storage/'.$post->image) }}" alt="" style="width: 100%">
                </div>
            @endif

            <div class="form-group">
                <label for="category">Category</label>
                <select name="category" id="category" class="form-control">
                    @foreach($categories as $category)
                        <option value="{{$category->id}}">{{$category->title}}</option>
                    @endforeach
                </select>
            </div>

            <div class="form-group">
                <label for="image">Image</label>
                <input type="file" class="form-control" name="image" id="image">
            </div>

            <div class="form-group">
                <button type="submit" class="btn btn-success">
                   {{ isset($post) ? 'Update Post' : 'Create Post' }}
                </button>
            </div>
        </form>
    </div>
</div>

@endsection

这是方法:

public function store(CreatePostRequest $request)
{
    $image = $request->image->store('posts');

    Post::create([
        'title'=>$request->title,
        'description'=>$request->description,
        'image'=>$image,
        'content'=>$request->content,
        'published_at' => $request->published_at,
        'category_id' => $request->category
    ]);

    session()->flash('success', 'Post Created Successfully');

    return redirect(route('posts.index'));

}

我究竟做错了什么?

谢谢,

标签: laravel

解决方案


推荐阅读