1

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 かに関係なく、検証は常にエラー メッセージをトリガーします。

誰が何が間違っているのか知っていますか?

4

0 に答える 0