revolution / laravel-laminas-form
Laravel Laminas Form
1.10.0
2024-02-20 04:57 UTC
Requires
- php: ^8.1
- illuminate/container: ^10.0||^11.0
- illuminate/support: ^10.0||^11.0
- laminas/laminas-escaper: ^2.12
- laminas/laminas-form: ^3.8
- laminas/laminas-i18n: ^2.21
- laminas/laminas-servicemanager: ^3.20
- laminas/laminas-view: ^2.26
Requires (Dev)
- mockery/mockery: ^1.3
- orchestra/testbench: ^8.0
- phpunit/phpunit: ^9.5
This package is auto-updated.
Last update: 2024-08-29 09:07:51 UTC
README
https://docs.laminas.dev/laminas-form/
需求
- PHP >= 8.1
- Laravel >= 10.0
版本控制
- 基础: semver
- 删除旧PHP或Laravel版本:
+0.1
. composer应该能很好地处理它。 - 只支持最新主要版本(
master
分支),但你也可以向旧分支提交PR。
安装
composer require revolution/laravel-laminas-form
从LaminasForm建议
https://github.com/laminas/laminas-form/blob/master/composer.json
"laminas/laminas-captcha": "^2.7.1, required for using CAPTCHA form elements", "laminas/laminas-code": "^2.6 || ^3.0, required to use laminas-form annotations support", "laminas/laminas-eventmanager": "^2.6.2 || ^3.0, reuired for laminas-form annotations support", "laminas/laminas-recaptcha": "in order to use the ReCaptcha form element"
演示
https://github.com/kawax/laravel-laminas-form-project
Artisan命令
php artisan make:form SampleForm
app/Http/Forms/SampleForm.php
表单类
namespace App\Http\Forms; use Revolution\LaminasForm\Form; use Laminas\Form\Element; class SampleForm extends Form { /** * Create a new form. * * @param null|string $name * * @return void */ public function __construct($name = null) { parent::__construct($name); $this->setAttributes([ 'action' => url('/'), 'method' => 'post', ]); $name = new Element\Text('name'); $name->setAttributes([ 'id' => 'name', 'class' => 'form-control', 'value' => old('name'), ]); $name->setLabel('Your name'); $name->setLabelAttributes([ 'class' => 'col-sm-2 col-form-label', ]); $name->setOptions([ 'wrapper-class' => 'mb-3 row', 'element-class' => 'col-sm-10', ]); $this->add($name); $this->add([ 'type' => Element\Email::class, 'name' => 'email', 'attributes' => [ 'id' => 'email', 'class' => 'form-control', 'value' => old('email'), ], 'options' => [ 'label' => 'Your email address', 'label_attributes' => [ 'class' => 'col-sm-2 col-form-label', ], 'wrapper-class' => 'mb-3 row', 'element-class' => 'col-sm-10', ], ]); $this->add([ 'type' => Element\Hidden::class, 'name' => '_token', 'attributes' => [ 'value' => csrf_token(), ], ]); $this->add([ 'name' => 'send', 'type' => 'Submit', 'attributes' => [ 'value' => 'Submit', 'class' => 'btn btn-primary', ], ]); } }
控制器
use App\Http\Forms\SampleForm; public function __invoke() { $form = new SampleForm(); return view('form')->with(compact('form')); }
use App\Http\Forms\SampleForm; public function __invoke(SampleForm $form) { return view('form')->with(compact('form')); }
视图
简单渲染
{{ $form->render() }}
与LaminasForm的echo $this->form($form);
相同
详细渲染
@php $form->prepare(); @endphp {!! $form->form()->openTag($form) !!} {{ csrf_field() }} <div class="mb-3 row"> <label for="name" class="col-sm-3 col-form-label">{!! $form->get('name')->getLabel() !!}</label> <div class="col-sm-9"> {!! $form->formInput($form->get('name')) !!} </div> </div> <div class="mb-3 row"> <label for="email" class="col-sm-3 col-form-label">{!! $form->get('email')->getLabel() !!}</label> <div class="col-sm-9"> {!! $form->formInput($form->get('email')) !!} </div> </div> <div class="mb-3 row"> <div class="col-sm-9 offset-sm-3"> {!! $form->formSubmit($form->get('send')) !!} </div> </div> {!! $form->form()->closeTag($form) !!}
表单对象可以通过魔法方法调用Laminas的ViewHelper。
见https://docs.laminas.dev/quick-start/
ViewHelper渲染
{{ $form->render('bootstrap5horizon') }}
https://github.com/kawax/laravel-laminas-form/blob/master/docs/helpers.md
验证
使用Laravel的FormRequest。
许可证
MIT
版权kawax