我正在使用FOSRestbundle實現rest API。現在說的POST請求我得到的請求參數選擇不當,如:表單綁定不綁定請求在Symfony 2.1中形成+ FOSRestBundle
Symfony\Component\HttpFoundation\ParameterBag Object
(
[parameters:protected] => Array
(
[rank] => 12
[city] => 1345
[comment]=> 'safd'
)
)
我的後作用的代碼是:
/**
* @Rest\View
*/
public function newAction(){
$rank= new Rank();
$form = $this->createForm(new RankType(), $rank);
$form->bind($this->getRequest());
if ($form->isValid()) {
//. $user->flush();
$em = $this->getDoctrine()->getManager();
$em->persist($rank);
$em->flush();
$response = new Response();
$response->setStatusCode($statusCode);
$view = View::create()
->setData($rank)
->setFormat('json');
return $this->handleView($view);
}
return $this->handleView(View::create($form, 400));
}
但form->isValid
失敗,因爲設置空值形成。
After Binding form form->getData() will display :
MyProject\DataBundle\Entity\Rank Object
(
[city:MyProject\DataBundle\Entity\Ranking:private] =>
[rank:MyProject\DataBundle\Entity\Ranking:private] =>
[comment:MyProject\DataBundle\Entity\Ranking:private] =>
)
RankType代碼:
class RankType extends AbstractType
{
/**
* {@inheritdoc}
*/
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('rank');
$builder->add('city');
$builder->add('comment');
}
/**
* {@inheritdoc}
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'Myporject\DataBundle\Entity\rank',
'csrf_protection' => false,
));
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'rank';
}
}
驗證將拋出喜歡的城市,排名誤差不能爲空
任何建議,爲什麼不$form->bind
結合值?
發表您的表單類RankType()請。 –
我加了RankType() – stefun