Я настроил 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 истинным или ложным, проверка всегда вызывает сообщение об ошибке.
Кто-нибудь знает, что может быть не так?
Задача ещё не решена.
Других решений пока нет …