szby/html

流畅的HTML构建器

维护者

详细信息

gitee.com/szby/html.git

安装: 56

依赖: 0

建议者: 0

安全: 0

dev-master 2019-10-02 13:20 UTC

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)。请参阅许可文件获取更多信息。