博主信息
小星的博客
博文
48
粉丝
0
评论
0
访问量
20479
积分:0
P豆:100

Laravel 视图学习

2020年03月26日 21:12:40阅读数:330博客 / 小星的博客/ Laravel
1. 视图位置

2. 视图语法

Laravel 中使用 return view('movies/index', $data); 方法来进行视图的渲染。带数据有两种写法,效果是一致的。

return view('movies/index', $data);return view('movies/index')->with($data);

数据(一般都是传数组)会传到 视图模板中,数据数组中的 键key 在模板中使用 {{$key}} 来渲染该键对应的值,视图只会这样处理数组下的第一维,如果有多维,那二维部分就按照正常数据的调用方法使用。如: {{$key['subkey']}}

eg:

controller\Home.php// 定义加载movies视图方法public function movies(movies $movies){ $all = $movies->all()->toArray(); // 数据结构:array = (0=>array, 1=>array, ...) $data['movies'] = $all; // 由于是 索引数组,视图无法处理,所以给套一层,给个键名视图就能找到了。 return view('movies/index')->with($data);}

/movies/index.blade.php这里 是 movies 首页<h2>这里 是 movies 首页</h2><ul> <?php foreach ($movies as $item){ ?> <li> <h3>{{$item['name']}}</h3>

{{$item['detail']}}

</li> <?php }?></ul>3. 规范

controller 目录与对应的 views 目录最好保持一致,这样一来可以使得结构规范,二是可以更直观地反应对应关系。eg: 控制器Admin/Boss/index 方法 对应 admin/boss/index.blade.php 视图

4. 视图公共部分提取 因为 Laravel 用的是 blade 模板,所以可以 blade的语法来引入公共视图文件@include('public/header') 也可以用 @include('public.header'),路径对应着views下的public文件夹(自定义)css存放位置:根目录下 public 文件夹中,不在 resources 文件中。

<head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <link rel="stylesheet" href="//m.sbmmt.com/css/admin/boss/index.css"> <title>Document</title></head><body> @include('public/header') {{$content}} @include('public/footer')</body></html>5. 控制器与模型命名冲突

控制器与模型的命名尽量不要冲突,如果冲突可能会造成报错。这里有两个解决办法:

model 使用时 带上命名空间,这样框架就会知道是哪一个Movies

<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;class Movies extends Controller{ public function abc(\App\Models\Movies $movies){ print_r($movies->getAll()); }}

给 model 带上别名,不过不推荐使用,不到万不得已不要使用。因为你不知道你的别名会和什么又冲突。

<?phpnamespace App\Http\Controllers;use App\Models\Movies as Movie;use Illuminate\Http\Request;class Movies extends Controller{ public function abc(Movie $movies){ print_r($movies->getAll()); }}6. blade 模板

blade 模板在渲染时会调用 htmlspecialchars方法, 将变量的值全部进行转义后再渲染到页面上。 eg:

数据:'content' => '<p style="color: red"">这是主体部分

'

视图:

<div class="main"> {{$content}}</div>

渲染出来后:

查看网页源代码可以看到:blade 模板把特殊字符都进行了转义。

这是一种安全机制,可以防止 xss攻击

2. 一些常用 blade 模板语法

{!!$content!!} 不转义原样输出变量

@{{$content}} 不编译输出,即不解释

@php ... @endphp 放 php 代码

@if ... @elesif ... @endif

@foreach($list as $item) ... @endforeach

