Workaround:现在从表单到文本的 cnhanging 表单父级做到了。
我刚刚创建了一个自定义字段类型,其父项是表单。
有谁知道我怎样才能获得正确的property_path?我的意思是,在 MyFieldType 中,我想访问使用 my_field_type 字段的 MyFormType 的属性,这样我就可以动态地设置正确的 property_path。
这是我的自定义字段类型。在下面的类中,想要动态地设置ColorPaletteField用作 property_path 值的 Form Type 属性。
命名空间 WE\BobbyWebAppBundle\Form\Field;
使用 Symfony\Component\Form\AbstractType;
使用 Symfony\Component\Form\FormView;
使用 Symfony\Component\Form\FormInterface;
使用 Symfony\Component\OptionsResolver\OptionsResolverInterface;
使用 Symfony\Component\PropertyAccess\PropertyAccess;
使用 Symfony\Component\Form\FormBuilderInterface;
使用 Symfony\Component\Form\Extension\Core\EventListener\TrimListener;
类 ColorPaletteField 扩展 AbstractType
{
公共函数 setDefaultOptions( OptionsResolverInterface $resolver )
{
$resolver->setDefaults(数组(
'映射' => 真,
'error_bubbling' => 假,
'颜色' => 数组()
)
);
}
/**
* 将帮助传递给视图
*
* @param 表单视图 $view
* @param FormInterface $form
* @param 数组 $options
*/
公共函数 buildView(FormView $view, FormInterface $form, array $options)
{
$parentData = $form->getParent()->getData();
如果(空!== $parentData)
{
$accessor = PropertyAccess::getPropertyAccessor();
$defaultColor = $accessor->getValue( $parentData, 'calendar_color' );
}
否则 { $defaultColor = null; }
if(array_key_exists('colors', $options))
{
$colors = $options['colors'];
}
否则 { $colors = array(); }
$view->vars['colors'] = $colors;
$view->vars['defaultColor'] = $defaultColor;
}
公共函数 getParent()
{
返回“表格”;
}
公共函数 getName()
{
返回“颜色调色板”;
}
}
先谢谢了,