2014-11-03 20 views
2

我使用BootstrapValidator作为我的验证组件。我需要给它从PHP聚集到它的构造类似这样的选择:如何将选项从PHP传递到Javascript?

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"}} 
      } 
     }); 

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

+1

什么是'$ fields'?这是'json_encode()'的结果吗?附:你的示例在''message“中缺少''':”...“# – 2014-11-03 21:48:02

+1

'$ fields'缺少它,或者你的复制/粘贴在'field_1_confirm'下的'message'丢失了'''选项。 – Kyle 2014-11-03 21:48:44

+0

伙计们,我已经添加了PHP部分并修复了缺失“。感谢您的警告。 – 2014-11-03 21:51:29

回答

1

叶氏,我想通了我在做什么错。

这不是关于我如何编码我的数组$fields,它是关于丢失bootstrapValidator所需的子项validators

我只是改变了这一点:

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

到这一点:

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

它我的整个对象转换为需要什么bootstrapValidator。还要感谢bootstrapValidator的主人,让我意识到我错过了validators键。

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

希望你们觉得它有用。

+0

当你允许时,不要忘了接受你自己的答案。 – Sonny 2014-11-04 20:34:22

+0

谢谢@Sonny,我会的。 – 2014-11-04 22:42:47

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); ?> 
}); 
+0

感谢您的回答,但是您更好地制定了逻辑。字段仍然有相同的东西,我在我的问题中展示并验证不起作用。 – 2014-11-03 22:04:58

+0

我已更正了使用JSON编码的问题。我不清楚问题是什么。 – Sonny 2014-11-03 22:06:30

+0

我想冒险猜测PHP中的数据有问题。您的浏览器控制台是否收到任何JavaScript错误? – Sonny 2014-11-03 22:21:05