<div class="blogpost-body" id="cnblogs_post_body">
<p>在本篇文章中,我们将尝试构建一个带后台的简单博客系统。我们将会使用到 路由、MVC、Eloquent ORM 和 blade 视图系统。</p>
<h2>简单博客系统规划</h2>
<p>我们在教程一中已经新建了一个继承自 Eloquent Model 类的 Article 类,使用 migration 建立了数据表并使用 seeder 填入了测试数据。我们的博客系统暂时将只管理这一种资源:后台需要使用账号密码登录,进入后台之后,可以新增、修改、删除文章;前台显示文章列表,并在点击标题之后显示出文章全文。</p>
<p>下面我们正式开始。</p>
<h2>搭建前台</h2>
<p>前台的搭建是最简单的,我先带大家找找感觉。</p>
<h3>修改路由</h3>
<p>删掉</p>
<div class="highlight highlight-text-html-php">
<div class="cnblogs_code">
<pre class="blockcode">Route::get('/', <span style="color:#0000ff;">function</span><span style="color:#000000;"> () {
</span><span style="color:#0000ff;">return</span> <span style="color:#008080;">date</span>("Y-m-d H:i:s"<span style="color:#000000;">);
});</span></pre>
</div>
</div>
<p>将<code>Route::get('/home', 'HomeController@index')->name('home');</code> 改为 <code>Route::get('/', 'HomeController@index')->name('home');</code>,现在我们系统的首页就落到了 <code>App\Http\Controllers\HomeController</code> 类的 <code>index</code> 方法上了。</p>
<h3>查看 HomeController 的 index 函数</h3>
<p>将 <code>learnlaravel5/app/Http/Controllers/HomeController.php</code> 的 index 函数我们之前加的 Exception 那行代码删除,就只剩一行代码了:<code>return view('home');</code>,这个很好理解,返回名叫 home 的视图给用户。这个视图文件在哪里呢?在 <code>learnlaravel5/resources/views/home.blade.php</code>,blade 是 Laravel 视图引擎的名字,会对视图文件进行加工。</p>
<h3>blade 浅析</h3>
<p>blade 引擎会对视图文件进行预处理,帮我们简化一些重复性很高的 echo、foreach 等 PHP 代码。blade 还提供了一个灵活强大的视图组织系统。打开 <code>home.blade.php</code>:</p>
<div class="highlight highlight-text-html-php">
<div class="cnblogs_code">
<pre class="blockcode">@<span style="color:#0000ff;">extends</span>('layouts.app'<span style="color:#000000;">)
@section(</span>'content'<span style="color:#000000;">)
</span><div <span style="color:#0000ff;">class</span>="container">
<div <span style="color:#0000ff;">class</span>="row">
<div <span style="color:#0000ff;">class</span>="col-md-8 col-md-offset-2">
<div <span style="color:#0000ff;">class</span>="panel panel-default">
<div <span style="color:#0000ff;">class</span>="panel-heading">Dashboard</div>
<div <span style="color:#0000ff;">class</span>="panel-body"><span style="color:#000000;">
@</span><span style="color:#0000ff;">if</span> (session('status'<span style="color:#000000;">))
</span><div <span style="color:#0000ff;">class</span>="alert alert-success"><span style="color:#000000;">
{<!-- -->{ session(</span>'status'<span style="color:#000000;">) }}
</span></div><span style="color:#000000;">
@</span><span style="color:#0000ff;">endif</span><span style="color:#000000;">
You are logged in</span>!
</div>
</div>
</div>
</div>
</div><span style="color:#000000;">
@endsection</span></pre>
</div>
</div>
<h4><a class="user-mention" href="https://github.com/extends">@extends</a>('layouts.app')</h4>
<p>这表示此视图的基视图是 <code>learnlaravel5/resources/views/layouts/app.blade.php</code> 。这个函数还隐含了一个小知识:在使用名称查找视图的时候,可以使用 . 来代替 / 或 \。</p>
<h4><a class="user-mention" href="https://github.com/Section">@Section</a>('content') ... @endsection</h4>
<p>这两个标识符之间的代码,会被放到基视图的 <code>@yield('content')</code> 中进行输出。</p>
<h3>访问首页</h3>
<p>首先删除 <code>learnlaravel5/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php</code> 中 <code>dispatch</code> 函数里我们加的的 var_dump 代码,否则会出现奇怪的页面。<br>访问 <a href="http://fuck.io:1024/">http://fuck.io:1024</a> ,不出意外的话,你会看到这个页面:</p>
<p><a href="https://camo.githubusercontent.com/be32acb9dae82b79ab062b51f210ade43d5409d8/687474703a2f2f716e2e6c7677656e68616e2e636f6d2f323031372d31312d31302d31353130323334383632313836332e6a7067"><img alt="" src="https://beijingoptbbs.oss-cn-beijing.aliyuncs.com/cs/5606289-f4395574683d0639a1d86a6fb472852a"></a></p>
<p>为什么需要登录呢? |
|