bupy7 / zf-form
此软件包已被废弃,不再维护。未建议替代软件包。
Laminas 的最简单表单形式。
2.0.0
2020-11-28 13:21 UTC
Requires
- php: ^5.6 || ^7.0
- bupy7/php-html-form: ~1.0
- laminas/laminas-inputfilter: ^2.7.2
- laminas/laminas-modulemanager: ^2.7.2
- laminas/laminas-servicemanager: ^3.1
- laminas/laminas-validator: ^2.8
- laminas/laminas-view: ^2.8
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.16.1
- laminas/laminas-test: ^3.0.1
- phpunit/phpunit: >=5.5 <6.0.0
- satooshi/php-coveralls: ^1.0.1
README
带有 laminas/laminas-inputfilter
和 bupy7/php-html-form
的简单而强大的表单。
如果您只想使用表单输入过滤器,建议您使用 php-input-filter。将来,此软件包(
zf-form
)将与php-input-filter
一起工作。
安装
安装此扩展的首选方式是通过 composer。
运行以下命令之一:
$ php composer.phar require bupy7/zf-form "*"
或
"bupy7/zf-form": "*"
将其添加到您的 composer.json 文件的 require 部分。
用法
表单
// module/Application/src/Form/SignInForm.php use Bupy7\Form\FormAbstract; class SignInForm extends FormAbstract { /** * @var string */ public $email; /** * @var string */ public $password; protected function inputs() { return [ [ 'name' => 'email', 'required' => true, 'validators' => [ [ 'name' => 'EmailAddress', ], ], ], [ 'name' => 'password', 'required' => true, ], ]; } }
视图
// module/Application/view/auth/signin.phtml <?php $formBuilder = $this->formBuilder($this->signInForm); ?> <?= $formBuilder->open()->action($this->url('signin'))->addClass('form-horizontal'); ?> <div class="form-group required<?= $formBuilder->hasError('email') ? ' has-error' : ''; ?>"> <?= $formBuilder->label('Email')->forId('email')->addClass('control-label col-md-2'); ?> <div class="col-md-4"> <?= $formBuilder->email('email')->addClass('form-control'); ?> <div class="help-block help-block-error"> <?= $formBuilder->getError('email'); ?> </div> </div> </div> <div class="form-group required<?= $formBuilder->hasError('password') ? ' has-error' : ''; ?>"> <?= $formBuilder->label('Password')->forId('password')->addClass('control-label col-md-2'); ?> <div class="col-md-4"> <?= $formBuilder->password('password')->addClass('form-control'); ?> <div class="help-block help-block-error"> <?= $formBuilder->getError('password'); ?> </div> </div> </div> <div class="form-group"> <div class="col-md-4 col-md-offset-2"> <?= $formBuilder->button('Signin')->attribute('type', 'submit')->addClass('btn btn-primary'); ?> </div> </div> <?= $formBuilder->close(); ?>
控制器
// module/Application/src/Controller/AuthController.php use Application/Form/SignInForm; public function signinAction() { $signInForm = new SignInForm; if ($this->getRequest()->isPost()) { $signInForm->setValues($this->getRequest()->getPost()); if ($signInForm->isValid()) { // authentication... // $auth->setLogin($signInForm->email) // $auth->setPassword($signInForm->password); // $result = $auth->authenticate(); if ($result->isValid()) { // some actions } } } return new ViewModel([ 'signInForm' => $signInForm, ]); }
使用场景
默认情况下使用 FormAbstract::DEFAULT_SCENARIO
,但您可以使用自定义的。
// module/Application/src/Form/SignInForm.php use Bupy7\Form\FormAbstract; class SignInForm extends FormAbstract { const SCENARIO_PASSWORD = 2; /** * @var string */ public $email; /** * @var string */ public $password; protected function scenarios() { $scenarios = parent::scenarios(); $scenarios[self::SCENARIO_PASSWORD] = [ 'password', ]; return $scenarios; } protected function inputs() { return [ [ 'name' => 'email', 'required' => true, 'validators' => [ [ 'name' => 'EmailAddress', ], ], ], [ 'name' => 'password', 'required' => true, 'filters' => [ [ 'name' => 'StringTrim', ] ], ], ]; } }
控制器
// DEFAULT scenario $signInForm = new SignInForm; $signInForm->email = 'test@gmail.com'; $signInForm->password = '12q34e56t78'; if ($signInForm->isValid()) { // do something } // or PASSWORD scenario $signInForm = new SignInForm; $signInForm->setScenario(SignInForm::SCENARIO_PASSWORD); $signInForm->password = '12q34e56t78'; if ($signInForm->isValid()) { // do something }
为 ZF-Commons/ZfcTwig
配置
// config/autoload/twig.global.php use Bupy7\Form\View\Helper\FormBuilderHelper; use Bupy7\Form\View\Helper\FormBuilderHelperFactory; return [ 'zfctwig' => [ 'helper_manager' => [ 'factories' => [ FormBuilderHelper::class => FormBuilderHelperFactory::class, ], 'shared' => [ 'formBuilder' => false, FormBuilderHelper::class => false, ], 'aliases' => [ 'formBuilder' => FormBuilderHelper::class, ], ], ], ];
链接
许可
zf-form 在 BSD 3-Clause 许可下发布。