实现的功能:控制器Controller 从数据库取出内容,并把信息返回给 view 层。
eg:这里使用上一节所建的 Article 表信息,获取文章内容,并显示内容到页面。
我们使用Laravel项目的artisan命令行工具先启动一下项目,执行命令:php artisan serve
D:\software\wamp64\www\laravel5>php artisan serve
我们打开 web.php文件,先定义一个路由 : 当我们访问 articles时,访问 ArticlesController 控制器的 index方法。
Route::get('/articles', 'ArticlesController@index');然后借助 artisan 命令行工具 去创建一个 ArticlesController 控制器,执行一下命令:php artisan make:controller ArticlesController,可以看到 app\Http\Controllers 目录下新生成了一个ArticlesController.php文件!
D:\software\wamp64\www\laravel5>php artisan make:controller ArticlesController Controller created successfully.
打开该控制器,新添加一个index方法。随便return一些信息。
浏览器访问上述 路由:http://localhost:8000/articles ,看到 return的信息,说明路由这一步没有问题。
再index方法读取数据库信息之前,我们需要先 引用Article 这个类,即 use App\Article !!!!
namespace App\Http\Controllers;
use App\Article;
use Illuminate\Http\Request;
class ArticlesController extends Controller
{
//
public function index()
{
$articles = Article::all();
$d = $articles->toArray();
return $d;
}
}再次访问浏览器 http://localhost:8000/articles ,即可看到输出的 json信息, 数据库默认返回的是json信息(对我们去做一些api接口也是挺友好的)

现在,加载一个视图,把数据变量信息传给视图。
修改上述 ArticlesController 控制器 index()方法:
namespace App\Http\Controllers;
use App\Article;
use Illuminate\Http\Request;
class ArticlesController extends Controller
{
//
public function index()
{
$articles = Article::all();
return view('articles.index', compact('articles'));
}
}接下来,在 resources\views 文件夹中创建 articles\index.blade.php 视图文件。显示所有的文章,编辑内容:
@extends('app')
@section('content')
<h1>article</h1>
@foreach($articles as $article)
<h2>{{ $article->title }}</h2>
<article>
<div class="body">
{{$article->content}}
</div>
</article>
@endforeach
@stop 
现在修改页面,当我们点击时,跳转到文章详情,也就是具体的某一篇文章。
同样先 注册 ----查看文章详情 路由。跳转到 ArticlesController 控制器show()方法。
Route::get('/articles/{id}', 'ArticlesController@show');然后,控制器添加 show()方法,编辑内容:
namespace App\Http\Controllers;
use App\Article;
use Illuminate\Http\Request;
class ArticlesController extends Controller
{
//
public function index()
{
$articles = Article::all();
return view('articles.index', compact('articles'));
}
public function show($id)
{
$article = Article::find($id);
var_dump($articles);
return view('articles.show', compact('article'));
}
}修改 index.blade.php 模板视图,点击title跳转到文章具体详情页,修改文章title:
<h2><a href="/articles/{{ $article->id}}">{{ $article->title }}</a></h2>注意:该链接有以下几种方式:
<h2><a href="/articles/{{ $article->id}}">{{ $article->title }}</a></h2>
<h2><a href="{{ url('articles', $article->id)}}">{{ $article->title }}</a></h2>
<h2><a href="{{ action('ArticlesController@show',[$article->id]) }}">{{ $article->title }}</a></h2>创建 show.blade.php 模板视图,然后 编辑内容:
@extends('app')
@section('content')
<h1>{{ $article->title }}</h1>
<article>
<div class="body">
{{$article->content}}
</div>
</article>
@stop浏览器访问 http://localhost:8000/articles ,点击链接,查看文章详情:

假如访问一个不存在的文章id,会发现页面报错,我们可以使用: dd($var); 来查看输出错误信息,
或使用 Laravel提供的另外一个方法:
Article::findOrFail($id);
本文为崔凯原创文章,转载无需和我联系,但请注明来自冷暖自知一抹茶ckhttp://www.cksite.cn