Symfony:获取现有的表单引用


Symfony: get existing form reference

在将网站迁移到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形式,但人们可以纠正我…