文章的显示功能比较简单,分为两部分:
文章列表
具体的某篇文章
显示文章列表
路由之前已经定义好:
Route::get('/posts','PostsController@index');
控制器:
public function index(){ $posts = Post::latest()->get(); return view('posts.index',compact('posts'));}
latest()
方法等价于:
$post = Post::orderBy('created_at','desc')->get();
最后是视图:
/resources/views/posts/index.blade.php@extends('layouts.master')@section('content')@foreach ($posts as $post)@endsection@endforeach str_limit{ { $post->title }}
{ $post->created_at->toFormattedDateString() }} by Zen{
{ str_limit($post->body,20)}}
created_at
字段是由迁移任务中的 timestamps()
方法生成的,而且生成的时间是 Carbon
格式,这就意味着,你在读取或者写入的时候,Laravel 都会自动帮你进行维护。因此,created_at
也是 Carbon 的一个实例,可以使用 Carbon 包提供的各种方法进行进一步操作。
str_limit()
为 Laravel 的辅助方法,用于截取字符串的前 n 个字符,然后返回前 n 个字符加 ...
的格式。
显示某篇文章
显示某篇文章的比较简单,路由:
Route::get('/posts/create','PostsController@create');Route::get('/post/{post}','PostsController@show');
注意 show
要放在 create
下面,假如这样:
Route::get('/post/{post}','PostsController@show');Route::get('/posts/create','PostsController@create');
那么,我们访问 posts/create
的时候,create
会被当成是 show 的查询参数。
控制器:
public function show(Post $post){ return view('posts.show',compact('post'));}
视图:
/resources/views/posts/show.blade.php@extends('layouts.master')@section('content')@endsection