rnr1721 / le7-view
le7 PHP 框架或任何 PSR PHP 项目的视图模块
1.3.2
2023-05-28 10:59 UTC
Requires
- php: >=8.1
- psr/event-dispatcher: ^1.0
- psr/http-message: ^2.0
- psr/simple-cache: ^3.0
Requires (Dev)
- phpunit/phpunit: ^10.0
- vimeo/psalm: ^5.7
README
le7 框架或任何 PHP 项目的基视图组件。
您可以在任何 PHP 8 PSR 项目中安装这些组件之一。
要求
- PHP 8.1 或更高版本。
- Composer 2.0 或更高版本。
它能做什么?
- AssetsCollection 对象用于管理 JS 和 CSS 集合
- WebPage 对象用于存储网页头部和脚本数据
- ViewTrait 是 le7-framework 的任何视图适配器的一部分
安装
此组件是本项目的依赖项
- https://github.com/rnr1721/le7-view-twig - Twig 渲染器
- https://github.com/rnr1721/le7-view-smarty - Smarty 渲染器
- https://github.com/rnr1721/le7-view-php - PHP 渲染器
您必须安装其中一个才能使用,但...
composer require rnr1721/le7-view
测试
composer test
AssetsCollection
这是一个用于管理资产集合的强大工具。它可以由特殊的设置方法控制,或者您可以在构造函数中将配置数组设置进去。
配置示例
$styles = [ 'bootstrap5' => 'https://cdn.jsdelivr.net.cn/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css' ]; $scripts = [ 'axios' => [ // You can define with params as need 'script' => 'https://cdnjs.cloudflare.com/ajax/libs/axios/1.4.0/axios.min.js', 'params' => 'defer' ], // Or you can define scripts directly 'jquery' => 'https://code.jqueryjs.cn/jquery-3.7.0.min.js', 'vuejs' => 'https://cdn.jsdelivr.net.cn/npm/vue@2.7.8/dist/vue.js', 'bootstrap5' => 'https://cdn.jsdelivr.net.cn/npm/bootstrap@5.2.3/dist/js/bootstrap.min.js' ]; $collections = [ 'mycollection' => [ 'scripts_header' => [ 'vuejs' ], 'scripts_footer' => [ ], 'styles' => [ 'bootstrap5' ] ] ];
注意:现在您可以在 CDN 中使用“变量”:本地位置的 URL:{url},{libs},{js},{css} 示例:{url}/libs/jquery.js
现在,我们可以创建 AssetsCollectionGeneric(实现 AssetsCollectionInterface)的实例
use Core\View\AssetsCollectionGeneric; $ac = new AssetsCollectionGeneric($scripts, $styles, $collections);
设置脚本的方法
setStyle
您可以为样式库设置新的样式
$ac->setStyle('bootstrap5', 'https://link_to_bootstrap5.css');
setScript
您可以为样式库设置新的脚本
$params = 'defer' // Not-required $ac->setScript('bootstrap5', 'https://link_to_bootstrap5.js', $params);
setCollection
您可以为样式库设置新的集合:例如,我们需要一个包含 vuejs JS 和 bootstrap5 CSS 的集合:当然,所有具有键的脚本在设置之前都需要定义。
// Add to header $ac->setCollection('mycollection', ['vuejs'], [], ['bootstrap5']); // Add to footer $ac->setCollection('mycollection', [], ['vuejs'], ['bootstrap5']);
WebPage 对象
WebPage 对象收集有关网页的各种信息,您可以在网页模板中使用它 - 脚本、样式、元标签、导入映射、标题、描述、关键词等。
ViewTopology 对象
ViewTopology 需要存储基本路径和 URL。