Sonata Admin Bundle:动态启用字段

时间:2016-06-08 19:21:36

标签: php jquery symfony sonata

我在Symfony2项目中使用Sonata Admin Bundle。在一种形式中,我有一个包含两个项目的选项列表,' article'和'事件',以及日期字段,仅当事件'在列表中选择。

如何根据列表中的哪个值进行解除/启用?

以下是我的相关代码:

protected function configureFormFields(FormMapper $formMapper)
{
    $formMapper
        ->add('title', null, array(
            'label' => 'Titre',
        ))
        ->add('type', 'choice', array('choices' => array('0' => 'Article', '1' => 'Evénement',)) )
        ->add('gameDate', null, array('required' => false));
 }

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

只是为了节省一些滚动,这里是文档的相关部分:

13.1.5。 SONATA \ ADMINBUNDLE \ FORM \型号\ CHOICEFIELDMASKTYPE 根据选择,仅显示相关字段。其他字段是隐藏的。

<?php
// src/AppBundle/Admin/AppMenuAdmin.php

use Sonata\AdminBundle\Form\FormMapper;
use Sonata\AdminBundle\Admin\AbstractAdmin;
use Sonata\AdminBundle\Form\Type\ChoiceFieldMaskType;
use Symfony\Component\Form\Extension\Core\Type\TextType;

class AppMenuAdmin extends AbstractAdmin
{
    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('linkType', ChoiceFieldMaskType::class, [
                'choices' => [
                    'uri' => 'uri',
                    'route' => 'route',
                ],
                'map' => [
                    'route' => ['route', 'parameters'],
                    'uri' => ['uri'],
                ],
                'placeholder' => 'Choose an option',
                'required' => false
            ])
            ->add('route', TextType::class)
            ->add('uri', TextType::class)
            ->add('parameters')
        ;
    }
}