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()); }
/** * 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; }
/** * 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; }