Laravel学习笔记基础系列--(七)Laravel视图快速使用

作者: 温新

分类: 【Laravel】

阅读: 2142

时间: 2021-07-04 12:34:41

作者:温新

时间:2021-06-25

路由、控制器都有,就差视图了。本篇就是介绍如何快速使用视图,从而构建起快速开发。

所有的视图文件存放在resources/views目录下,且所有视图文件以.blade.php结尾。

创建视图

创建控制器视图(必用)

控制器视图是我这样叫的,因为就是实际开发,路由-控制器-视图。在控制器方法中返回视图界面。

第一步:定义路由

// web.php
Route::get('demo', 'DemoController@index');

第二步:控制器加载视图

用法:view('视图文件名',['数据key'=> 'value']);

// DemoController.php
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class DemoController extends Controller
{

    public function index()
    {
        // 返回视图界面
        // 建议写上视图名
        return view('demo.index');
    }
}

第三步:创建视图

文件位置:resources/views/demo/index.blade.php

<div>我是视图文件</div>

第四步:浏览器访问URL

打开浏览器访问就可以看到输出的内容'我是视图文件'。

路由-控制器-视图都通畅了,把视图内容换成真实的项目模板不就是开发了吗?是的,但想提交数据,还不行。下一篇文章介绍CSRF验证,解决数据提交问题。

传递数据到视图

实际开发中,是有许多数据要传递到视图文件,从而被视图文件所使用继而被渲染出来。下面就记录几种方法:

方式一:数据形式传递数据

// DemoController.php
public function index()
{
    return view('demo.index',['webName'=>'自如初','webUrl'=>'https://www.ziruchu.com']);
}

以下测试均在index方法中,请自行注释之前的代码并进行其他方法的测试

视图使用(demo/index.blade.php)

{{-- 使用的是blade模板语法 --}}
{{-- 后续会介绍,先跟着操作就行 --}}
{{ $webName }}
{{ $webUrl }}

方式二:with()方法传递

// DemoController.php
// 传递一个数据
return view('demo.index')->with('webName','自如初');
// 传递多个数据
return view('demo.index')->with([
    'webName'=>'自如初',
    'webUrl'=>'https://www.ziruchu.com'
]);

方式三:compact()方式-推荐使用

// DemoController.php
$data = [
    'webName'=>'自如初',
    'webUrl'=>'https://www.ziruchu.com'
];
return view('demo.index', compact('data'));

视图使用(demo/index.blade.php)

{{ $data['webName'] }}
{{ $data['webUrl'] }}

视图之间共享数据

目前数据只能在对应的视图文件中使用,假如有一个标题需要在所有视图文件中使用该怎么办?使用share方法使得数据可以在所有视图中被使用,这就是视图之间的数据共享。

使用视图间的数据共享,需要在某个服务提供者中的boot方法中使用share方法。

// app/Providers/AppServiceProvider.php

use Illuminate\Support\Facades\View;

public function boot()
{
    // 所有视图都可以使用该数据
    View::share('generalData','我是可以所有视图使用的数据');
}

这样定义之后就可以直接在视图文件中使用了。

// demo/index.blade.php

{{$generalData}}

我是温新

每天进步一点点,就一点点

请登录后再评论