public function testOptions()
    {
        $field = new FieldDescription;
        $field->setOptions(array(
            'template' => 'foo',
            'type'     => 'bar',
            'misc'     => 'foobar',
        ));


        // test method shortcut
        $this->assertEquals(null, $field->getOption('template'));
        $this->assertEquals(null, $field->getOption('type'));

        $this->assertEquals('foo', $field->getTemplate());
        $this->assertEquals('bar', $field->getType());

        // test the default value option
        $this->assertEquals('default', $field->getOption('template', 'default'));

        // test the merge options
        $field->setOption('array', array('key1' => 'val1'));
        $field->mergeOption('array', array('key1' => 'key_1', 'key2' => 'key_2'));

        $this->assertEquals(array('key1' => 'key_1', 'key2' => 'key_2'), $field->getOption('array'));

        $field->mergeOption('non_existant', array('key1' => 'key_1', 'key2' => 'key_2'));
        $this->assertEquals(array('key1' => 'key_1', 'key2' => 'key_2'), $field->getOption('array'));

        $field->setOption('integer', 1);
        try {
            $field->mergeOption('integer', array());
            $this->fail('no exception raised !!');
        } catch (\RuntimeException $e) {

        }

        $field->mergeOptions(array('final' => 'test'));

        $expected = array (
          'misc' => 'foobar',
          'array' =>
          array (
            'key1' => 'key_1',
            'key2' => 'key_2',
          ),
          'non_existant' =>
          array (
            'key1' => 'key_1',
            'key2' => 'key_2',
          ),
          'integer' => 1,
          'final' => 'test',
        );

        $this->assertEquals($expected, $field->getOptions());
    }
Exemplo n.º 2
0
 /**
  * Returns a new FieldDescription
  *
  * @abstract
  * @return \Sonata\AdminBundle\Admin\ORM\FieldDescription
  */
 public function getNewFieldDescriptionInstance($class, $name, array $options = array())
 {
     $metadata = $this->getMetadata($class);
     $fieldDescription = new FieldDescription();
     $fieldDescription->setName($name);
     $fieldDescription->setOptions($options);
     if (isset($metadata->associationMappings[$name])) {
         $fieldDescription->setAssociationMapping($metadata->associationMappings[$name]);
     }
     if (isset($metadata->fieldMappings[$name])) {
         $fieldDescription->setFieldMapping($metadata->fieldMappings[$name]);
     }
     return $fieldDescription;
 }
Exemplo n.º 3
0
 /**
  * Returns a new FieldDescription
  *
  * @throws \RunTimeException
  * @param $class
  * @param $name
  * @param array $options
  * @return \Sonata\AdminBundle\Admin\ORM\FieldDescription
  */
 public function getNewFieldDescriptionInstance($class, $name, array $options = array())
 {
     if (!is_string($name)) {
         throw new \RunTimeException('The name argument must be a string');
     }
     $metadata = $this->getMetadata($class);
     $fieldDescription = new FieldDescription();
     $fieldDescription->setName($name);
     $fieldDescription->setOptions($options);
     if (isset($metadata->associationMappings[$name])) {
         $fieldDescription->setAssociationMapping($metadata->associationMappings[$name]);
     }
     if (isset($metadata->fieldMappings[$name])) {
         $fieldDescription->setFieldMapping($metadata->fieldMappings[$name]);
     }
     return $fieldDescription;
 }