【发布时间】:2011-06-02 17:05:55
【问题描述】:
在 Drupal 6.20 中,我正在构建一个创建多页表单 (my_form_process) 的函数。在一个页面上,用户可以从先前创建的地址列表中进行选择,或者创建一个新地址。如果用户想创建一个新的,我使用 javascript 和 CSS 来隐藏选择并取消隐藏地址表单(地址、城市状态 zip 等)。为了确保用户提供所需的数据,我有一个验证函数(my_form_process_validate),如果字段为空,我会设置错误。麻烦的是,当页面验证失败时,my_form_process 会重新绘制出现验证错误的表单,但默认返回“从先前创建的地址列表中选择”,而出现错误的“新建”表单元素仍然是隐藏。
当验证失败时,如何告诉构建表单的 my_form_process 显示“创建新”div,并隐藏“选择旧”div?我尝试设置一个 $form['storage'] 变量,但 my_form_process 似乎没有看到它。
这里有更多信息:
我尝试在验证例程中添加 $form_state['validation_status'] = 'error',但发现错误时仍然发现该值不在表单函数中使用的 $form_state 数组中。
但是,当没有错误时,该值是可用的。 (一条线索)
所以,只是为了好玩,我从验证例程中删除了“form_set_error”行,现在该值可用。
所以现在,我必须设置
$form_state['validation_error'] = '<ol>';
$form_state['validation_status'] = 'error';
$form_state['validation_error'] .= '<li>' . t('address cannot be blank') . '</li>';
$form_state['validation_error'] .= '</ol>';
然后在表单函数中我可以测试 $form_state['validation_error'] 如果是 'error' 然后使用
drupal_set_message($form_state['validation_error'],$form_state['validation_status']);
显示消息,然后适当设置div的显示属性。
当然看起来像是“form_set_error”过程中的一个错误,但我是 Drupal/PHP 领域的新手,所以我不确定我在做什么。
【问题讨论】:
标签: drupal drupal-fapi