开发 web 应用是个复杂的过程,同一个功能实现方式很多,其实有时候仅仅是选择太多,就是把新手搞晕的一个重要原因。 这个问题在php的世界中尤其严重,实在是有太多的技术栈,太多不同的框架供你选择了。 laravel 有从rails那里借鉴来的一套 最优的做法,这就是 The Laravel Way

The Laravel Way

laravel 的根本骨架是上面的 mvc 结构,不过这一集只来关注 route -> controller -> view 的这条线。

routes/web.php 中修改

Route::get('/', 'WelcomeController@index');
Route::get('about', 'WelcomeController@about');

添加 controller

php artisan make:controller WelcomeController

Tips: windows用户,直接点击laragon终端打开cmder,再来打命令就好。还要确认命令行所在的路径是项目路径,如果路径不对,你需要先使用cd命令进入对应的目录,例如cd meetup

class WelcomeController extends Controller
{
    public function index()
    {
        return view('welcome.index');
    }

    public function about()
    {
        return view('welcome.about');
    }
}

接下来,就要来添加html模板了。

views

  1. https://github.com/AaronRyuu/laravel_meetup/tree/html中下载提供的静态模板。
  2. 将提供的assets文件夹,拷贝到meetup/public目录。
  3. resources/views目录中新建一个叫做welcome文件夹。
  4. index.htmlabout.html拷贝到resources/views/welcome,并把文件后缀名都改为blade.php
  5. 修改aboutindex页面导航栏中的链接地址。
<a href="/">Meetup</a>
<li><a href="/about">关于</a></li>

通过浏览器访问 //about 现在都可以正常浏览页面了。

布局模板

写程序有一个原则,就是Don't Repeat Yourself,因为重复的代码,你改动一个地方,就要有两倍的工作量了。现在index之中有一大部分内容都是和about模板中一样的,这就造成两个模板中,存在大量重复的代码。

所以这是个问题,看看 laravel 怎么来解决。这就涉及到一个概念,叫做 layout 布局模板。

  1. resources/views之中新建一个layouts文件夹。
  2. about.blade.php复制到layouts,并改名为app.blade.php
  3. 找到和index页面不同的中间部分。用@yield('content')代码替代。这样一个布局模板就已经定义完了。
  4. 再来到about.blade.php中,删除所有共同的部分,只保留不同的地方。加上这些代码包裹起来。
@extends('layouts.app')
@section('content')
    <div class="detail">
        <div class="am-g am-container">
            <div class="am-u-lg-12">
                <h1 class="detail-h1">About</h1>
            </div>
        </div>
    </div>
@endsection

index.blade.php中,也按同样的方法处理。再来访问,发现依然是可以正常浏览的。

静态文件路径修改

最后再来做一点优化。到app布局模板中,给所有的assets路径前面加上一个/。 这是为了防止后面的课程,出现路径错误。对于初学者来说,暂时不需要太了解太多细节。

好,这一集就到这里。