setting default value in symfony2 sonata admin bundle

后端 未结 4 2007
清歌不尽
清歌不尽 2020-12-28 17:08

how can i set default value in sonata admin bundle the data option is missing in configureFormFields method

protected function configureFormFields(FormMappe         


        
相关标签:
4条回答
  • In addition to @RobMasters solution:

    If you want to set a relation you can get a reference from the entitymanager (instead of the complete object):

    public function getNewInstance()
    {
        $instance = parent::getNewInstance();
    
        if ($this->hasRequest()) {
            $branch = $this->getRequest()->get('branch', null);
    
            if ($branch !== null) {
                $entityManager = $this->getModelManager()->getEntityManager('MyBundle\Entity\Branch');
                $branchReference = $entityManager->getReference('MyBundle\Entity\Branch', $branch);
    
                $instance->setBranch($branchReference);
            }
        }
        return $instance;
    }
    

    I added the example to my blog: http://blog.webdevilopers.net/populate-resp-set-default-values-on-form-resp-object-or-instance-in-sonataadminbundle/

    0 讨论(0)
  • 2020-12-28 17:26

    For booleans, another option is to set a data value within the first array passed to your add method, inside of configureFormFields

    So after some memtoring, my code (for a checkbox that I wanted to have checked by default) ended up looking something like this:

    protected function configureFormFields(FormMapper $formMapper)
    {
        $formMapper
            ->add('name')
            ->add('visible', null, ['label'=>'Visibility', 'data' => true ])
        ;
    }
    

    ... which saved a few lines at the top of my file, since I could then get rid of the getNewInstance() definition.

    0 讨论(0)
  • 2020-12-28 17:40

    you can also assign the default value to the property of the entity directly:

    class TheEntity
    {
        private $name = 'default name';
    }
    
    0 讨论(0)
  • 2020-12-28 17:43

    I presume you've probably already solved this by now, but as a reference to anyone else you can override the getNewInstance() method and set the default value on the object:

    public function getNewInstance()
    {
        $instance = parent::getNewInstance();
        $instance->setName('my default value');
    
        return $instance;
    }
    
    0 讨论(0)
提交回复
热议问题