【发布时间】:2018-07-09 06:56:41
【问题描述】:
我正在尝试创建一个表单来创建一个人,而这个人可能与另一个人有某种关系(比如妻子、丈夫、孩子……),所以我尝试使用添加按钮来创建一些东西一个关系,这是我的代码:
if (empty($form_state['number_liaisons'])) {
$form_state['number_liaisons'] = 1;
}
$form['info_contact']['liaison'] = array(
"#type" => "fieldset",
"#title" => "Liaisons",
"#attributes" => array("class" => array("center"))
);
for ($i = 1; $i <= $form_state['number_liaisons']; $i++) {
$form['info_contact']['liaison'][$i] = array(
"#type" => "fieldset",
"#title" => "Liaison",
"#attributes" => array("class" => array("center"))
);
$form['info_contact']['liaison'][$i]['contact'] = array(
'#type' => 'textfield',
'#title' => t("Personne a lier"),
'#autocomplete_path' => 'crm/autocomplete_liaison',
);
$form['info_contact']['liaison'][$i]['type'] = array(
'#type' => 'select',
'#title' => t("Type de liaison"),
'#options' => Array('enfant' => 'Enfant', 'conjoint' => 'conjoint'),
'#empty_option' => t('- Choisir un type de liaison -'),
);
}
$form['info_contact']['liaison']['add_item'] = array(
'#type' => 'submit',
'#value' => t('Add liaison'),
'#submit' => array('liaison_add_item'),
'#limit_validation_errors' => array(),
);
if ($form_state['number_liaisons'] > 1) {
$form['info_contact']['liaison'] = array(
'#type' => 'submit',
'#value' => t('Remove liaison'),
'#submit' => array('liaison_remove_item'),
'#limit_validation_errors' => array(),
);
}
以及添加/删除关系的两种方法:
function liaison_add_item($form, &$form_state)
{
$form_state['number_liaisons']++;
$form_state['rebuild'] = true;
}
function liaison_remove_item($form, &$form_state)
{
if ($form_state['number_liaisons'] > 1) {
$form_state['number_liaisons']--;
}
$form_state['rebuild'] = true;
}
我的问题是,当我单击“添加联络人”按钮时,所有字段都消失了,而当我单击删除联络人时,字段又回来了。
因此,当我的 $form_state['number_liaisons'] 中有超过 1 个时,for 不会显示我的字段。
有人知道怎么解决吗?
【问题讨论】: