dev-master
9999999-dev http://venne.czVenne forms component
GPL-3.0 BSD-3-Clause GPL-2.0
The Requires
- php >=5.5.0
- nette/di 2.3@dev
- nette/forms 2.3@dev
The Development Requires
by Josef Kříž
forms nette venne
Wallogit.com
2017 © Pedro Peláez
Venne forms component
Create forms as nested factories:, (*1)
+- IFormFactory ---+ +- IFormFactory --+ +- IFormFactory -+ | Base factory | -> | Adds inputs | -> | Adds mapping | -> create() : Form +------------------+ +-----------------+ +----------------+
Benefits:, (*2)
The best way to install Venne/Forms is using Composer:, (*3)
composer require venne/forms:@dev
example:, (*4)
services:
basicFormFactory:
class: Nette\Application\UI\Form
arguments: [NULL, NULL]
implement: Venne\Forms\IFormFactory
setup:
- setRenderer(@system.formRenderer)
- setTranslator(@translator.translator)
autowired: no
Implement Venne\Forms\IFormFactory:, (*5)
class FooFormFactory implements Venne\Forms\IFormFactory
{
private $formFactory;
public function __construct(IFormFactory $formFactory)
{
$this->formFactory = $formFactory;
}
public function create()
{
$form = $this->formFactory->create();
$form->addText('foo', 'Foo');
$form->addSubmit('_submit', 'Save');
return $form;
}
}
Define nested formFactory in constructor, (*6)
services:
fooFormFactory:
class: FooFormFactory(@basicFormFactory)
class ExamplePresenter extends Nette\Application\UI\Presenter
{
private $fooFormFactory;
public function __construct(FooFormFactory $fooFormFactory)
{
$this->fooFormFactory = $fooFormFactory;
}
public function createComponentFooForm()
{
$form = $this->fooFormFactory->create();
$form->onSuccess[] = $this->fooFormSuccess;
return $form;
}
public function fooFormSuccess($form)
{
...
}
}
kdyby\doctrine-forms
```php use Venne\Bridges\Kdyby\DoctrineForms\FormFactoryFactory;, (*7)
class ExamplePresenter extends Nette\Application\UI\Presenter {, (*8)
private $fooFormFactory;
private $formFactoryFactory;
public function __construct(FooFormFactory $fooFormFactory, FormFactoryFactory $formFactoryFactory)
{
$this->fooFormFactory = $fooFormFactory;
$this->formFactoryFactory = $formFactoryFactory;
}
public function createComponentFooForm()
{
$entity = ....;
$form = $this->formFactoryFactory
->create($this->fooFormFactory)
->setEntity($entity)
->create();
$form->onSuccess[] = $this->fooFormSuccess;
return $form;
}
public function fooFormSuccess($form)
{
...
}
}, (*9)
Venne forms component
GPL-3.0 BSD-3-Clause GPL-2.0
forms nette venne