美文网首页Laravel开发实践Laravel
Laravel从入门到上线运营-05blade模版篇

Laravel从入门到上线运营-05blade模版篇

作者: 3275508ab630 | 来源:发表于2019-10-08 16:32 被阅读0次

    Laravel从入门到上线运营-05blade模版篇

    浏览器随便打开一个网页,点击右键查看源代码。这些就是HTML代码,浏览器将这些传化成网页给我们查看。

    做网站简单的来说就是读取 mysql 里的数据放到 html 里已供展示访问,当然数据也是通过网页方式去增加修改删除操作。

    laravel 开发并不直接编写 html 文件,而是用 bladephp 文件来写代码,叫 模板文件laravel 会将此文件转为 html 格式 发给浏览器。

    之前我们修改的 welcome.blade.php 就是 模板文件,那访问首页展示 welcome.blade.php 的逻辑代码就在写 blog/routes/web.php 路由文件中,路由 简单可以理解成你网站里那些可以访问地址。

    Route::get('/', function () {
        return view('welcome');
    });
    

    代码就三行,照抄就行,laravel 就是这么规定的,没有为什么。但正常开发是不会这样写,一般是指向 controller 里的一个方法。我们修改成

    Route::get('/', 'IndexController@index');
    

    然后在 blog/app/Http/Controllers 中创建 IndexController.php 文件。

    不推荐手动去创建,phpstorm 打开 View -> Tool Windows -> Terminal,这也是命令行工具。输入

    php artisan make:controller IndexController
    

    它就帮你创建好了,非常方便。再添加 index 方法,如下

    <?php
    
    namespace App\Http\Controllers;
    
    use Illuminate\Http\Request;
    
    class IndexController extends Controller
    {
        public function index()
        {
            return view('welcome');
        }
    }
    

    上面说到 blade 是用来展示数据的,我们就是在方法里扔数据给它,文档里有很多种方式传递数据,但是我们只取一种最好的方法使用。弱水三千只取一瓢饮。

    public function index()
    {
        $time = '今天周二';
        return view('welcome', compact('time'));
    }
    

    welcome.blade.php 模板中展示数据

    <div class="title m-b-md">
        {{ $time }}
    </div>
    

    那再创建一个路由就是举一反三了,路由也有很多种写法,这些同学自己学习。

    我们观察一下其他人的网页 html 代码都是固定结构的,html 中包 headcssbodyscript。而且同一个网站的不同网页 head 里很多代码都是重复一模一样的,cssjs 引用一致。

    如果只是复制黏贴,那网页多了,就不科学了。这里我们使用模板的提供的方法,让 html 代码共用。

    创建一个 app.blade.php,写入公共部分代码,引用 bootstrapjquery之类的前端文件,这些前端同学们自己学习。

    boostrap 官网:https://getbootstrap.com

    75cdn 官网:https://cdn.baomitu.com

    <!doctype html>
    <html lang="en" class="h-100">
    <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0">
        <meta name="csrf-token" content="{{ csrf_token() }}">
    
        <title>@yield('title', '')@hasSection('title')-这里填网站名@else这里填网站名@endif</title>
    
        <meta name="keywords" content="@yield('keywords', '这里填网站名')">
        <meta name="description" content="@yield('description', '这里填网站名')">
    
        <link crossorigin="anonymous" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" href="https://lib.baomitu.com/twitter-bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet">
    
        @yield('css')
    </head>
    <body class="d-flex flex-column h-100">
        <header>
            <nav class="navbar navbar-expand-md navbar-dark bg-dark">
                <a class="navbar-brand" href="{{ url('/') }}">这里填网站名</a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="collapse navbar-collapse" id="navbarCollapse">
                    <ul class="navbar-nav mr-auto">
                        <li class="nav-item active">
                            <a class="nav-link" href="{{ url('/') }}">Home</a>
                        </li>
                    </ul>
                </div>
            </nav>
        </header>
    
    
        <main role="main" class="flex-shrink-0">
            @yield('content')
        </main>
    
        <footer class="footer mt-auto pb-0 pt-3">
            <div class="text-center bg-dark py-2">
                <small class="text-white">&copy; {{ date('Y') }} <a href="{{ url('/') }}" class="text-white">这里填网站名</a></small>
            </div>
        </footer>
    
        <script crossorigin="anonymous" integrity="sha384-vk5WoKIaW/vJyUAd9n/wmopsmNhiy+L2Z+SBxGYnUkunIxVxAv/UtMOhba/xskxh" src="https://lib.baomitu.com/jquery/3.4.1/jquery.min.js"></script>
        <script crossorigin="anonymous" integrity="sha384-xrRywqdh3PHs8keKZN+8zzc5TX0GRTLCcmivcbNJWm2rs5C8PRhcEn3czEjhAO9o" src="https://lib.baomitu.com/twitter-bootstrap/4.3.1/js/bootstrap.bundle.min.js"></script>
    
        @yield('js')
    </body>
    </html>
    

    以后都已 app.blade.php 为基础,让 welcome.blade.php 继承它看看效果

    @extends('app')
    
    @section('title', '首页')
    
    @section('content')
        <div class="container">
            <div class="row">
                <div class="col-12">
                    <h1 class="my-5">{{ $time }}</h1>
                </div>
            </div>
        </div>
    @endsection
    

    这些 blade 方法同学参考文档练习几遍就能明白什么意思。今天写的这些就可以提交一下 git了,最好每天提交或者按功能完成度提交一下 git

    相关文章

      网友评论

        本文标题:Laravel从入门到上线运营-05blade模版篇

        本文链接:https://www.haomeiwen.com/subject/qfobpctx.html