Событие формы администратора Sonata PRE_SUBMIT делает переменную ветки администратора нулевойPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Событие формы администратора Sonata PRE_SUBMIT делает переменную ветки администратора нулевой

Сообщение Anonymous »

У меня проблемы с событиями формы в классе администратора.
У меня есть динамически добавленные варианты выбора в пользовательском типе объекта. Варианты добавляются в базу данных с помощью javascript через контроллер. Чтобы иметь возможность проверять эти динамические варианты (добавлено после рендеринга формы), я добавил событие формы PRE_SUBMIT в поле в классе администратора. Поэтому перед отправкой формы я загружаю новый список выбора из базы данных, удаляю и добавляю поле обратно в форму, чтобы обновить его. параметры, как показано здесь https://gist.github.com/webdevilopers/f ... 7bb879d138

В шаблоне ветки типа формы я использую переменную sonata_admin.admin для получения необходимые данные.
Проблема в том, что когда в форме возникает ошибка (в любом другом поле в любом месте формы), переменная sonata_admin.admin из шаблона ветки имеет значение null.

спасибо за помощь

admin::configureFormFields()

$class = 'LibrinfoVarietiesBundle:SelectChoice';
$repo = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager')->getRepository($class);
$admin = $this;
$formBuilder = $formMapper->getFormBuilder();

$formBuilder->addEventListener(FormEvents::SUBMIT, function ($event) use ($formBuilder, $admin, $repo, $class) {
$form = $event->getForm();
$subject = $admin->getSubject($event->getData());
$label = 'librinfo_varieties_admin_variety_regulatory_status_librinfo_core_customchoice';
$choices = $repo->findBy(array(
'label' => $label
));

$choiceViews = array();
foreach ($choices as $choice)
{
$choiceViews[$choice->getvalue()] = $choice;
}
if ($form->has('regulatory_status'))
{
$form->remove('regulatory_status');
}

$customChoice = $formBuilder->getFormFactory()->createNamed('regulatory_status', 'librinfo_customchoice', null, array(
'choices' => $choices,
'class' => $class,
'auto_initialize' => false,
));
$form->add($customChoice);
});


тип формы ConfigurationOptions()

$label = 'librinfo_varieties_admin_variety_regulatory_status_librinfo_core_customchoice';
$choices = $this->repo->findBy(array(
'label' => $label
));
$choiceViews = array();
foreach ($choices as $choice)
{
$choiceViews[$choice->getvalue()] = $choice;
}

$resolver->setDefaults(array(
'choice_label' => 'value',
'class' => 'LibrinfoVarietiesBundle:SelectChoice',
'placeholder' => '',
'choices' => $choiceViews,
));


блок веток

{% block librinfo_customchoice_widget %}
{% set subject = sonata_admin.admin.subject %}
{% spaceless %}
{{ block('choice_widget') }}
{% if subject.fieldset is defined %}

{% else %}

{% endif %}
{% endspaceless %}
{% endblock %}


Подробнее здесь: https://stackoverflow.com/questions/389 ... iable-null
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»