у меня есть 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
ошибка. Но каков правильный подход?
Задача ещё не решена.
Других решений пока нет …