revolution / laravel-zend-form
1.3.0
2020-08-28 07:12 UTC
Requires
- php: ^7.1.3||^8.0
- illuminate/container: *
- illuminate/support: *
- zendframework/zend-escaper: ^2.6
- zendframework/zend-form: ^2.12
- zendframework/zend-i18n: ^2.9
- zendframework/zend-servicemanager: ^3.3
- zendframework/zend-view: ^2.10
Requires (Dev)
- mockery/mockery: ^1.0
- orchestra/testbench: ^3.5||^4.0||^5.0
- phpunit/phpunit: ^7.5||^8.0||^9.0
README
https://docs.zendframework.com/zend-form/
Laminas
https://github.com/kawax/laravel-laminas-form
要求
- PHP >= 7.1
- Laravel >= 5.5
安装
composer require revolution/laravel-zend-form
从ZendForm建议
https://github.com/zendframework/zend-form/blob/master/composer.json
"zendframework/zend-captcha": "^2.7.1, required for using CAPTCHA form elements", "zendframework/zend-code": "^2.6 || ^3.0, required to use zend-form annotations support", "zendframework/zend-eventmanager": "^2.6.2 || ^3.0, reuired for zend-form annotations support", "zendframework/zendservice-recaptcha": "in order to use the ReCaptcha form element"
示例
https://github.com/kawax/laravel-zend-form-project
Artisan命令
php artisan make:form SampleForm
app/Http/Forms/SampleForm.php
表单类
namespace App\Http\Forms; use Revolution\ZendForm\Form as ZendForm; use Zend\Form\Element; class SampleForm extends ZendForm { /** * 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' => 'form-group 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' => 'form-group 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() }}
与ZendForm的echo $this->form($form);
相同
详细渲染
@php $form->prepare(); @endphp {!! $form->form()->openTag($form) !!} {{ csrf_field() }} <div class="form-group 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="form-group 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="form-group row"> <div class="col-sm-9 offset-sm-3"> {!! $form->formSubmit($form->get('send')) !!} </div> </div> {!! $form->form()->closeTag($form) !!}
表单对象可以通过魔术方法调用Zend的ViewHelper。
见https://docs.zendframework.com/zend-form/quick-start/
ViewHelper渲染
{{ $form->render('bootstrap4horizon') }}
https://github.com/kawax/laravel-zend-form/blob/master/docs/helpers.md
验证
使用Laravel的FormRequest。
授权协议
MIT
版权所有 kawax