ggggino / sonataextrafields-bundle
本捆绑包包含一些有用的字段类型
1.0.4
2019-05-28 15:16 UTC
Requires
- php: ^5.6|^7.0
- symfony/http-kernel: ^3.3|^4.0
README
为 SonataAdmin 提供一系列有用的表单字段
包含基础主题
config.yml
twig: form_themes: ... - 'GGGGinoSonataExtraFieldsBundle:Form:extra_fields.html.twig'
routing.yml
ggggino_extrafields: resource: '@GGGGinoSonataExtraFieldsBundle/Controller/' type: annotation
CollectionBuilder 字段
使用此类可以创建根据向导(非映射)生成的集合项
EntityAdmin.php
use Allyou\ManagementBundle\Form\Type\CustomCollectionType; /** * @param FormMapper $formMapper */ protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('medias', CollectionBuilderType::class, array( 'by_reference' => false, 'wrapper_class' => 'col-xs-4', 'formWizard' => function(FormBuilderInterface $builder) { // Here you can build your wizard }, 'formWizardPreSetData' => function(FormEvent $event) { // Here you can set particular }, 'formWizardPreSubmit' => function(FormEvent $event) { // Here you can manipulate the model before the persist }, 'formWizardOnSubmit' => function(FormEvent $event) { // Here you can manipulate the model after the persist } ), array( 'edit' => 'inline', //'inline' => 'table', 'sortable' => 'position', 'admin_code' => 'app.admin.media', )) ; }
RealWorldExampleAdmin.php
$formMapper->add('fasce', CollectionBuilderType::class, array( 'by_reference' => false, 'wrapper_class' => 'col-xs-4', 'formWizard' => function(FormBuilderInterface $builder) use ($em) { $companies = $em->getRepository(Company::class)->findAll(); $companyMapped = array("Select a company" => 0); /** @var Ditta $value */ foreach( $companies as $company ) { $companyMapped[$company->getLabel()] = $company->getId(); } $builder ->add('company', ChoiceType::class, array( 'choices' => $companyMapped )); }, 'formWizardOnSubmit' => function(FormEvent $event) use ($em) { $data = $event->getData(); /** @var PersistentCollection $items */ $items = $data['items']; $wizard = $data['wizard']; if( !isset($wizard['company']) || !$wizard['company'] ) return; $idCompany = isset($wizard['company']) ? $wizard['company'] : null; $companyRef = $em->getReference(Company::class, $idCompany); /** @var User[] $usersInCompany */ $usersInCompany = $em->getRepository(User::class)->findBy(array('company' => $companyRef)); foreach($usersInCompany as $user) { $temp = new GiornataFascia(); $temp->setOre(0); $temp->setUtente($user); $items->add($temp); } } ), array( 'edit' => 'inline', 'inline' => 'table', 'sortable' => 'position', 'admin_code' => 'app.admin.giornata_fascia', ));
额外选项
继承 PimpedCollection 字段 的所有额外属性
PimpedCollection 字段
使用此类可以向集合添加一些有用的属性
EntityAdmin.php
use Allyou\ManagementBundle\Form\Type\CustomCollectionType; /** * @param FormMapper $formMapper */ protected function configureFormFields(FormMapper $formMapper) { $formMapper ->add('medias', CustomCollectionType::class, array( 'by_reference' => false, 'wrapper_class' => 'col-xs-4' ), array( 'edit' => 'inline', //'inline' => 'table', 'sortable' => 'position', 'admin_code' => 'app.admin.media', )) ; }
额外选项