如何将Symfony2表单与数组(不是请求)绑定?

use*_*635 5 php symfony

假设我有一个包含大量字段的HTML表单.有些字段属于Product,有些属于Order,有些属于Other.提交表单时,我想接受该请求,然后在控制器中为Product,Order和Other创建Symfony表单.然后我想获取部分表单数据并将其与适当的表单绑定.一个例子是这样的:

$productArray = array('name'=>$request->get('name'));
$pf = $this->createForm(new \MyBundle\Form\ProductType(), $product);
$pf->bind($productArray);
if($pf->isValid()) {
  // submit product data
}

// Do same for Order (but use order data)

// Do same for Other (but use other data)
Run Code Online (Sandbox Code Playgroud)

问题是,当我尝试这样做时,我无法使用$ form-> isValid()方法.似乎bind()步骤失败了.我怀疑它可能与表单令牌有关,但我不知道如何解决它.再次,我在视图中构建自己的HTML表单(我没有使用form_widget(),导致将一堆FormTypes以某种方式合并到一起所需的所有复杂性).我只想要一个非常简单的方法来使用基本的HTML表单和Symfony表单功能集.

任何人都可以告诉我,Symfony甚至可以做到这一点,我该怎么做呢?

Ino*_*ryy 2

您需要禁用 CSRF 令牌才能手动绑定数据。

为此,您可以csrf_protection在创建表单对象时传递该选项。

像这样:

$pf = $this->createForm(new \MyBundle\Form\ProductType(), $product, array(
    'csrf_protection' => false
));
Run Code Online (Sandbox Code Playgroud)