假设我有一个包含大量字段的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甚至可以做到这一点,我该怎么做呢?
您需要禁用 CSRF 令牌才能手动绑定数据。
为此,您可以csrf_protection在创建表单对象时传递该选项。
像这样:
$pf = $this->createForm(new \MyBundle\Form\ProductType(), $product, array(
'csrf_protection' => false
));
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3368 次 |
| 最近记录: |