首页显示的两条最新活动,是我们html模板中写死的数据。他们与我们php程序一点关系都没有。 现在我们就想办法,让这两条数据从 controller中发出,然后在模板中显示。

controller里传数据

public function index()
{
    $issues = [
        ['title' => 'PHP lovers'],
        ['title' => 'Rails and Laravel']
    ];
    return view('welcome.index')->with('issues', $issues);
}

修改index.blade.php

删除一条重复的issue,然后给另一条做foreach循环

@foreach($issues as $issue)
    <li class="...">
        ...
        <a href="issues_show.html">{{$issue['title']}}</a>
        ...
    </li>
@endforeach

刷新页面,看到数据已经显示为我们控制器中的数据了

Sub-Views

https://laravel.com/docs/5.5/blade#including-sub-views

对于最新活动列表,我们还可以把他分离为一个 子视图文件。

步骤

  1. resources/views/welcome 中添加活动列表 _issue_list.blade.php文件。
  2. index.blade.php活动列表部分的代码,剪切到_issue_list.blade.php中。
  3. 再到 index.blade.php中加上
@include('welcome._issue_list')

重新访问,依然可以正常显示。

Tips: 我个人习惯将 子视图文件名,加上一个_前缀,这个习惯也是来自于ruby on rails了。好处是,可以直观的把子视图和其他模板区分开。