前言:之前在学习并使用 Laravel 框架过程中,全是碎片化掌握,现在重新学习并记录一次学习的过程。

本文内容对应 Laravel8.* 版本。

Laravel 直达入口:

  • Laravel 框架专栏
  • Laravel 框架官网

一、视图

Laravel 的视图文件存放于 resources/views 目录中。

1.1 创建视图

<!-- View stored in resources/views/greeting.blade.php --><html><body><h1>Hello, {{ $name }}</h1></body>
</html>

将上述代码保存至 resources/views/greeting.blade.php 文件后,就可以通过 view 助手函数返回。

view 助手函数的第一个参数为 视图模板的名称,第二个参数为可供视图的数据数组。

Route::get('/', function () {return view('greeting', ['name' => 'James']);
});

也可将模板保存至 views 的子目录。使用 点 . 引用嵌套视图。

return view('admin.profile', $data);

1.2 判断视图是否存在

use Illuminate\Support\Facades\View;# 如果存在,则会返回 true
if (View::exists('emails.customer')) {//
}

1.3 向视图传递数据

  1. 使用 view 助手函数的第二个参数

  2. 使用 view 助手函数链式调用 with 方法

    return view('greeting')->with('name', 'Victoria');
    

1.4 与所有视图共享数据

有时,有一些公共数据需要在所有页面都展示,这时,你就可以在 服务提供器的 boot 方法中调用视图门面的 share 方法。例如

