khodakhah/laravel-inertia-form

一个用于Laravel中Inertia.js表单集成的包

v0.0.1-alpha 2023-09-02 20:17 UTC

This package is auto-updated.

Last update: 2024-09-09 13:24:26 UTC


README

一个用于在Laravel中处理表单的简单包,配合InertiaJS使用。

这是InertiaForm包的后端配套。

需求

  • PHP ^8.1 || ^8.2

安装

composer require khodakhah/larave-inertia-form

使用

1. 通过扩展InertiaFormRequest创建你的表单请求类

  1. 创建一个名为RequestForm的类,并从InertiaFormRequest扩展
  2. 创建一个名为formInputs的静态方法,并返回一个InertiaForm实例(在UserFormRequest.php中)
use Khodakhah\InertiaForm\InertiaFormRequest;

class UserFormRequest extends InertiaFormRequest
{
    public static function formInputs(\Khodakhah\InertiaForm\InertiaForm $form) : \Khodakhah\InertiaForm\InertiaForm{
        $form->text('name', 'required');
        $form->text('email', 'required|email');
        $form->text('password', 'required|min:8');
        return $form;
    }
}
  1. 使用toInertia()方法将表单转换为数组并发送到前端。使用validated()方法将表单错误转换为数组并发送到前端。
class UserController extends Controller
{
    use Khodakhah\InertiaForm\InertiaFormRequest;

    public function create()
    {
        return Inertia::render('User/Create', [
            'form' => UserFormRequest::toInertia()
        ]);
    }

    public function store(UserFormRequest $request)
    {
        User::create($request->validated());
        return redirect()->route('users.index');
    }
}

2. 通过使用InertiaForm简单创建表单对象

你可以通过使用InertiaForm类简单地创建一个表单,并将其赋值给变量或从方法中返回。

class UserController extends Controller
{
    use Khodakhah\InertiaForm\InertiaForm;
    use Illuminate\Http\Request;

    private function userForm(): InertiaForm
    {
        $form = new InertiaForm();
        $form->text('name', 'required');
        $form->text('email', 'required|email');
        $form->text('password', 'required|min:8');
        return $form;
    }

    public function create()
    {
        return Inertia::render('User/Create', [
            'form' => $this->userForm()->toInertia()
        ]);
    }

    public function store(Request $request)
    {
        User::create(
            $request->validate(
                $this->userForm()->toValidation()
            )
        );
        return redirect()->route('users.index');
    }
}

问题

如果您有任何问题,请创建问题部分中的问题。

贡献

如果您有任何想法或建议,请创建拉取请求部分中的拉取请求。我将很高兴审查并合并它们。

本地开发

  1. 克隆仓库
  2. 运行composer install
  3. 运行composer test来运行测试
  4. 运行composer pint来运行linter(语法检查)
  5. 运行composer fix来修复linter错误
  6. 运行composer analyse来运行phpstan分析

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。