anlutro / form
Requires
- php: >=5.4.0
- illuminate/support: ~4.1
Requires (Dev)
- illuminate/database: ~4.1
- illuminate/session: ~4.1
- illuminate/validation: ~4.1
- mockery/mockery: *
README
厌倦了默认Laravel 4表单构建器中的bug和怪异行为,我写了自己的,并且使其与框架无关。功能包括:
- 每个表单都是其自己的对象,具有(可选的)自己的行为
- 为表单对象设置模型以预先填充表单输入
- 从会话中获取旧输入
- 验证输入
警告:在0.x版本期间不保证向后兼容性。
安装
composer require anlutro/form
从Packagist或GitHub标签列表中选择最新稳定版本。
Laravel 4
将 'anlutro\Form\ServiceProvider' 添加到 app/config/app.php 中的服务提供商列表。
其他框架/原始PHP
您需要设置一个共享的 anlutro\Form\Builder
实例,并且这个实例应该被注入到所有表单实例中。
为了从表单实例中获取输入,您应该在Builder实例上调用 setRequest
。请求应该是 Symfony\Component\HttpFoundation\Request
实例。
为了使会话中的旧输入、CSRF令牌和验证正常工作,您需要在Builder实例上构造和设置一个会话和/或验证服务。接口位于 Adapters
命名空间中,一旦您有一个实现了这些接口的对象,您可以通过 setSessionAdapter
和 setValidationAdapter
来设置它们。
如果您为流行的库编写了适配器,请考虑发起一个拉取请求,以便将其添加到包中!
使用方法
对于简单的表单,我们将使用类 anlutro\Form\DefaultForm
。将其注入到您的控制器中...
use anlutro\Form\DefaultForm; public function __construct(DefaultForm $form) { $this->form = $form; }
或者如果可用,直接构造它。
$this->form = new DefaultForm($formBuilder);
在您的控制器动作中,您可以定义表单的行为。以下所有内容都是可选的。
// The model is where the form gets its data. It can be an existing active- // record model, entity or an array of dummy data. $this->form->setModel($myModel); $this->form->setAction('http://mysite.com/my-route'); $this->form->setMethod('PUT');
在显示表单的控制器动作中将表单传递给视图。在您的视图中 - 使用您可用的任何模板引擎
<?= $form->open(['class' => 'form-horizontal']) ?> <div class="form-group"> <?= $form->text('my_field', ['class' => 'form-control']) ?> </div> <?= $form->close() ?>
处理表单POST请求的控制器动作中
$input = $this->form->getInput(); $this->service->doStuff($input);
如果您的表单有自定义行为 - 获取器、设置器等,您可以通过扩展 AbstractForm
类并注入您的自定义类来代替 DefaultForm
。
use anlutro\Form\AbstractForm; class MyForm extends AbstractForm {}
请查看示例目录以获取更多信息。
联系
如果您有任何问题或建议,请在GitHub上发起一个问题。
许可证
本存储库的内容是在 MIT许可证 下发布的。