我不知道我做错了什么。 我想我的确完全像我的表格类:
class ProductType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add("name",TextType::class)
->add("price",IntegerType::class)
;
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => Product::class,
));
}
}
在控制器中:
public function createAction (Request $request)
{
$product=new Product();
$form=$this->createForm(ProductType::class,$product);
$response=new JsonResponse();
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()){
$entityManager = $this->getDoctrine()->getManager();
$entityManager->persist($product);
$entityManager->flush();
$response->setContent(array('id',$product->getId()));
$response->setStatusCode('201');
}
else{
$response->setData(array('Error','Invalid form'));
$response->setStatusCode('400');
}
return $response;
}
但它不起作用。 $ request确实得到了值,但是$ form-> handleRequest($ request)什么也没做。
编辑:
new JsonResponse($form) -> {}
$request->get("name") -> ProductName (what I sent)
$request->get("price") -> 13 (what I sent)
$form->getErrors(true,true)) :
FormErrorIterator {#450 ▼
-form: Form {#437 ▼
-config: FormBuilder {#438 ▶}
-parent: null
-children: OrderedHashMap {#439 ▶}
-errors: []
-submitted: false
-clickedButton: null
-modelData: Product {#331 ▶}
-normData: Product {#331 ▶}
-viewData: Product {#331 ▶}
-extraData: []
-transformationFailure: null
-defaultDataSet: true
-lockSetData: false
}
-errors: []
}
“$ form-> getConfig() - > getMethod()”和“$ request-> getMethod()”都是“POST”。
答案 0 :(得分:0)
首先,您的方法createAction
中没有$ this-> render()。
我认为你用控制器功能调用你的控制器:
{{ render(controller( ... )) }}
如果是这种情况,请使用MasterRequest
:
$form->handleRequest($this->get('request_stack')->getMasterRequest());