ZF2 アプリケーションでFormvalidation.io [ http://formvalidation.io]リモート バリデーターをセットアップしました。ただし、JSON 応答に関係なく、エラー メッセージが引き続き表示されます。
設定:
<script>
$(document).ready(function() {
$('#create-genre-form').formValidation({
framework: 'bootstrap',
icon: {
valid: 'glyphicon glyphicon-ok',
invalid: 'glyphicon glyphicon-remove',
validating: 'glyphicon glyphicon-refresh'
},
fields: {
'genre[name]': {
icon: false,
threshold: 3,
verbose: false,
validators: {
notEmpty: {
message: 'The name is required and can\'t be empty'
},
remote: {
url: '<?php echo $this->serverUrl(), $this->url('genre', array('action' => 'available')); ?>',
type: 'POST',
dataType: 'jsonp',
validKey: 'is_valid',
message: 'A genre with that name already exists'
}
}
},
}
})
});
そして私のコントローラーで:
/**
* Method called to set positions based on the relative position in the view.
*
* @return ViewModel
*/
public function availableAction()
{
$available = FALSE;
// Get your ObjectManager from the ServiceManager
$objectManager = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
// Determine the param to obtain
$param = $array["genre"]["name"];
// Obtain the name to be validated from the parameters
$name = $this->params()->fromPost($param)["genre"]["name"];
// Setup the NoObjectExists filter
$options = array('object_repository' => $objectManager->getRepository(Genre::class), 'fields' => 'name');
$filter = new NoObjectExists($options);
// Check if Genre with given name exists
if ($filter->isValid($name))
{
$available = TRUE;
}
$data = array(
'is_valid' => $available
);
return $this->getResponse()->setContent(Json::encode($data));
}
このメソッドは正常に動作しますが、is_valid が true か false かに関係なく、検証は常にエラー メッセージをトリガーします。
誰が何が間違っているのか知っていますか?