2

我使用 BootstrapValidator 作为我的验证组件。我需要将从 PHP 收集的选项提供给它的构造函数,如下所示:

生成字段的 PHP 代码:

$fields = "";
foreach ($form["questions"] as $key => $value) {
    if (!empty($value["validators"])) {
        $fields .= "\"" . $key . "\":" . json_encode($value["validators"]) . ",";
    }
}
$new_fields = "{" . chop($fields, ",") . "}";

Javascript部分是:

$('#my_form').bootstrapValidator({
    message: 'This value is not valid',
    feedbackIcons: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
    },
    fields: <?php echo $new_fields; ?>
});

它打印出类似的东西:

     $('#fc_register_form').bootstrapValidator({
            message: 'This value is not valid',
            feedbackIcons: {
                valid: 'glyphicon glyphicon-ok',
                invalid: 'glyphicon glyphicon-remove',
                validating: 'glyphicon glyphicon-refresh'
            },
            fields: {
                "field_1": {"notEmpty": {"message": "The ****** cannot be empty"}},
                "field_1_confirm": {
                    "notEmpty": {"message": "The ******* must be same with first input for ******."},
                    "identical": {
                        "field": "field_1",
                        "message": "The given value is not same with first input for ****"}
                },
                "field_2": {"notEmpty": {"message": "The ******* empty"}},
                "field_3": {"notEmpty": {"message": "The ******* empty"}},
                "field_4": {"notEmpty": {"message": "The ****** is required and cannot be left empty"}}
            }
        });

那么,双引号可能会导致它不起作用吗?或者这有什么问题?不过应该不会这么多,我猜...

4

2 回答 2

1

我刚刚意识到我的评论并不完整。

PHP 代码

$fields = array();
foreach ($form["questions"] as $key => $value) {
    if (!empty($value["validators"])) {
        $fields[$key] = $value["validators"];
    }
}

JavaScript 代码

$('#my_form').bootstrapValidator({
    message: 'This value is not valid',
    feedbackIcons: {
        valid: 'glyphicon glyphicon-ok',
        invalid: 'glyphicon glyphicon-remove',
        validating: 'glyphicon glyphicon-refresh'
    },
    fields: <?php echo json_encode($fields); ?>
});
于 2014-11-03T21:59:38.633 回答
1

是的,我知道我做错了什么。

这不是关于我如何编码我的数组$fields,而是关于缺少validatorsbootstrapValidator 所需的孩子。

我只是改变了这个:

........ $fields[$key] = $value["validators"]; ........

进入这个:

........ $fields[$key]["validators"] = $value["validators"]; ........

它将我的整个对象转换为 bootstrapValidator 所需的。还要感谢 bootstrapValidator 的所有者让我意识到我错过了validators钥匙。

这是完整的库链接:https ://github.com/nghuuphuoc/bootstrapvalidator

希望你们觉得它有用。

于 2014-11-04T18:52:01.200 回答