FosrestBundle 및 Symfony3를 사용하여 API를 구축하고 있습니다. 내 작업의 일부에서는 양식을 작성해야하며 양식의 일부 필드를 "필요하지 않음"으로 설정합니다. 하지만 제작을 시도 할 때 오류가 발생했습니다.FosrestBundle을 사용하여 양식을 작성할 때 Symfony3에서 "필요하지 않음"을 사용합니다.
내 엔티티 중 하나에 대한 양식을 만든 방법은 다음과 같습니다. "질문".
class QuestionType extends AbstractType{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder->add('libelle');
$builder->add('description');
$builder->add('imageRoot');
$builder->add('page', 'integer', array('required' => false));
$builder->add('ligne', 'integer', array('required' => false));
}
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'data_class' => 'AppBundle\Entity\Question',
'csrf_protection' => false
]);
}
}
둘째, 내 validation.yml 파일 유효성 검사 매개 변수를 설정 :
은 첫째로 나는이 false로 필요한 설정 QuestionType 클래스 생성 셋째AppBundle\Entity\Question:
properties:
libelle:
- NotBlank: ~
- Type: string
description:
- NotBlank: ~
- Type: string
imageRoot:
- Type: string
page:
- Type: integer
- GreaterThan:
value: 0
- LessThanOrEqual:
value: 1000
ligne:
- Type: integer
- GreaterThan:
value: 0
- LessThanOrEqual:
value: 1000
를, 내가 만들어 내 컨트롤러에서 양식
class ContenuController extends Controller{
/**
* @Rest\View(serializerGroups={"contenu"}, statusCode=Response::HTTP_CREATED)
* @Rest\Post("/lectureContenu/{id}/Questions")
*/
public function postQuestionAction(Request $request)
{
$em = $this->getDoctrine()->getEntityManager();
$contenu = $em->getRepository('AppBundle:Contenu')->find($request->get('id'));
$typeQuestion = $em->getRepository('AppBundle:TypeQuestion')->find(1);
if (empty($contenu)) {
return new JsonResponse(['message' => 'Contenu de la question inexistant'], Response::HTTP_NOT_FOUND);
}
$question = new Question();
$question->setContenu($contenu)
->setTypeQuestion($typeQuestion);
$form = $this->createForm(QuestionType::class, $question);
$form->submit($request->request->all()); // Validation des données
if ($form->isValid()) {
$em->persist($question);
$em->flush();
return $question;
} else {
return $form;
}
}
}
마지막으로, 코드를 실행할 때 제작 : 아래 (우편 배달부 사용) :
...
"message": "Could not load type \"integer\"",
"class": "Symfony\\Component\\Form\\Exception\\InvalidArgumentException",
...
나는 이유를 알고하지 않습니다
{
"libelle": "test",
"description": "test",
"imageRoot": "test"
}
나는이 오류가있어! 나를 위해, 모든게 맞는 것 같습니다. 도와주세요 !
왜 'Question $ form'의'buildForm' 메쏘드에'return $ options;'를 추가하십시오 ??? –
실수입니다, 그냥 제거하십시오 :) – kabrice
'AppBundle \ Entity \ Question' 엔티티 및 관련 코드의 유효성 검증 제약 조건을 추가하십시오. (몇 가지 맞춤 제약 조건). –