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 :「フィールドが必要です」と表示されます!
誰かが私が間違っていることを知っていますか?