laraveldaily/laravel-html

流畅的HTML构建器

3.2 2023-02-20 18:34 UTC

README

Latest Version on Packagist MIT Licensed Build Status Quality Score StyleCI Total Downloads

此包可以帮助您使用干净、简单且易于阅读的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 Antwerp,比利时。

所有明信片都发布在我们的网站上 这里

安装

您可以通过composer安装此包

composer require spatie/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.0版本是因为1.0版本中的类型提示在某些情况下限制了包的扩展(例如,多选需要值的数组而不是字符串)。

幸运的是,在composer.json文件中增加版本号并运行composer update应该不会引起中断。以下是一些需要注意的注意事项:

  • 现在,该软件包默认包含一个html()函数,该函数返回一个Html构建类实例。如果您已定义了自己的方法,则需要将其删除。
  • 在软件包中删除了各种类型提示,如果您扩展了类以覆盖其方法,则需要相应地更新它们(一切仍然表现正常!)

变更日志

有关最近更改的更多信息,请参阅变更日志

测试

$ composer test

贡献

有关详细信息,请参阅贡献指南

安全

如果您发现任何安全相关的问题,请通过电子邮件freek@spatie.be报告,而不是使用问题跟踪器。

鸣谢

关于Spatie

Spatie是一家位于比利时安特卫普的网页设计公司。您可以在我们的网站上找到所有开源项目的概述在此处

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可证文件