在使用ajax时,如何将CakePHP3验证注入表单?

在使用ajax时,如何将CakePHP3验证注入表单?,php,jquery,ajax,cakephp-3.0,Php,Jquery,Ajax,Cakephp 3.0,我有一个应用程序,目前有用户点击一个会员级别,这将显示该会员的数据,并允许用户添加1或2个用户,这取决于会员资格以及使用条带支付。用户表单提交到不同的控制器操作,但条带支付到当前控制器,但也是不同的操作 我希望能够停止AJAX并显示用户表单的验证错误(如果有)。到目前为止,由于@Kevin B,这段代码将捕获并包含它在console.log中显示的AJAX数据中的错误,但我不确定如何在表单中显示它 我已经搜索并找到了CakePHP早期版本的几个示例,但我不知道它们是否是CakePHP 3的正确路

我有一个应用程序,目前有用户点击一个会员级别,这将显示该会员的数据,并允许用户添加1或2个用户,这取决于会员资格以及使用条带支付。用户表单提交到不同的控制器操作,但条带支付到当前控制器,但也是不同的操作

我希望能够停止AJAX并显示用户表单的验证错误(如果有)。到目前为止,由于@Kevin B,这段代码将捕获并包含它在console.log中显示的AJAX数据中的错误,但我不确定如何在表单中显示它

我已经搜索并找到了CakePHP早期版本的几个示例,但我不知道它们是否是CakePHP 3的正确路径。它们看起来也和我想做的完全不同,所以我不知道它们是否有效

如果有人能给我指出正确的方向,我将不胜感激

$(function() {
    var submitAllForms = function() {
        var promiseArr = $('#userForm, #secondUserForm').map(function() {
            var formDetails = $(this);
            return $.ajax({
                type: formDetails.attr('method'),
                url: formDetails.attr('action'),
                data: formDetails.serialize(),
                success: function(data) {
                    console.log('user\(s\) have been added');
                    console.log(data);
                },
                error: function(data) {
                    console.log('user\(s\) could not be added');
                    console.log(data);
                }
            });
        }).get();
        // wait until both of the other forms' data are submitted
        //$.when.apply(null, promiseArr).then(function () {
        //    $('#payment-form').get(0).submit();
        //});
    }
    Stripe.setPublishableKey('<?= $keys[0]['publishable_key'] ?>');
    $('#payment-form').submit(function(e) {
        $form = $(this);
        $form.find('button').prop('disabled', true);
        //async
        Stripe.card.createToken($form, function(status, response){
            console.log(status);
            console.log(response);
            if(response.error) {
                $form.find('.payment-errors').text(response.error.message);
                $form.find('button').prop('disabled', false);
            } else {
                var token = response.id;
                $form.append($('<input type="hidden" name="stripeToken"/>').val(token));
                submitAllForms();
            }
        });
        return false;
    });
});
console.log中的示例数据:

<div class="page-wrap">
    <div class="form">
        <h1>Join Now</h1>
        <form method="post" accept-charset="utf-8" action="/utahreia3.0/users/add">
            <div style="display:none;">
                <input type="hidden" name="_method" value="POST">
            </div>
            <div class="input text">
                <label for="full-name">Full Name</label>
                <input type="text" name="full_name" maxlength="100" id="full-name" value="mr dude">
            </div>
            <div class="input text error">
                <label for="username">Username</label>
                <input type="text" name="username" maxlength="100" id="username" class="form-error" value="mrdude">
                <div class="error-message">That username has already been used.</div>
            </div>
            <div class="input email error">
                <label for="email">Email</label>
                <input type="email" name="email" maxlength="100" id="email" class="form-error" value="mr@dude.com">
                <div class="error-message">That email has already been used.</div>
            </div>
            <div class="input password">
                <label for="password">Password</label>
                <input type="password" name="password" id="password" value="Skater1">
            </div>
            <div class="input password error">
                <label for="password-confirmation">Password Confirmation</label>
                <input type="password" name="password_confirmation" id="password-confirmation" class="form-error" value="Skter1">
                <div class="error-message">Passwords do not match.</div>
            </div>
            <div class="input select required">
                <label for="role">Role</label>
                <select name="role" required="required" id="role">
                    <option value="1">Admin</option>
                    <option value="2">Editor</option>
                    <option value="3">Author</option>
                    <option value="4" selected="selected">Reader</option>
                </select>
            </div>
                <button type="submit">Sign Up</button>
        </form>
    </div>
</div>

正如您所看到的,显示的是用户/添加视图的表单,但我在成员级别/签出/2视图中。我应该用返回的表单替换表单吗?还是有更好的办法?它也是以纯html返回的,应该是JSON吗?如果是这样,我就不知道如何获取JSON格式的表单,我可以获取JSON格式提交的用户数据,但不能获取返回的表单。

听起来更像是JavaScript问题,比如如何将数据注入HTML元素。您的问题缺少的是对您所面临的实际技术问题的描述。您可能是对的。。。我只知道CakePHP3有内置的验证,如果我直接转到users/add视图,它就可以工作。由于我处于一个不同的控制器操作中,并且通过ajax发布数据,它实际上没有进入该视图,因此我失去了对用户的反馈。我想知道,如果存在任何验证错误,是否有一种简单的方法可以停止ajax处理,并将它们显示为我正在使用JSON响应或其他方式直接访问users/add视图。