laraveldaily / laravel-html
流畅的HTML构建器
Requires
- php: ^7.4|^8.0
- illuminate/http: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0
- illuminate/support: ~5.5.0|~5.6.0|~5.7.0|~5.8.0|^6.0|^7.0|^8.0|^9.0|^10.0
Requires (Dev)
- mockery/mockery: ^1.0
- phpunit/phpunit: ^7.0|^8.0
- dev-master
- 3.2
- 3.1
- 3.0
- 2.24.7
- 2.24.6
- 2.24.5
- 2.24.4
- 2.24.3
- 2.24.2
- 2.24.1
- 2.24.0
- 2.23.0
- 2.22.1
- 2.22.0
- 2.21.0
- 2.20.1
- 2.20.0
- 2.19.9
- 2.19.8
- 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
- v1.x-dev
- 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.2.3
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.0
This package is auto-updated.
Last update: 2024-09-20 21:38:19 UTC
README
此包可以帮助您使用干净、简单且易于阅读的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)。有关更多信息,请参阅许可证文件。