PHP - Laravel view() 使用以及传参取参

简介: PHP - Laravel view() 使用以及传参取参

一、简介

  • 视图的用途是用来存放应用程序中 HTML 内容,并且能够将你的控制器层与展示层分开,在控制器中使用助手函数 view() 来加载视图模板。

二、视图目录位置与命名

  • 视图目录位置:resources/views,存放的也是 HTML 内容。

  • welcome.blade.php 是默认文件,也就是启动 Laravel 看到的那个欢迎页面。
  • 模板命名:例如 welcome.blade.php 的模板文件名称是 welcome.blade.php 是固定的双后缀。如果需要新建一个 index 视图页面,创建的文件应该是 index.blade.php
  • view() 使用方式
// 展示视图页面,不传值
// 例如:view('index')
view('模板文件名称')
// 展示视图页面,传值
// 例如:
// $data = ['id'=>1, 'name'=>'dzm'];
// view('index', $data)
// view('index', ['obj'=>$data])
// view('index', ['id'=>1, 'name'=>'dzm'])
view('模板文件名称', 关联数组) 
// 展示视图页面,传值
// 例如:
// $data1 = ['id'=>1, 'name'=>'dzm'];
// $data2 = ['id'=>2, 'name'=>'xyq'];
// view('index', compact('data1', 'data2'));
view('模板文件名称', compact('数据对象1', '数据对象2')) 
// 展示视图页面,传值
// 例如:
// $data = ['id'=>1, 'name'=>'dzm'];
// view('index')->with(['data'=>$data]);
// view('index')->with(['id'=>1, 'name'=>'dzm']);
// 不能按下面这么写:
// view('index')->with($data);
view('模板文件名称')->with(关联数组)
  • 视图模板中输出变量
{{ $变量名 }}
例如:
{{ $name }}、{{ $obj['name'] }}

三、案例:路由通过 view() 访问视图

  • resources/views 中,新建一个 index.blade.php 页面,用于测试。

    路由关联到 index.blade.php 页面并访问路由地址,web.php
Route::get('req', function () {
  // 一定要写模板名称 例如路径: /resources/views/index.blade.php
  // 模板名称就是 index ,后面是双后缀不算模板名称
  return view('index');
});

四、案例:视图分模块(分文件夹)管理并通过路由访问

  • resources/views 中,新建一个 html 文件夹,并添加一个 index.blade.php 页面,用于测试。
Route::get('req', function () {
  // 一定要写模板名称 例如路径: /resources/views/index.blade.php
  // 模板名称就是 index ,后面是双后缀不算模板名称
  // return view('index');
  // 视图分模块(这种方式也可以,但是官方不推荐)
  // return view('html/index');
  // 官方推荐这种写法,两种访问结果一致,有几层文件夹就点几层下去,以 views 为根目录
  return view('html.index');
});

四、案例:通过 view() 给视图传值(带参数)

  • 下面几种传值方式,视图显示结果一致,只是传跟取的细节区别:

  • 方式一:view('模板文件名称', 关联数组)
  • web.php 路由页面:
Route::get('req', function () {
  // Json 参数
  $data = ['id'=>1, 'name'=>'dzm'];
  // 传递
  return view('index', $data);
});
  • index.blade.php 视图页面使用,发现跟 Vue小程序 等数据绑定一样,直接用 {{ $key }} 包起来只用传入对象里面的 key 即可拿到参数。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div>DZM 视图文件测试</div>
  <div>ID: {{ $id }}</div>
  <div>Name: {{ $name }}</div>
</body>
</html
  • 方式二:view('模板文件名称', 关联数组)
  • web.php 路由页面:
Route::get('req', function () {
  // Json 参数
  $data = ['id'=>1, 'name'=>'dzm'];
  // 传递,这里用 obj 再次包装一下
  return view('index', ['obj'=>$data]);
});
  • index.blade.php 视图页面使用,由于这里不像 案例一 中直接将数据抛出来,而是使用 obj 再次包装了一层,在取值的时候就需要通过 $obj 来取,取值时需要注意,不能 点语法 取值 {{ $obj.id }},而是需要 {{ $obj['id'] }} 这样取值,点语法 取值会报错。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div>DZM 视图文件测试</div>
  <div>ID: {{ $obj['id'] }}</div>
  <div>Name: {{ $obj['name'] }}</div>
</body>
</html>
  • 方式三:view('模板文件名称', compact('数据对象1', '数据对象2'))
  • web.php 路由页面:
Route::get('req', function () {
    // Json 参数
    $data1 = ['id'=>1, 'name'=>'dzm'];
    $data2 = ['id'=>2, 'name'=>'xyq'];
    // 传递
    return view('index', compact('data1', 'data2'));
});
  • index.blade.php 视图页面使用,传入的参数字符串需要跟定义的参数名一致,内部使用的使用,就直接使用 $data1['id']$data2['id'] 这样。
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div>DZM 视图文件测试</div>
  <div>ID: {{ $data1['id'] }}</div>
  <div>Name: {{ $data1['name'] }}</div>
  <div>ID: {{ $data2['id'] }}</div>
  <div>Name: {{ $data2['name'] }}</div>