<?phpnamespace App\Providers;use Illuminate\Support\Facades\View;class AppServiceProvider extends ServiceProvider
{/*** Register any application services.** @return void*/public function register(){//}/*** Bootstrap any application services.** @return void*/public function boot(){View::share('key', 'value');}
}

二、视图合成器

视图合成器是调用视图时的回调或者类方法。在视图即将渲染时执行

默认没有存放 视图合成器 的目录,例如可以新建并存放在 app/Http/View/Composers 目录中。

使用 View 门面调用 composer 方法,即可在视图渲染之前被调用。

2.1 创建视图合成器

接下来的示例步骤是:

  1. 创建服务提供者并注册
  2. 在服务提供者的 boot 方法中,调用 composer 方法,定义视图合成器
  3. 定义视图合成器调用类
  1. 创建服务提供者,并在 config/app.php 文件中的 providers 数组中注册

    <?phpnamespace App\Providers;use Illuminate\Support\Facades\View;
    use Illuminate\Support\ServiceProvider;class ViewServiceProvider extends ServiceProvider
    {/*** Register any application services.** @return void*/public function register(){//}/*** Bootstrap any application services.** @return void*/public function boot(){# 2. 在服务提供者的 `boot` 方法中,调用 `composer` 方法,定义视图合成器// Using class based composers...View::composer('profile', 'App\Http\View\Composers\ProfileComposer');// Using Closure based composers...View::composer('dashboard', function ($view) {//});}
    }
    
  2. 定义视图合成器调用类

    <?phpnamespace App\Http\View\Composers;use App\Repositories\UserRepository;
    use Illuminate\View\View;class ProfileComposer
    {/*** The user repository implementation.** @var UserRepository*/protected $users;/*** Create a new profile composer.** @param  UserRepository  $users* @return void*/public function __construct(UserRepository $users){// Dependencies automatically resolved by service container...$this->users = $users;}/*** Bind data to the view.** @param  View  $view* @return void*/public function compose(View $view){$view->with('count', $this->users->count());}
    }
    

所有的视图合成器都会通过 服务容器 进行解析,所以你可以在视图合成器的构造函数中类型提示需要注入的依赖项。

2.2 将视图合成器添加到多个视图

通过 composer 方法的第一个参数传入 视图数组,就可以将多个视图添加到视图合成器中。

通过 composer 方法的第一个参数传入 星号 *,就可以将所有视图添加到视图合成器中。

# 多个
View::composer(['profile', 'dashboard'],'App\Http\View\Composers\MyViewComposer'
);# 所有
View::composer('*', function ($view) {//
});

三、视图构造器

与视图合成器不同的是,视图构造器在 视图实例化之后执行。

其他使用方法与视图合成器相同。

使用 View 门面的 creator 方法生成视图构造器。

View::creator('profile', 'App\Http\View\Creators\ProfileCreator');

四、视图优化

官网说的很明白,恩。

【PHP框架 | Laravel8 系列5】 - 视图与CSRF保护相关推荐

  1. 【PHP框架 | Laravel8 系列3】 - 路由

    前言:之前在学习并使用 Laravel 框架过程中,全是碎片化掌握,现在重新学习并记录一次学习的过程. 本文内容对应 Laravel8.* 版本. 直达入口: Laravel 框架专栏 Laravel ...

  2. 【PHP框架 | Laravel8 系列4】 - Artisan 命令行

    前言:之前在学习并使用 Laravel 框架过程中,全是碎片化掌握,现在重新学习并记录一次学习的过程. 本文内容对应 Laravel8.* 版本. 直达入口: Laravel 框架专栏 Laravel ...

  3. 【PHP框架 | Laravel8 系列1】 - Composer 安装指定 Laravel 版本

    前言:之前在学习并使用 Laravel 框架过程中,全是碎片化掌握,现在重新学习并记录一次学习的过程. 本文内容所对应 Laravel8.* 版本. 一. 安装 Composer 第一种: Compo ...

  4. 深入学习SAP UI5框架代码系列之八:谈谈 SAP UI5 的视图控件 ID,以及 SAP UI5 视图和 Angular 视图的异同

    今天是 2021 年 4 月 27 日,周二,SAP 全球心理健康日.SAP 全球的员工,今天放假一天. 这不,早在上周五,我所在的 SAP Spartacus 开发团队的开发经理,就贴心地在 Sla ...

  5. 深入学习SAP UI5框架代码系列之七:控件数据绑定的三种模式 - One Way, Two Way和OneTime实现原理比较

    这是Jerry 2021年的第 8 篇文章,也是汪子熙公众号总共第 279 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...

  6. 深入学习SAP UI5框架代码系列之六:SAP UI5控件数据绑定的实现原理

    这是Jerry 2021年的第 7 篇文章,也是汪子熙公众号总共第 278 篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加 ...

  7. 深入学习SAP UI5框架代码系列之五:SAP UI5控件的实例数据修改和读取逻辑

    这是Jerry 2021年的第6篇文章,也是汪子熙公众号总共第277篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) SAP UI5 module懒加载机制 ...

  8. 深入学习SAP UI5框架代码系列之四:SAP UI5控件的元数据实现

    这是Jerry 2021年的第5篇文章,也是汪子熙公众号总共第276篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) UI5 module懒加载机制 (2) ...

  9. 深入学习SAP UI5框架代码系列之三:HTML原生事件 VS UI5 Semantic事件

    这是Jerry 2020年的第80篇文章,也是汪子熙公众号总共第262篇原创文章. 系列目录 (0) SAP UI5应用开发人员了解UI5框架代码的意义 (1) UI5 module懒加载机制 (2) ...

最新文章

  1. 成就PHP高手的五个必由之路
  2. python中import与input_python3入门之print,import,input介绍
  3. nginx A/B 灰色发布
  4. Asp.net(C#)常用函数表--新手必备
  5. AMD、CMD、CommonJS、ES6(import/export)
  6. linux服务器 版本 比例,Linux比例近半 服务器操作系统混战开始
  7. 参数 携带 跳转_微信小程序:页面跳转及参数传递
  8. html页面授权码,spring boot 2.0 整合 oauth2 authorization code授权码模式
  9. 亲密关系沟通-【归属感】提升归属感的沟通方法
  10. 1./app/logs/ 里面的日志只保留7天的(apache每天生成一个文件)
  11. android屏幕内容实时传输,在设备之间无缝传输内容
  12. 论中国智慧城市的发展前景
  13. 修改openssh版本信息
  14. Spring Boot多数据源配置并通过注解实现动态切换数据源
  15. 基于numpy实现矩阵计算器
  16. JSTL 标签库c:if :forEach :forTokens
  17. Atitit 二维码和条码的历史发展 1.发展历程 编辑提及二维码的诞生,我们还得倒回至上个世纪 60 年代之后的日本,虽然 1945 年的第二次世界大战之中日本沦为战败国,可是在经济方面日本却进入
  18. 印第安人的捕梦网 Dreamcatcher 与音乐——排箫
  19. 网友:后悔知道太晚了,视频被判定为重复度过高?原来答案是这样
  20. f81沒有啟用配銷模組,全用INV的雜項處理方式處理,有以下管理要求

热门文章

  1. 博睿孟曦东:致力于提升企业关键业务可靠性与稳定性使其IT质量可视化
  2. 过期域名查询 php,域名啦过期删除域名检索系统 v1.0
  3. 甜度超标,程序员的尿竟是甜的,但更可怕的却是...
  4. B站榜单丨B站UP主行业排行榜周榜
  5. 移动硬盘故障损坏照片怎么恢复
  6. 鸿蒙系统怎么安装mate30,mate30 5g 鸿蒙系统在哪里下载安装
  7. NewstartHA 配置技巧
  8. Holder不等式的证明
  9. MobileNetV1实战:使用MobileNetV1实现植物幼苗分类
  10. 【算法练习】含重复字符的全排列