Workaround
: К настоящему времени cnhanging form parent из формы в текст сделал трюк.Получить свойство_path в настраиваемом поле типа
Я только что создал пользовательский тип поля, родитель которого является формой.
Кто-нибудь знает, как я могу получить правильный property_path? Я имею в виду, внутри MyFieldType я хотел бы получить доступ к свойству MyFormType, который использовал поле my_field_type, чтобы я мог динамически установить правильный путь property_path.
Вот мой пользовательский тип поля. Внутри следующего класса хотелось бы динамически установить свойство Type Type, которое использует значение ColorPaletteField
как valuey_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'; } }
Благодаря передовой,
пожалуйста показать нам некоторый пример кода –
я просто редактироваться и разоблачил используется код выше. Благодарю. – user846226