Formvalidation.io устанавливает ошибку для удаленного вызова независимо от результата в контроллере ZF2

Я настроил Formvalidation.io [http://formvalidation.io] удаленный валидатор в приложении ZF2. Однако, независимо от ответа 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 истинным или ложным, проверка всегда вызывает сообщение об ошибке.

Кто-нибудь знает, что может быть не так?

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]