在我的symfony2項目中,我安裝了FOSRestBundle和NelmioApiDocBundle以創建api。NelmioApiDocBundle根據輸入註釋生成額外參數
我有一個奇怪的行爲與我的POST路由:當我添加註釋屬性「輸入」,除了我的表單域之外,Nelmio包生成一個額外的參數。這個額外的參數是表單實體本身。
屏幕:
我試着調試時刻Nelmio分析我的路由的註釋:
我們可以注意到parameters
屬性設置。
這是帖子的操作方法的註釋:
/**
* Create a Punchline from the submitted data.
*
* @ApiDoc(
* description = "Creates a new punchline from the submitted data.",
* input = {
* "class" = "Punchline\BackendBundle\Form\Type\PunchlineType",
* "options" = {"method" = "POST"}
* },
* statusCodes = {
* 201 = "Returned when successful",
* 400 = "Returned when the form has errors"
* }
*)
*
* @param Request $request the request object
*
* @return Response
*/
public function postPunchlineAction(Request $request)
這是我FormType:
<?php
namespace Punchline\BackendBundle\Form\Type;
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolverInterface;
class PunchlineType extends AbstractType
{
/**
* @param FormBuilderInterface $builder
* @param array $options
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('content', 'text')
->add('author', 'author_selector')
->add('single', 'single_selector')
;
}
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Punchline\BackendBundle\Entity\Punchline'
));
}
/**
* @return string
*/
public function getName()
{
return 'punchline';
}
}
從NelmioApiDocBundle documentation:
如果設置輸入,然後該捆綁包根據給定的類型自動提取參數 ,並確定e ach參數其數據類型爲 ,以及是否需要。
我試圖刪除表單域和參數仍然保留...我沒有找到我設置這個必需參數的位置。
感謝您的回答。事實上,如果我設置名稱屬性爲空值,我沒有額外的參數,但我不再有前綴...這不是我想要的:/ –