webmasterhm / laravel-html
从 Styde 分支而来。快速构建表单字段、菜单、警告消息和其他视图组件
Requires
- php: ^8.1
- illuminate/translation: ^10.0
- laravelcollective/html: ^6.0
Requires (Dev)
- phpspec/phpspec: ~7.0
This package is auto-updated.
Last update: 2024-10-01 00:09:06 UTC
README
此包包含一组Laravel PHP类,旨在生成常见的HTML组件,例如:
- 菜单
- 警告消息
- 表单字段
- 单选按钮和复选框集合
这是Laravel Collective HTML包的扩展,如果您正在开发自定义CMS、管理面板或基本任何需要动态生成HTML的项目,它将非常有用。
如何安装
- 安装此包的首选方式是通过Composer
Laravel 6.0用户/Laravel 7.0用户:
通过运行 composer require "styde/html=~1.8"
或将 "styde/html": "~1.8"
添加到您的 composer.json
文件中,然后运行 composer update
进行安装。
Laravel 5.8用户:
通过运行 composer require "styde/html=~1.7"
或将 "styde/html": "~1.7"
添加到您的 composer.json
文件中,然后运行 composer update
进行安装。
Laravel 5.7用户:
通过运行 composer require "styde/html=~1.6"
或将 "styde/html": "~1.6"
添加到您的 composer.json
文件中,然后运行 composer update
进行安装。
Laravel 5.6用户:
通过运行 composer require "styde/html=~1.5"
或将 "styde/html": "~1.5"
添加到您的 composer.json
文件中,然后运行 composer update
进行安装。
Laravel 5.5用户:
通过运行 composer require "styde/html=~1.4"
或将 "styde/html": "~1.4"
添加到您的 composer.json
文件中,然后运行 composer update
进行安装。
- 接下来,将新的提供者添加到
config/app.php
文件中的providers
数组中(如果您使用的是带有包自动发现的Laravel 5.5,则此步骤不是必需的)
'providers' => [ // ... Styde\Html\HtmlServiceProvider::class, // ... ],
- 此外,您还需要在
app/Http/Kernel.php
文件中注册\Styde\Html\Alert\Middleware::class
中间件,在EncryptCookies
中间件之前(对于Laravel 5.8及以后的版本,中间件需要在StartSession
中间件之后注册。对于Laravel 5.4及以后的版本,它在$middlewareGroups
数组中,对于旧版本(Laravel 5.3、5.2、5.1)它在$middleware
数组中)
// For Laravel 5.4 and later protected $middlewareGroups = [ // For Laravel 5.8 and later this needs to be after the StartSession middleware \Styde\Html\Alert\Middleware::class, //... ]; // For Laravel 5.3, 5.2, 5.1 protected $middleware = [ //... \Styde\Html\Alert\Middleware::class, //... ];
此中间件是必需的,以便在每次请求完成后使警告消息在会话间持久化。
请注意,以下全局别名将自动可用(您无需添加它们)
Alert => Styde\Html\Facades\Alert Field => Styde\Html\Facades\Field Menu => Styde\Html\Facades\Menu Form => Collective\Html\FormFacade Html => Collective\Html\HtmlFacade
如果您计划将 访问处理程序 作为独立类使用,您需要添加以下别名
'aliases' => [ // ... 'Access' => Styde\Html\Facades\Access::class, // ... ],
可选地,您也可以运行 php artisan vendor:publish --provider='Styde\Html\HtmlServiceProvider'
以发布 config/html.php
中的配置文件并检查其选项和值。
用法
由于此包主要使用 LaravelCollective/Html,因此其关于表单和字段的文档也适用于此包。
沙盒
此包旨在保持良好的文档和单元测试;然而,还有一个包含集成测试和几个路由的存储库,您可以将它克隆出来以在浏览器中查看此包组件的实际操作,或者运行包含的集成测试。
您可以通过审查这些示例和测试来了解如何使用此组件,这将是学习此组件的另一种方式,而不仅仅是阅读文档。
配置
本包在配置方面进行了优化设计,如果您之前未使用过此组件,可以简单运行
php artisan vendor:publish --provider='Styde\Html\HtmlServiceProvider'
这将发布所有配置选项到:config/html.php
文件,您可以在此文件中探索和阅读注释,了解更多关于配置选项及其值的详细信息。
注意:由于默认配置将与自定义配置合并,因此您不需要在每个项目中发布整个配置;相反,只需设置您需要覆盖的值。
阅读此文档以了解更多关于本包提供的不同配置选项的信息。
表单字段构建器
字段构建器允许您通过一行代码渲染每个表单字段所需的完整动态标记。
如果您之前使用过Laravel Collective HTML组件,您已经了解了基础知识,只需将别名“Form”替换为“Field”,例如,将
{!! Form::text('name', 'value', $attributes) !!}
替换为
{!! Field::text('name', 'value', $attributes) !!}
表单
此包为Laravel Collective的表单构建器添加以下功能
novalidate
禁用HTML5验证,适用于本地或开发环境
//config/html.php return [ 'novalidate' => true ];
radios
生成一组单选按钮:例如
{!! Form::radios('status', ['a' => 'Active', 'i' => 'Inactive']) !!}
checkboxes
生成一组复选框
$options = [ 'php' => 'PHP', 'js' => 'JS' ]; $checked = ['php'];
{!! Form::checkboxes('tags', $options, $checked) !!}
警告消息
此组件允许您生成复杂的警告消息。
Alert::info('Your account is about to expire') ->details('Renew now to learn about:') ->items(['Laravel', 'PHP', 'And more!']) ->button('Renew now!', url('renew'), 'primary');
{!! Alert::render() !!}
菜单生成器
菜单不是静态元素,有时您需要标记当前部分、翻译项目、生成动态URL或显示/隐藏某些用户的选项。
因此,您不需要添加大量的HTML和Blade模板代码,可以使用此组件生成针对您首选CSS框架进行样式设计的动态菜单。
要生成菜单,请将以下代码添加到布局模板中
{!! Menu::make('items.here') !!}
HTML构建器
此包扩展了Laravel Collective HTML构建器的功能。
目前只有一个额外的方法,但它非常有用!
生成CSS类
{!! Html::classes(['home' => true, 'main', 'dont-use-this' => false]) !!}
返回:class="home main"
辅助工具
除了使用外观方法 Alert::message
和 Menu::make
之外,您还可以使用
alert('this is the message', 'type-of-message')
menu($items, $classes)
访问处理器
有时您希望对某些用户显示或隐藏特定菜单项、表单字段等,使用此组件可以做到这一点,而无需使用条件语句或过多的额外模板代码,只需将以下选项之一作为字段属性或菜单项值传递即可。
- 回调:一个函数,如果允许访问则返回true,否则返回false。
- 登录:true要求认证用户,false要求访客用户。
- 角色:如果用户属于任何所需角色,则为true。
例如
{!! Field::select('user_id', null, ['roles' => 'admin']) !!}
主题
市面上有大量的CSS框架,本包在设计时就考虑了这一点,尽管Bootstrap(版本3和4)和Bulma已默认包含,但我们计划在未来添加更多包(我们也邀请您进行合作)。
但您也可以轻松创建自己的主题,或修改现有主题
要更改和/或自定义主题,请运行
php artisan vendor:publish
然后转到 config/html.php
并更改主题值
//config/html.php return [ 'theme' => 'your-theme-here' ];
您可以在 resources/views/themes/
中编辑和/或创建新模板
国际化
本包在设计时也考虑了国际化。
如果您不打算使用此功能,可以在配置中禁用翻译
//config/html.php return [ //… 'translate_texts' => false //… ];
但如果您的项目需要实现多种语言,或者您希望将所有文本组织在resources/lang/
目录下,而不是在控制器、视图等地方硬编码,请将'translate_texts'
设置为true
。
更多文档
如果您深入研究源代码,可以找到许多注释,以及位于spec/目录下的单元测试,您还可以克隆集成测试仓库。
如果您有其他问题,请随时在Twitter上联系我(@Sileence)或发送电子邮件至admin@styde.net。
许可证
Styde\Html包是开源软件,采用MIT许可证。