在ZF2中,只有在选择单选按钮时才可以要求文本字段吗?像这样......
答案 0 :(得分:3)
不,ZF2中没有办法解决这个问题,您可以使用jQuery的javascript为此添加验证:
像这样:
$('radio').click(function(){
if($(this).val() == 'other') {
$('textfield').prop('required',true);
}
});
Onclick
在客户端事件的任何单选按钮上,zf2在服务器端运行。所以你不能这样做,直到你把数据提交给服务器。
答案 1 :(得分:1)
您可以使用JavaScript库jQuery来执行此操作。
$(document).ready(function() {
$("#Radiobuttons").click(function() {
if($(this).attr('id') == "Other") {
//IF THE ID IS "OTHER"
$("#foo").show();
} else {
//IF THE ID IS NOT "OTHER"
$("#foo").hide();
}
});
});
因为只有这个,用户可以提交表格,文本框为空,勾选复选框,即可使用此脚本。
//CHECK IF THE FORM IS SUBMITTED
if ( $("#foo").css('display') != 'none' ){
//The text box is visible. Now check if it's empty, with
//jQuery, PHP, or any other thing you use.
}
答案 2 :(得分:0)
我知道这个问题很老,但也许有人会利用它。 是一种方法。
在表单类中从__construct中删除inputFilter方法。然后在你的inputFilter方法中(让它命名为addInputFilter)添加这样的参数:
public function addInputFilter(array $data) {
$inputFilter = new InputFilter();
$this->setInputFilter($inputFilter)
//your inputfilters
if ($data['radiofield'] === 'something') {
//add next inputfilters
}
//your inputfilters
}
接下来,转到你调用表单的地方(可能是控制器?):
$data = $this->request->getPost();
$form->setInputFilter($form->addInputFilter($data->toArray()));
$form->setData($data);
// next check if form is valid etc.
多数民众赞成。