在将网站迁移到symfony时,我必须重用一些HTML代码。当前的HTML页面有一个表单:
<form name="n1" id="n1" method="post" onsubmit="return verifSelect()" action="{{path('toto')}}" >
<select>
{% for e in experimentations %}
<option>{{e.name}}</option>
{% endfor %}
</select>
</form>
我想将所选的Experimentation
对象(而不仅仅是名称)传递到toto
页面。symfony文档使用了类似的东西:
if ($form->isSubmitted() && $form->isValid()) {
// ... perform some action, such as saving the task to the database
return $this->redirectToRoute('task_success');
}
但我有两个问题:
- 如何获取
form
对象引用 - 如何获取选定的
experimentation
对象引用(以便将其作为参数发送到下一个路由)
非常感谢您的帮助,
我不确定我是否理解你的问题,但我会尽力给你答案:
- 您可以通过在控制器中使用$form->getData()来获取表单数据
- 不能将整个对象作为参数传递给下一个管线
你可以这样做:
$data = $form->getData();
return $this->redirectToRoute('task_success',array('experimentation'=> $data['experimentation');
然后你可以在你的totoAction上获得实验id。
我希望它能帮助你。
首先,您必须为所选Tag指定一个名称,以便引用它name="experimentations"
。你还需要一个提交按钮,我想你有<input type="submit" value="submit"/>
<form name="n1" id="n1" method="post" onsubmit="return verifSelect()" action="{{path('toto')}}" >
<select name="experimentations">
{% for e in experimentations %}
<option>{{e.name}}</option>
{% endfor %}
</select>
<input type="submit" value="submit"/>
</form>
要获取控制器类中的信息,请使用$request
-对象。功能
class DefaultController extends Controller {
/**
*
* Matches /todo/
*
* @Route("/todo/", name="Todo")
*/
public function indexAction(Request $request) {
$experimentations = $request->request->get("experimentations");
...
}
据我所知,在这种情况下你不能使用Object形式,但人们可以纠正我…