laraplus/form

一个用于在 Laravel 中构建表单的强大包。

dev-master 2024-03-20 13:34 UTC

This package is auto-updated.

Last update: 2024-09-20 14:31:47 UTC


README

该包目前正在积极开发中。目前尚无稳定版本发布。

示例

在 Blade 中的使用

您可以在 Blade 中动态创建表单

{!! Form::open('login')->action('/login')->method('post') !!}
{!! Form::text('username')->label('Username') !!}
{!! Form::password('password')->label('Password') !!}
{!! Form::submit('submit')->text('Login') !!}
{!! Form::close() !!}

在表单请求中的使用

使用 FormBuilder 特性

use Illuminate\Foundation\Http\FormRequest;
use Laraplus\Form\Helpers\FormBuilder;

class LoginForm extends FormRequest
{
    use FormBuilder;
    
    public function rules()
    {
        return [
            'username' => 'required',
            'password' => 'required|login' // login is a custom rule
        ];
    }
    
    public function authorize()
    {
        return true;
    }
    
    public function form()
    {
        $form = $this->getFormBuilder();
        
        $form->open('login')->action('/login')->method('post');
        $form->text('username')->label('Username');
        $form->password('password')->label('Password');
        $form->submit('submit')->text('Login');
        $form->close();
        
        return $form;
    }
}

在您的控制器中,您可以将表单传递给视图。表单请求不会对 GET 动作进行验证

public function index(LoginForm $form)
{
    return view('login', ['form' => $form->form()]);
}

在您的视图中,您可以一次性输出整个表单

{!! $form !!}

或者逐个字段输出

{!! $form->open !!}
{!! $form->username !!}
{!! $form->password !!}
{!! $form->submit !!}
{!! $form->close !!}

输出字段时,将返回整个表单组,但您可以进一步调整结果

{!! $form->open !!}

{!! $form->username->label() !!}
{!! $form->username->field() !!}
{!! $form->username->error() !!}

{!! $form->password->label() !!}
{!! $form->password->field() !!}
{!! $form->password->error() !!}


{!! $form->submit->addClass('btn-primary') !!}

{!! $form->close !!}