Workaround
:现在将父母从形式转换为文本就可以了。
我刚刚创建了一个父类为表单的自定义字段类型。
有没有人知道我怎样才能获得正确的property_path?我的意思是,在MyFieldType中,我想访问MyFormType的属性,该属性使用了my_field_type字段,因此我可以使用dinamically设置正确的property_path。
这是我的自定义字段类型。在下面的类中,想要使用ColorPaletteField
作为propery_path值设置表单类型属性。
namespace WE\BobbyWebAppBundle\Form\Field; use Symfony\Component\Form\AbstractType; use Symfony\Component\Form\FormView; use Symfony\Component\Form\FormInterface; use Symfony\Component\OptionsResolver\OptionsResolverInterface; use Symfony\Component\PropertyAccess\PropertyAccess; use Symfony\Component\Form\FormBuilderInterface; use Symfony\Component\Form\Extension\Core\EventListener\TrimListener; class ColorPaletteField extends AbstractType { public function setDefaultOptions( OptionsResolverInterface $resolver ) { $resolver->setDefaults( array( 'mapped' => true, 'error_bubbling' => false, 'colors' => array() ) ); } /** * Pass the help to the view * * @param FormView $view * @param FormInterface $form * @param array $options */ public function buildView( FormView $view, FormInterface $form, array $options ) { $parentData = $form->getParent()->getData(); if( null !== $parentData ) { $accessor = PropertyAccess::getPropertyAccessor(); $defaultColor = $accessor->getValue( $parentData, 'calendar_color' ); } else { $defaultColor = null; } if( array_key_exists( 'colors', $options ) ) { $colors = $options[ 'colors' ]; } else { $colors = array(); } $view->vars[ 'colors' ] = $colors; $view->vars[ 'defaultColor' ] = $defaultColor; } public function getParent() { return 'form'; } public function getName() { return 'color_palette'; } }
先谢谢了,
答案 0 :(得分:0)
您可以在选项中传递它。首先在自定义字段中设置默认值
$resolver->setDefaults(array(
'mapped' => true,
'error_bubbling' => false,
'colors' => array()
'property_name' => 'calendar_color'
));
然后添加此字段以形成并在选项
中定义属性名称->add('some_name', 'color_palette', array('property_name' => 'some_name'));