公司導入 Laravel 分享 - 13. 進階實作 - 文章留言
建立 Route (routes/web.php)
Route::resource('post.comment', 'PostCommentController');建立 Model、Controller 和 Migration (artisan command)
php artisan make:model PostComment -m -r撰寫資料庫 schema (database/migrations/2017_05_09_064131_create_post_comments_table.php)
執行 migrate 建立資料表 (artisan command)
- public function up()
- {
- Schema::create('post_comments', function (Blueprint $table) {
- $table->increments('id');
- $table->integer('post_id')->unsigned();
- $table->text('content');
- $table->timestamps();
- });
- }
php artisan migrate
修改 PostComment model (app/PostComment.php)
修改 Post model (app/Post.php)
- class PostComment extends Model
- {
- protected $fillable = ['content'];
- }
新增留言的 view (resources/views/post/show.blade.php)
- use App\PostComment;
- ...
- public function comments()
- {
- return $this->hasMany(PostComment::class);
- }
新增留言的 store (app/Http/Controllers/PostCommentController.php)
- <div class="comment">
- <div class="comment-add">
- {!! Form::open(['route' => ['post.comment.store', $post->id]]) !!}
- <div class="form-group">
- {!! Form::label('content', '新增留言') !!}
- {!! Form::textarea('content', null, ['class' => 'form-control']) !!}
- </div>
- <div class="form-group">
- {!! Form::submit(null, ['class' => 'btn btn-primary btn-lg btn-block']) !!}
- </div>
- {!! Form::close() !!}
- </div>
- </div>
顯示留言的 view (resources/views/post/show.blade.php)
- public function store(Post $post, Request $request)
- {
- $post->comments()->create($request->all());
- return redirect()->route('post.show', $post->id);
- }
刪除 (app/Http/Controllers/PostCommentController.php)
- @foreach($post->comments as $index => $comment)
- <hr>
- <div class="comment-list">
- <div class="clearfix">
- #{{ $index + 1 }}
- <form class="pull-right" action="{{ route('post.comment.destroy', [$post->id, $comment->id]) }}" method="POST">
- {{ csrf_field() }}
- {{ method_field('DELETE') }}
- <input class="btn btn-danger" type="submit" name="submit" value="刪除">
- </form>
- <a class="pull-right btn btn-primary" href="{{ route('post.comment.edit', [$post->id, $comment->id]) }}">編輯</a>
- </div>
- <p>
- {{ $comment->content }}
- </p>
- <div class="text-right">
- {{ $comment->created_at }}
- </div>
- </div>
- @endforeach
編輯自己寫!
- public function destroy(Post $post, PostComment $comment)
- {
- $comment->delete();
- return redirect()->route('post.show', $post->id);
- }
留言
張貼留言