magentron / laravel-html
流畅的HTML构建器
Requires
- php: ^7.0
- illuminate/http: ~5.4.0|~5.5.0|~5.6.0
- illuminate/support: ~5.4.0|~5.5.0|~5.6.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^6.0|^7.0
- dev-master
- 2.19.7
- 2.19.6
- 2.19.5
- 2.19.4
- 2.19.3
- 2.19.2
- 2.19.1
- 2.19.0
- 2.18.0
- 2.17.0
- 2.16.0
- 2.15.1
- 2.15.0
- 2.14.0
- 2.13.1
- 2.13.0
- 2.12.1
- 2.12.0
- 2.11.0
- 2.10.3
- 2.10.2
- 2.10.1
- 2.10.0
- 2.9.0
- 2.8.2
- 2.8.1
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.0
- 2.4.1
- 2.4.0
- 2.3.0
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.5.0
- 1.4.0
- 1.3.1
- 1.3.0
- 1.2.0
- 1.1.1
- 1.1.0
- 1.0.0
- 0.5.6
- 0.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
- dev-analysis-qJOlln
- dev-select-strict-value-checks
This package is not auto-updated.
Last update: 2024-09-15 06:10:17 UTC
README
这是由 spatie/laravel-html,由 Jeroen Derks,又名 Magentron 开发的分支。创建此分支是为了确保与PHP 5.6.x的兼容性。
此包可以帮助您使用干净、简单且易于阅读的API生成HTML。所有元素都可以动态生成并组合在一起。HTML构建器可以帮助您根据所选模型、会话或默认值生成动态分配的表单元素。
文档
您可以在此处找到完整的文档。
升级到 2.0
由于2.0版本可能会破坏一些非常具体的情况,因此进行了标记,但您很可能不需要升级!有关详细信息,请参阅“升级”。
生成元素
例如,使用元素的流畅方法创建一个带有类的新span元素非常简单
html()->span()->text('Hello world!')->class('fa fa-eye');
构建表单
以下是一个快速示例,它构建了一个带有电子邮件输入的基本表单
{{ html()->form('PUT', '/post')->open() }}
{{ html()->email('email')->placeholder('Your e-mail address') }}
{{ html()->form()->close() }}
生成的HTML将如下所示
<form method="POST" action="/post"> <input type="hidden" name="_method" id="_method" value="PUT"> <input type="hidden" name="_token" id="_token" value="csrf_token_will_be_here"> <input type="email" name="email" id="email" placeholder="Your e-mail address"> </form>
请注意,隐藏的 _method 和 _token 字段是否已自动添加并填充?您再也不用担心忘记添加 csrf_field() 了,因为现在您根本不需要再添加了!
另一个常见用例可能是根据先前提交的值(使用 $request->old())填充输入元素。不用担心,这也已经得到解决。上面的代码会在 $session->old('email')存在时自动填写 email字段。太棒了。
HTML构建器中的模型
HTML构建器还可以根据模型生成元素
{{ html()->modelForm($user)->open() }}
{{ html()->input('name') }}
{{ html()->closeModelForm() }}
如果存在, name 字段的值将自动填充模型的 name属性
<form method="POST"> <input type="text" name="name" id="name" value="John"> </form>
“模型”可以是任何实现了 ArrayAccess 的对象——从复杂的Eloquent模型到简单的数组。
Postcardware
您可以使用此包(它是MIT许可的),但如果它进入您的生产环境,我们非常欢迎您从您的家乡寄给我们一张明信片,说明您正在使用我们哪个包。
我们的地址是:Spatie,Samberstraat 69D,2060 安特卫普,比利时。
所有明信片都将在我们的网站上发布在这里。
安装
您可以通过Composer安装此包
composer require magentron/laravel-html
接下来,您必须安装服务提供程序
// config/app.php 'providers' => [ ... Spatie\Html\HtmlServiceProvider::class, ];
并且可选地注册一个门面别名。
// config/app.php 'aliases' => [ ... 'Html' => Spatie\Html\Facades\Html::class, ];
使用
概念
Spatie\Html\Elements 命名空间下的类通常是使用 Spatie\Html\Html 构建器实例创建的。
html()->span()->text('Hello world!');
通过流畅方法修改元素属性和内容,这些方法返回一个新实例。这意味着元素实例是不可变的。
$icon = html()->span()->class('fa'); $icon->class('fa-eye'); // '<span class="fa fa-eye"></span>' $icon->class('fa-eye-slash'); // '<span class="fa fa-eye-slash"></span>'
元素类对外部世界没有任何了解。任何与其他概念(如请求和会话)的耦合都应该发生在构建器类上,而不是元素类上。
按照惯例,我们假设构建器方法将修改值以符合我们的利益(如从失败的表单请求中拉取旧值),而元素方法将是确定性的。
// This will try to resolve an initial value, and fall back to 'hello@example.com' $email = html()->email('email', 'hello@example.com'); // This will always have 'hello@example.com' as it's value $email = html()->email('email')->value('hello@example.com');
升级
从 v1 升级到 v2
版本2的创建是因为版本1中的类型提示在某些情况下阻碍了包的发展(例如,多选需要值数组而不是假设的字符串)。
幸运的是,在composer.json中提升版本号并运行composer update应该不会中断服务。以下是一些需要注意的事项:
- 现在默认包含了一个
html()函数,它返回Html构建类的一个实例。如果你已经定义了自己的方法,你需要将其删除。 - 整个包中删除了各种类型提示,如果你扩展了类以覆盖其方法,你需要相应地更新它们(一切仍然表现正常!)
变更日志
有关最近更改的更多信息,请参阅变更日志。
测试
$ composer test
贡献
有关详细信息,请参阅贡献指南。
安全
如果你发现任何安全问题,请通过电子邮件freek@spatie.be联系,而不是使用问题跟踪器。
鸣谢
关于Spatie
Spatie是一家位于比利时安特卫普的网页设计公司。你可以在我们的网站上找到我们所有开源项目的概述在这里。
许可证
MIT许可证(MIT)。有关更多信息,请参阅许可证文件。