Установить коллекцию в соответствии со значением свойства и обновить через AJAX

у меня есть email объект, который содержит коллекцию textareas и имеет свойство template, Коллекция textareas содержит текстовые области в template, которые установлены в контроллере.

public function editAction($id, Request $request)
{
// Get the email
$email = EmailQuery::create()->findPk($id);
if (!$email)
{
throw $this->createNotFoundException('Unknown email ID.');
}

// If a new template file is selected, the client refreshes the form with ajax
// So let's get the new template value
if (isset($request->request->get('email')['template']))
{
if (isset($request->request->get('email')['update_with_ajax']))
$email->setTemplate($request->request->get('email')['template']);
}

// Get textareas in the email's template
$email->setTextareas($this->get('email.analyzer')->getTextAreas($email->getTemplate()));

// Create form
$form = $this->createForm('email', $email);

// Handle form
$form->handleRequest($request);

if ($form->isValid() && $form->get('save')->isClicked())
{
$form->save();
}
}

Это мой тип электронной почты (это услуга):

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;

class EmailType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Read template files in dir and store names in $templates
// $templates = array();

$builder->add('template', 'choice', array('choices' => $templates);
$builder->add('textareas', 'collection');
$builder->add('save', 'submit');
$builder->add('update_with_ajax', 'submit');
}
}

Проблема в том, что я хочу обновить textareas Коллекция через AJAX, когда пользователь выбирает другой шаблон. Как вы видите, я добавляю коллекцию шаблонов к объекту электронной почты перед созданием формы, я думаю, что здесь все идет не так, как надо, и вызывает This form should not contain extra fields ошибка. Но каков правильный подход?

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]