glhd/aire

现代Laravel表单构建器。记住旧输入,检索错误信息,并自带基于Tailwind的精美标记。

2.13.0 2024-09-18 15:17 UTC

README

Build Status Coverage Status Latest Stable Release MIT Licensed Follow @airephp on Twitter Follow @inxilpro on Twitter

Aire

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']);

绑定优先级

绑定的应用顺序如下

  1. 使用 value() 设置的值无论如何都会应用
  2. 如果可用,应用旧输入
  3. 最后应用绑定数据

方法欺骗与推断

Aire 会自动为不是 GETPOST 的表单添加 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

正在考虑/功能想法

还有一些事情仍在进行中或正在考虑在未来版本中实现。这些包括