2016-06-27 2 views
0

Symfony3에서 클래스가없는 양식을 만들려고합니다. 불행히도 유효성 검사가 실패하지만 메시지가 전혀 표시되지 않습니다. 단지 emtpy 문자열입니다. 양식 검증에 실패했지만 오류가 발생하지 않습니다.

public function postCollectionAction(Request $request) 
{ 
    $data = json_decode($request->getContent(), true); 

    $options = ["csrf_protection" => false]; 

    $form = $this->createFormBuilder([], $options) 
     ->add('elements', CollectionType::class, 
      [ 
       'entry_type' => MyClassType::class, //this should be form type 
       'allow_add' => true, // this needs to be true 
      ] 
     ) 
     ->getForm(); 

     $form->submit($data); // This was the main problem - form did not get submitted 

    $form->handleRequest($request); 

    if ($form->isValid()) { 
     die("ok"); 
    } 
    else 
    { 
     var_dump((string)$form->getErrors(true, false)); 
     die("not ok"); 
    } 
} 

클래스

나는이

use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Table 
*/ 
class MyClass 
{ 
    /** 
    * @var int 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=255, unique=true) 
    * @Assert\NotBlank() 
    */ 
    private $name; 
} 

같은 모습을 확인하는 것을 시도하고있다 그리고 이것은 내가 내가 명백한 놓친 거지 생각 그것을

{ 
    "elements": [{ 
     "name": "My element name" 
    }] 
} 

을 보내고 것입니다. 누군가이 일을하도록 나를 도울 수 있습니까?

UPDATE은 앨빈 이층 제안을 코드를 편집

+0

Symfony3 또는 Symfony2를 사용하고 있습니까? –

+0

@AlvinBunk 사용중인 심포니 3입니다. 양식 구성 요소가 변경된 것을 몰랐습니다. - 혼동스러운 태그를 제거합니다. –

답변

0

그것은 당신이 양식을 작성하는 방법을 이상하게 보이지만, 내가 그것을 이해하지만 방법 대신 시도에 대해 (일을 ... 그리고 그것은 수도?)

$form = $this->createFormBuilder(null, $options) 
    ->add('elements', CollectionType::class, array(
      'entry_type' => MyClass::class, 
    )) 
    ->getForm(); 

어떻게 되나요? 'app_dev.php'URL에 추가 정보가 표시되는지 확인해 보셨습니까?

편집 # 2 ...

나는 당신의 JSON이 잘못 생각합니다. 다음과 같아야합니다.

{ 
    "elements": { 
     "name": "My element name" 
    } 
} 
+0

유효성 검사가 실패하여 작동하지 않는 것 같습니다. 대신 null을 시도하고 그것도 작동하지 않았다 ... 코드는 대부분 http://symfony.com/doc/current/book/forms.html#using-a-form-without-a-class –

+0

또한에서, var/logs (dev.log 또는 prod.log)에서 로그를 확인하십시오. –

+0

하지만 결과가 나타납니다. 예외가 발생하지 않습니다. 실제 출력은 app_dev.php에서 문자열 (0) ""이 아닙니다. –