使用FOSRestBundle与表单配合使用

8

针对FOSRestBundle、JMSSerializerBundle和模板的问题。

我试图替换一些通过twig输出json的现有代码,以使用FOSRestBundle。当从控制器传递的内容最初是数组时,这是成功的,但现在我正在尝试将一个表单传递给FOSRestBundle,结果是我的值永远不会返回。

下面的代码复制了这种情况

/**
 *  my sample get action
 * @View(templateVar="form")   
 */
public function getAction($id)
{
    ...         
     $form = $this->createFormBuilder(array('myValue' => 'SOMEVALUE'))
        ->add('myValue', 'hidden')
        ->getForm();

    $view = FOSView::create($form);
    $view->setFormat('json');

    return $this->get('fos_rest.view_handler')->handle($view);
}

返回
{"children":{"_token":[],"myValue":[]}}

我希望在这里看到的是这样的内容:

如下所示:

{"children":{"_token": "mylongtoken","myValue": "SOMEVALUE"}}

我一直在参考LiipHelloBundle中的示例代码,除非我错了,这些示例和他们提供的是匹配的?你有任何想法我做错了什么吗?


在将 $form 传递给视图处理程序之前,难道不需要调用 $form->createView() 吗? - Vitalii Zurian
嗯,也许吧。如果没有createView(),我会得到{"children":{"_token":[],"myValue":[]}},但是即使使用了createView,我最终仍然只得到{"_token":[],"myValue":[]} - MadManMonty
1个回答

2

好的,这并不是我在Symfony中所期望的最干净的解决方案,但它似乎可以工作:

$form->createView()->get('form')->get('form')->getChild('myValue')->get('choices')

返回我的值实体:

{"28":"默认1","103":"测试"}


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接