</body>
</html>
  • Demo 效果

  • 方式四:view('模板文件名称')->with(关联数组)
  • web.php 路由页面:
Route::get('req', function () {
  // Json 参数
  $data = ['id'=>1, 'name'=>'dzm'];
  // 传递
  return view('index')->with(['data'=>$data]);
});
  • index.blade.php 视图页面使用:
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>
<body>
  <div>DZM 视图文件测试</div>
  <div>ID: {{ $data['id'] }}</div>
  <div>Name: {{ $data['name'] }}</div>
</body>
</html>

五、三元运算

六、输出 HTML 标签到页面展示 {!! $变量 !!}


相关文章
|
5月前
|
中间件 PHP 调度
深入浅出PHP框架之Laravel的优雅
【10月更文挑战第3天】在PHP的世界里,Laravel以其优雅和简洁闻名。本文将带你走进Laravel的世界,探索它的魔法。我们将通过代码示例,一步步揭示Laravel的魅力。准备好,让我们一起开始这场奇妙的旅程吧!
|
9天前
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
107 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
4月前
|
缓存 安全 PHP
深入浅出PHP框架之Laravel的优雅与实用
【10月更文挑战第22天】在PHP的世界里,Laravel如同一股清流,以其优雅的设计和实用的功能赢得了广大开发者的喜爱。本文将带你走进Laravel的世界,探索其背后的设计哲学,以及如何利用Laravel构建高效、可维护的Web应用。从路由到模型,从控制器到视图,我们将一步步揭开Laravel的神秘面纱。
110 3
|
4月前
|
前端开发 中间件 PHP
PHP框架深度解析:Laravel的魔力与实战应用####
【10月更文挑战第31天】 本文作为一篇技术深度好文,旨在揭开PHP领域璀璨明星——Laravel框架的神秘面纱。不同于常规摘要的概括性介绍,本文将直接以一段引人入胜的技术剖析开场,随后通过具体代码示例和实战案例,逐步引导读者领略Laravel在简化开发流程、提升代码质量及促进团队协作方面的卓越能力。无论你是PHP初学者渴望深入了解现代开发范式,还是经验丰富的开发者寻求优化项目架构的灵感,本文都将为你提供宝贵的见解与实践指导。 ####
|
5月前
|
存储 前端开发 PHP
深入浅出PHP框架之Laravel的优雅
【9月更文挑战第31天】在编程世界里,PHP语言如同一位多才多艺的老匠人,而Laravel框架则是其手中的精工细作。本文将带你领略Laravel的魅力所在,从其优雅的设计哲学到实用的功能特性,再到如何通过实际代码示例掌握它的核心操作。让我们一起探索Laravel的世界,发现编程之美。
106 6
|
7月前
|
安全 前端开发 PHP
构建与验证表单:传统PHP与Laravel框架的比较分析——探索Web开发中表单处理的优化策略和最佳实践
【8月更文挑战第31天】在 Web 开发中,表单构建与数据验证至关重要。传统 PHP 方法需手动处理 HTML 表单和数据验证,而 Laravel 框架则提供了一种更现代、高效的解决方案。本文通过对比传统 PHP 和 Laravel 的方法,探讨表单构建与验证的最佳实践。Laravel 通过简洁的语法糖、内置的数据过滤和验证机制,显著提升了代码的安全性和可维护性,适用于大型项目或需要快速开发的场景。然而,在追求灵活性的小型项目中,直接使用 PHP 仍是不错的选择。了解两者的优劣,有助于开发者根据项目需求做出最佳决策。
62 0
|
7月前
|
缓存 安全 PHP
深入浅出PHP框架:Laravel的优雅之旅
【8月更文挑战第15天】 探索PHP世界里的瑰宝,Laravel框架以其优雅、简洁著称。本文将带你领略Laravel的核心魅力,从安装到构建应用,再到高级特性的应用,让你轻松驾驭这个强大的工具。无论你是PHP新手还是资深开发者,这篇文章都将成为你理解并使用Laravel的指南针。
67 2
|
7月前
|
缓存 前端开发 API
PHP现代化之路:从传统到Laravel的演进
【8月更文挑战第4天】 在数字化浪潮不断推进的今天,PHP作为一门历史悠久的编程语言,面临着前所未有的挑战与机遇。本文将探讨PHP如何通过现代化改造,特别是Laravel框架的应用,实现从传统Web开发向现代应用架构的转变,并分析这一转变对开发者和项目带来的影响。
56 5
|
7月前
|
前端开发 中间件 PHP
|
7月前
|
缓存 中间件 PHP
Laravel 框架:优雅 PHP Web 开发的典范
【8月更文挑战第31天】
240 0

热门文章

最新文章