1

ajax を使用して、ZF3 で非同期の連絡先フォームの検証を実行しようとしています。それが私の ContactController です

public function contactAction()
{
    $form = $this->form;
    $request = $this->getRequest();
    $response = $this->getResponse();
    $vm = new ViewModel(['form' => $this->form]);

    $form->setInputFilter(new ContactFormFilter());

    if (!$this->getRequest()->isPost())
        return new ViewModel(['form' => $this->form]);

    $data = $request->getPost();

    $form->setData($data);

        if (!$form->isValid())
        {
            $vm->setTerminal(true);
             return $response->setContent(\Zend\Json\Json::encode($form->getMessages()));
        }

}

以下は、jquery スクリプトを使用した contact.phtml です。

$(function(){
    $("#foo").submit(function(event){
        event.preventDefault();


        $.ajax({
            url: '/kontakt',
            type: 'POST',
            dataType: 'json',
            contentType: "application/json; charset=utf-8",
            async: true,
            data: ($("#foo").serialize()),
            success: function (data) {
                console.log(data);
                alert(data);
            },
            error: function (data) {
                console.log(data);

            }
        });
    })
})

フォームには「foo」ID があります。

問題は、送信すると毎回次のように応答することです:(コンソールから)

Object
-email :Object
-message :Object
-subject :Object
-personal-data :Object

そして、例として「メッセージオブジェクト」を開くと、メッセージフィールドが空でない場合でも、isEmpty :「フィールドが必要です」と表示されます!

誰かが私が間違っていることを知っていますか?

4

1 に答える 1