Как передать опции в Javascript из PHP?

Я использую 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"}}
}
});

Итак, могут ли двойные кавычки заставить его не работать? Или что не так с этим? Это не должно быть так много, хотя, я думаю …

2

Решение

Я просто понял, что мой комментарий был не совсем полным.

Код 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); ?>
});
1

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

Да, я понял, что я делаю неправильно.

Это не о том, как я закодировал мой массив $fields, речь идет о пропавшем ребенке validatorsкоторый требуется bootstrapValidator.

Я просто изменил это:


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

в это:


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

И он преобразует весь мой объект в то, что требуется bootstrapValidator. Также спасибо за владельца bootstrapValidator, чтобы я знал, что я пропустил validatorsключ.

Вот полная ссылка на библиотеку: https://github.com/nghuuphuoc/bootstrapvalidator

Надеюсь, вы, ребята, найдете это полезным.

1

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