@for($i=0; $i@while($i @continue($i==0) 跳出循环

@break($i==1) 跳出循环

blade语法都是没有分号的,这里要注意

3. 模板布局继承

定义一个布局,然后被不同的子版继承,这是非常常见的用法。

一些主要方法

继承布局 @extends('layout.index')

子版中定义 @section('name') ... @endsection

布局中定义节点 @section('name') ... @show

显示区块 @yield('name')

@parent 布局中区块中的内容

1、定义一个布局

<div class="header"> <ul> <li class="nav-item"> <a href="javascript:;">首页</a> </li> </ul> </div> <div class="content"> 显示区块 @section('main') 这里是模板中的内容

@show 显示区块 @yield('news') @yield('title') @section('list1') 这里是列表一

@show @section('list2') 这里是列表二

@show </div> <div class="footer">

江苏XXXXXX破产公司技术支持

</div>

2、 写个视图来继承布局

首先继承布局 @extends('layout/index') 定义区块 @section('main') @parent 保留布局中该区块的内容,默认是直接替换的 这里是 article视图定义的main区块

@endsection @section('news')

这里是新闻内容

@endsection 这种是放字符串,这里面的标签不会被渲染出来 @section('title', '这里是title') {{--列表1--}} @section('list1') @parent @foreach ($content as $item) 姓名:{{$item['name']}} 年龄:{{$item['age']}} @endforeach @endsection {{--列表2--}} @section('list2') @parent <ul> @for ($i=0;$i<count($content);$i++) <li> 姓名:{{$content[$i]['name']}} 年龄:{{$content[$i]['age']}} </li> @endfor </ul> @endsection

版权申明:本博文版权归博主所有,转载请注明地址!如有侵权、违法,请联系admin@php.cn举报处理!

全部评论

文明上网理性发言,请遵守新闻评论服务协议

条评论
  • laravel在Resources目录中的views目录中。
    laravel是款比较强大的框架,它是国外框架,所以在安装的上面可能比较麻烦。本文介绍了在php中如何laravel框架,大家一起看看吧。
    如何PHP?本篇文章给大家分享一下Php路线。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。
    ​下面由Laravel教程栏目给大家介绍Laravelview()与重定向redirect(),希望对需要的朋友有所帮助!
    这篇文章主要介绍了python 抓取知乎指定回答下频的方法,文中讲解非常详细,代码帮助大家更好的理解和,感兴趣的朋友可以了解下。
    本文是关于微信小程序如何使用echarts表,有兴趣的了解一下。
    它的数据并不是存储在硬盘中,而是缓存在内存中,所以读写速度特别快,比如最近非常流量的微信抢红包软件就是利用redis技术,redis在速度要求较高的网站或者软件中应用广泛,今天php中文网就为你推荐5个不错的redis实战频教程
    本篇我们继续向同们精选推荐一些适合新手的CSS基础入门教程,包含CSS入门频教程、CSS文教程和CSS实战课程,欢迎
    php中文网为了广大php初者特整理了Laravel频教程全集,包含搜集了最新的laravel5.0和laravel5.2频教程,韩顺平的laravel频教程,后盾网的laravel频,统统免费在线观看
    我最早使用 Laravel 工作的版本是 4.2 ,现在我仍然是它忠实的粉丝。当然,多年来我到了很多,也遇到了很多问题、困难,但我仍然期待 Laravel 接下来会发生怎样的变化。
    PHP不一定要多看频,多看教程,但一定要多动手练,孰能生巧。跟着频敲代码,看着这教程去练,对你的技术肯定会有帮助的。下面我们就来推荐一些PHP频教程,希望对PHP的朋友有帮助。
    本专题通过文、频的全面介绍了php cookie的由来,php cookie属性有哪些,php cookie函数用法以及php cookie实际应用实例,通俗易懂!欢迎php中文网的同
    php中文网为大家整理了一些Discuz二次开发频教程,可直接免费在线观看,不需要去百度网盘下载,更加方便、简洁。Discuz频教程较少,后期有新的频教程,我们会第一时间更新!
    ui设计要Photoshop、Illustrator、Flash等形软件的操作,还要配色、排版、字体设计、三大构成、消费心理、沟通、思维导、原型,还有交互逻辑、规范、切、了解程序、用户体验以及营销
    Blade模板是是Laravel提供的模板引擎,它简单强大,Blade允许在中使用原生PHP代码,Laravel使用的是编译后的缓存文件,而不是本身,所以Blade对于应用程序来说是零开销。

    2020-07-04

    558

    MATLAB是美国MathWorks公司出品的商业数软件,用于数据分析、无线通信、深度像处理与计算机觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
    matlab是美国MathWorks公司出品的商业数软件,用于数据分析、无线通信、深度像处理与计算机觉、信号处理、量化金融与风险管理、机器人,控制系统等领域。
    前后端分离一直是laravel绕不开的话题。前期我们可以通过基于laravel优秀的框架(比如laravel-admin,dcat-admin),快速构建一个不需要太多前端代码的后台管理系统。
    以下是php中文网2020年度5月份最受欢迎的五个html5频教程排名统计情况,其中php中文网原创精品教程《独孤九贱》系列《php.cn独孤九贱(2)-css频教程》次数上升最快,故列为最受欢迎
    python频教程栏目为大家介绍如何使用Jupyter NotebookPython,一起来看吧。