我是Symfony2的新手。我有页面rapport
和rapport/addnew
,我使用相同的表单。我需要做的是当用户在addnew
填写表单时重定向到rapport
,然后点击提交按钮。
以下是我在DefaultController
中使用的功能:
public function showListAction (Request $request)
{
$mission = $this->getDoctrine()
->getRepository('LRC203Bundle:Mission')
->findAll();
$form = $this->createForm(new RapportType(), $mission);
return $this->render('LRC203Bundle:Default:rapport.html.twig', array('form' => $form->createView(), 'mission' => $mission ));
}
这是我的html.twig:
{% block body %}
{% block missionsList %}
<ul>
{% for m in mission %}
<li> {{m.car}} </li>
<li> {{m.name}} </li>
{% endfor %}
</ul>
{% endblock %}
{% block newMission %}
{{ form(form) }}
{% endblock %}
{% endblock %}
控制器操作
public function rapportAction(Request $request) {
$mission = new Mission();
$form = $this->createForm(new RapportType(), $mission);
$form->handleRequest($request);
if($form->isValid()) {
$em=$this->getDoctrine()->getManager();
$em->persist($mission); $em->flush();
}
return $this->render('LRC203Bundle:Default:rapport.html.twig',
array(
'form' => $form->createView()
)
);
}
RapportType
class RapportType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('car','text')
->add('name','text')
->add('save', 'submit');
}
public function getName() {
return 'rapport';
}
} 所以我需要的是将Submit按钮链接到addnew page。
答案 0 :(得分:0)
所以实际上你是在正确的轨道上,你只需要添加:
if($form->isValid()) {
$em=$this->getDoctrine()->getManager();
$em->persist($mission); $em->flush();
return $this->redirect($this->generateUrl('your_path'));
}
这样就可以了。
答案 1 :(得分:0)
如果你想通过控制器重定向,试试这个
您可以尝试通过表单的“action”元素来计算出来,例如:
<form action="{{ path('task_new') }}" method="post" {{ form_enctype(form) }}>
{{ form_widget(form) }}
<input type="submit" />
</form>
或通过这种方式
$form = $this->createFormBuilder($task)
->setAction($this->generateUrl('target_route'))
->setMethod('GET')
->add('task', 'text')
->add('dueDate', 'date')
->add('save', 'submit')
->getForm();
或
$form = $this->createForm(new FormType(), $obj, array( 'action' => 'whatever you need'));
并抓住回复