szby / html
流畅的HTML构建器
Requires
- php: ^7.3
This package is not auto-updated.
Last update: 2024-09-26 14:06:13 UTC
README
此包帮助您使用干净、简单且易于阅读的API生成HTML。所有元素都可以动态生成并组合。HTML构建器可以帮助您根据所选模型、会话或默认值生成动态分配的表单元素。
升级到2.0
版本2.0被标记,因为它可能会破坏一些非常特定的情况,但您很可能不需要升级任何工作!请查看“升级”部分以获取详细解释。
生成元素
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许可),但如果它进入您的生产环境,我们非常感谢您从家乡给我们寄来一张明信片,提及您正在使用我们的哪个包。
我们的地址是:Szby,Samberstraat 69D,2060 安特卫普,比利时。
安装
您可以通过composer安装此包
composer require Szby/html
接下来,您必须安装服务提供者
// config/app.php
'providers' => [
...
Szby\Html\HtmlServiceProvider::class,
];
并且可选地注册一个门面别名。
// config/app.php
'aliases' => [
...
'Html' => Szby\Html\Facades\Html::class,
];
使用
概念
元素——在Szby\Html\Elements命名空间下的类——通常通过Szby\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
由于版本1中的类型提示在某些情况下阻碍了包的发展(例如,多选需要值数组而不是假设的字符串),因此创建了版本2。
幸运的是,在composer.json中提升版本号并运行composer update应该是非破坏性的。以下是一些需要注意的事项
- 默认情况下,此包现在包含一个
html()函数,它返回Html构建器类的一个实例。如果您已定义了自己的方法,则需要删除它。 - 整个包中已删除了各种类型提示,如果您扩展了类以重写其方法,则需要相应地更新它们(一切仍然按预期工作!)
更新日志
请参阅变更日志了解最近有哪些更改。
测试
$ composer test
贡献
请参阅贡献指南以获取详细信息。
许可
MIT许可(MIT)。请参阅许可文件获取更多信息。