glhd / aire
现代Laravel表单构建器。记住旧输入,检索错误信息,并自带基于Tailwind的精美标记。
Requires
- ext-json: *
- illuminate/events: >=5.8.28 <10.48.0 || >10.48.1 <12.0.0
- illuminate/support: >=5.8.28 <10.48.0 || >10.48.1 <12.0.0
- illuminate/view: >=5.8.28 <10.48.0 || >10.48.1 <12.0.0
Requires (Dev)
- barryvdh/reflection-docblock: ^2.0
- friendsofphp/php-cs-fixer: ^3.5
- guzzlehttp/guzzle: ~6.0|~7.0
- mockery/mockery: ^1.4
- orchestra/testbench: ^6.24|^7.10|^8|^9|9.x-dev|10.x-dev|dev-master
- php-coveralls/php-coveralls: ^2.1
- phpunit/phpunit: ^9|^10.5
- symfony/css-selector: ^5.4
- symfony/dom-crawler: ^5.4
Suggests
- glhd/aire-tailwind-custom-forms: Use the Tailwind custom forms plugin for even nicer looking forms
- dev-main
- 2.13.0
- 2.12.1
- 2.12.0
- 2.11.0
- 2.10.0
- 2.9.1
- 2.9.0
- 2.8.1
- 2.8.0
- 2.7.0
- 2.6.0
- 2.5.0
- 2.4.5
- 2.4.4
- 2.4.3
- 2.4.2
- 2.4.1
- 2.4.0
- 2.3.4
- 2.3.3
- 2.3.2
- 2.3.1
- 2.3.0
- 2.2.0
- 2.1.0
- 2.0.2
- 2.0.1
- 2.0.0
- 1.10.0
- 1.9.1
- 1.9.0
- 1.8.1
- 1.8.0
- 1.7.1
- 1.6.1
- 1.6.0
- 1.5.1
- 1.5.0
- 1.5.0-beta.1
- 1.4.0
- 1.3.0
- 1.2.1
- 1.1.2
- 1.1.1
- 1.1.0
- 1.0.0
- 1.0.0-beta.3
- 1.0.0-beta.2
- 1.0.0-beta.1
- 0.9.0
- 0.8.1
- 0.8.0
- 0.7.1
- 0.7.0
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.0
- 0.4.3
- 0.4.2
- 0.4.1
- 0.4.0
- 0.3.1
- 0.3.0
- 0.2.1
- 0.2.0
- 0.1.0
- 0.0.2
- 0.0.1
- dev-native-enums
- dev-dependabot/npm_and_yarn/semver-5.7.2
- dev-feature/enum-casts
- dev-php-cs-fixer
- dev-experiment/reflection-order
- dev-master
- dev-feature/named-error-bags
- dev-feature/blade-components
- dev-feature/typeahead
- dev-feature/pre-configured-forms
- dev-docs
This package is auto-updated.
Last update: 2024-09-18 15:18:05 UTC
README
Aire 是一个现代的 Laravel 表单构建器(演示),专注于与 Laravel 生态系统期望相同的表达性和美观的代码。
基本用法
最常见用法是通过 blade 模板中的 Aire
门面。所有方法调用都是流式的,允许轻松配置您的表单组件
{{ Aire::open() ->route('users.update') ->bind($user) }} {{ Aire::input('given_name', 'First/Given Name') ->id('given_name') }} {{ Aire::input('family_name', 'Last/Family Name') ->id('family_name') ->autoComplete('off') }} {{ Aire::email('email', 'Email Address') ->helpText('Please use your company email address.') }} {{ Aire::submit('Update User') }} {{ Aire::close() }}
Blade 组件
从 Aire 2.4.0 版本开始,您还可以将所有 Aire 元素用作 Blade 组件。上面的表单与以下相同
<x-aire::form route="users.update" :bind="$user"> <x-aire::input name="given_name" label="First/Given Name" id="given_name" /> <x-aire::input name="family_name" label="Last/Family Name" id="family_name" auto-complete="off" /> <x-aire::email name="email" label="Email Address" help-text="Please use your company email address." /> <x-aire::submit label="Update User" /> </x-aire::form>
安装
使用 composer 安装
composer require glhd/aire
自定义
Aire 随带一些类,这些类应该可以与默认的 Tailwind 类名(如 .bg-blue-600
等)一起使用。如果您需要更改任何给定元素的默认类名,有两种不同的方法可以做到这一点。
第一种是使用 php artisan vendor:publish --tag=aire-config
发布 aire.php
配置文件,并更新要更改的元素的 default_classes
配置
return [ 'default_classes' => [ 'input' => 'text-gray-900 bg-white border rounded-sm', ], ];
第二种选项是通过 php artisan vendor:publish --tag=aire-views
发布自定义视图,这使您完全控制组件的渲染。每个组件类型(如 input.blade.php
等)以及组件分组都有一个视图文件。这提供了最大的灵活性,但意味着您需要维护视图,因为 Aire 发布了新的功能或更改了组件渲染。
配置
当您使用 php artisan vendor:publish --tag=aire-config
发布 aire.php
配置文件时,还有一些其他的配置选项。配置文件有完整的文档,所以请查看一下!
数据绑定
Aire 会自动将旧输入绑定到您的表单上,以便在发生验证错误时保留值。您还可以使用 bind()
方法绑定数据。
// Bind Eloquent models Aire::bind(User::find(1)); // Bind an array Aire::bind(['given_name' => 'Chris']); // Bind any object Aire::bind((object) ['given_name' => 'Chris']);
绑定优先级
绑定的应用顺序如下
- 使用
value()
设置的值无论如何都会应用 - 如果可用,应用旧输入
- 最后应用绑定数据
方法欺骗与推断
Aire 会自动为不是 GET
或 POST
的表单添加 Laravel 的 _method
字段。如果可能,它还会自动从路由推断出预期的方法。
// In routes Route::delete('/photos/{photo}', 'PhotosController@destroy') ->name('photos.destroy'); // In your view {{ Aire::open()->route('photos.destroy', $photo) }} {{ Aire::close() }}
将生成结果 HTML
<form action="/photos/1" method="POST"> <input type="hidden" name="_method" value="DELETE" /> </form>
自动 CSRF 字段
Aire 会自动注入 CSRF 令牌(如果存在)以及表单不是 GET
表单。只需启用会话,就会为您注入隐藏的 _token
字段。
服务器端验证
如果您在服务器上运行验证,Aire 会获取任何错误并自动应用错误类以及显示关联输入组的错误消息。
您还可以包含一个错误摘要,这提供了一个简单的方法,在验证失败时在页面顶部向用户显示错误。
// Print "There are X errors on this page that you must fix before continuing." {{ Aire::summary() }} // Also include an itemized list of errors {{ Aire::summary()->verbose() }}
客户端验证
在Aire中,JavaScript验证仍处于早期阶段。浏览器测试有限,JavaScript代码尚未应用性能优化。尽管如此,Aire支持自动客户端验证——只需传递一个规则数组或一个FormRequest
对象,Aire将自动在客户端应用大多数规则(多亏了validatorjs!)。
Laravel版本支持
Aire应在Laravel 5.8.28及以上版本和PHP 7.1及以上版本上运行。我们的政策是测试PHP和Laravel的最后两个主要版本,因此不支持该版本以下的内容。
翻译
Aire支持一些语言(欢迎提交PR!)。如果您想添加自己的翻译,可以通过以下方式发布它们:
php artisan vendor:publish --tag=aire-translations
正在考虑/功能想法
还有一些事情仍在进行中或正在考虑在未来版本中实现。这些包括
- 只读纯文本
- 通过配置选项支持自定义复选框和单选按钮的跨浏览器支持
- 支持Choices.js或类似的
<select>
UI库 - 更好地处理文件输入
- 更好地支持在输入前或后附加内容