gpt4 book ai didi

ajax - Drupal 表单验证 : An illegal choice has been detected

转载 作者:行者123 更新时间:2023-12-02 02:16:11 25 4
gpt4 key购买 nike

我在验证 Drupal 6 表单时遇到问题。

我有 2 个下拉菜单。第二个下拉列表(项目)的选项取决于第一个下拉列表(客户端)的所选选项。更改客户端时,我从该客户端获取所有项目。

现在,当验证表单时,选择了 default_value 和另一个客户端,项目的选项与表单构建中的不同。这意味着,项目的选定选项不在为表单构建的选项数组中。

有什么方法可以更改选项数组以进行表单验证?验证中项目的选项数组是根据客户的选择构建的吗?

最佳答案

这里要认识到的主要事情是,您的表单构建函数不仅会在初始表单构建时被调用一次,还会在表单提交时再次调用,在验证发生之前。因此,您可以调整您的表单构建函数,为项目选择字段构建不同的 $options 数组,具体取决于所选的客户(如果有的话)。

你可以通过检查 $form_state['values'] 来做到这一点,有点像这样:

function your_form(&$form_state) {
// ... other form building stuff
// Start with initial default options for project select
$project_options = array('- Please select client first -');
// Adjust, if client already selected
if (isset($form_state['values']) && $form_state['values']['your_client_select']) {
$selected_client = $form_state['values']['your_client_select'];
$project_options = your_function_to_build_project_options_by_client($selected_client);
}
// ... build project select using those options
// ... other form building stuff
}

关于ajax - Drupal 表单验证 : An illegal choice has been detected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10480031/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com