【发布时间】:2014-10-20 07:29:44
【问题描述】:
由于我还是 Symfony2 的初学者,我一直在广泛搜索——包括简单教程的官方文档或如何将这个简单的表单转换为使用 AJAX 的分步指南,所以我不会必须刷新页面。
有人可以指导我逐步了解 Twig 文件和控制器中的内容以实现这一点吗?
这是 Controller 和 Twig 文件的原始代码:
控制器
/**
* @Route("/form", name="form")
*/
public function formAction(Request $request)
{
$article = new Article();
$form = $this->createForm(new ArticleType(), $article);
$form->handleRequest($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($article);
$em->flush();
$session = $request->getSession();
$session->getFlashBag()->add('message', 'Article saved');
return $this->redirect($this->generateUrl('formsaved'));
}
return $this->render('Form/form.html.twig', array(
'form' => $form->createView()
));
}
/**
* @Route("/formsaved", name="formsaved")
*/
public function formSavedAction()
{
return $this->render('Form/formsaved.html.twig');
}
form.html.twig
{% block body %}
{#{{ form(form) }}#}
{{ form_start(form) }}
{{ form_errors(form) }}
{{ form_row(form.title) }}
{{ form_row(form.body) }}
{{ form_end(form) }}
{% endblock %}
formsaved.html.twig
{% block body %}
{% for flashMessage in app.session.flashbag.get('message') %}
<p>{{ flashMessage }}</p>
{% endfor %}
{% endblock %}
文章类型表单
class ArticleType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('title', 'text', array(
'label' => 'Title'
))
->add('body', 'textarea')
->add('save', 'submit');
}
public function getName()
{
return 'article';
}
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Symfony2\FormBundle\Entity\Article'
));
}
}
【问题讨论】: