快速构建表单字段、菜单、警告消息和其他视图组件

1.9.2 2021-12-20 20:15 UTC

README

Build Status Downloads Version License

此包包含一组Laravel PHP类,用于生成常见的HTML组件,例如

  • 菜单
  • 警告消息
  • 表单字段
  • 单选按钮和复选框集合

这是Laravel Collective HTML包的扩展,如果您正在开发自定义CMS、管理面板或任何需要动态生成HTML的项目,它将非常有用。

如何安装

  1. 安装此包的首选方式是通过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

  1. 接下来,将新提供者添加到 config/app.php 文件中的 providers 数组中(如果您使用的是Laravel 5.5与包自动发现,则此步骤不是必需的)
'providers' => [
    // ...
    Styde\Html\HtmlServiceProvider::class,
    // ...
],
  1. 此外,您还需要在 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

如果您计划将 Access Handler 作为独立类使用,您需要添加以下别名

'aliases' => [
    // ...
    'Access' => Styde\Html\Facades\Access::class,
    // ...
],

可选地,您也可以运行 php artisan vendor:publish --provider='Styde\Html\HtmlServiceProvider' 来发布 config/html.php 中的配置文件,并查看其选项和值。

用法

由于此包主要使用 LaravelCollective/Html,因此其关于表单和字段的文档也适用于此包。

沙盒

Build Status

此包旨在具有良好的文档和单元测试;然而,还有一个包含集成测试和几个路由的另一个存储库,您可以克隆它以在浏览器中查看此包组件的实际操作,或者运行包含的集成测试。

查看沙盒存储库

您可以查看这些示例和测试,这将是了解您可以使用此组件做什么的另一种方式,而不仅仅是阅读文档。

配置

此软件包的创建考虑了配置,如果您以前没有使用过此组件,您只需简单地运行

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
];

单选按钮

生成一组单选按钮:例如

{!! Form::radios('status', ['a' => 'Active', 'i' => 'Inactive']) !!}

复选框

生成一组复选框

$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"

了解更多关于 HTML 构建器的信息

辅助工具

除了使用 Alert::messageMenu::make 门面方法之外,您还可以使用

alert('this is the message', 'type-of-message')
menu($items, $classes)

访问处理器

有时您想为特定用户显示或隐藏某些菜单项、表单字段等,使用此组件,您可以在无需条件语句或大量额外热门代码的情况下做到这一点,只需将以下选项之一作为字段属性或菜单项值传递即可。

  1. 回调:一个函数,如果允许访问则返回 true,否则返回 false。
  2. 已登录:true 需要认证用户,false 需要访客用户。
  3. 角色:如果用户属于所需的任何角色,则为 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 许可证授权。