khodakhah / laravel-inertia-form
一个用于Laravel中Inertia.js表单集成的包
v0.0.1-alpha
2023-09-02 20:17 UTC
Requires
- php: >=8.1
- illuminate/support: ^v10.20
- inertiajs/inertia-laravel: ^v0.6.9
- spatie/laravel-data: ^3.8
Requires (Dev)
- laravel/pint: ^v1.11
- nunomaduro/larastan: ^v2.6
- orchestra/testbench: ^v8.9
- pestphp/pest: ^v2.16
- pestphp/pest-plugin-laravel: ^v2.2
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
创建你的表单请求类
- 创建一个名为RequestForm的类,并从InertiaFormRequest扩展
- 创建一个名为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; } }
- 使用
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'); } }
问题
如果您有任何问题,请创建问题部分中的问题。
贡献
如果您有任何想法或建议,请创建拉取请求部分中的拉取请求。我将很高兴审查并合并它们。
本地开发
- 克隆仓库
- 运行
composer install
- 运行
composer test
来运行测试 - 运行
composer pint
来运行linter(语法检查) - 运行
composer fix
来修复linter错误 - 运行
composer analyse
来运行phpstan分析
许可证
MIT许可证(MIT)。请参阅许可证文件以获取更多信息。