freezy-bee/doctrine-form-mapper
最新稳定版本:1.8.0
Composer 安装命令:
composer require freezy-bee/doctrine-form-mapper
包简介
Forms mapping of Doctrine ORM entities for Nette Framework
README 文档
README
Installation
The best way to install FreezyBee/DoctrineFormMapper is using Composer:
$ composer require freezy-bee/doctrine-form-mapper
config.neon
extensions: formMapper: FreezyBee\DoctrineFormMapper\DI\FormMapperExtension # optional settings formMapper: mappers: - CustomMapper() entityManager: @customEntityManager # default autowired EntityManagerInterface
Extension is responsible for registering service FreezyBee\DoctrineFormMapper\DoctrineFormMapper, you can autowire it.
Documentation
Usage
use FreezyBee\DoctrineFormMapper\DoctrineFormMapper; use FreezyBee\DoctrineFormMapper\IComponentMapper; class XPresenter extends Presenter { /** @var DoctrineFormMapper @inject */ public $mapper; /** @var EntityRepository @inject */ public $articlesRepository; protected function createComponentForm() { $form = new Form; // Column $form->addText('name'); // ManyToOne $form->addSelect('author') // order items ->setOption(IComponentMapper::ITEMS_ORDER, ['age' => 'ASC']) // filter items ->setOption(IComponentMapper::ITEMS_FILTER, ['age' => 0]) // filter items by callback ->setOption(IComponentMapper::ITEMS_FILTER, function(QueryBuilder $qb) { $qb->andWhere('entity.age != 0') }) // custom select label renderer ->setOption(IComponentMapper::ITEMS_TITLE, function (Author $author) { return $author->getName() . ' - ' . $author->getAge(); }); // ManyToOne $form->addRadioList('tags') ->setOption(IComponentMapper::ITEMS_TITLE, 'name'); // ManyToMany $form->addMultiSelect('users') ->setOption(IComponentMapper::ITEMS_TITLE, 'username'); // ManyToMany // btw you can define items and then ITEMS_TITLE is not required $form->addCheckboxList('countries', 'Countries', [1 => 'CZ', 2 => 'SK']); // A) create new entity $article = new Article; // B) load entity from db $article = $this->articlesRepository->find(1); // C) create new entity by class name - see point INFO below $article = Article::class; // load data from entity to form $this->mapper->load($article, $form); $form->onSuccess[] = function (Form $form) use ($article) { // save (map) data from form to entity - without flush!!! $articleEntity = $this->mapper->save($article, $form); // INFO - if article was classname, mapper create new instance // $articleEntity is instanceof Article // flush data... $em = $this->mapper->getEntityManager(); $em->persist($articleEntity) $em->flush(); }; return $form; } }
统计信息
- 总下载量: 17.77k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 4
- 点击次数: 1
- 依赖项目数: 0
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2017-04-14