有一个多页的网页。
#验证处理程序添加
$form['#validate'][] = '_cbifasttrackcert_webform_validate_sector_country';将项目添加到列表中
$verifier_options = $verifierHandler->formatVerifierOptions($verifiers);
$form['#node']->webform['components'][$choose_verifiers_cid]['extra']['items'] =
$verifier_options;
$form_state['webform']['component_tree']['children'][$choose_verifiers_cid]['extra']['items'] = $verifier_options;这在整个表单中都很好,因为在节点列表中有一个检查值,所以不会提交这些值。
挑战是通过电子邮件发送基于值的响应,因为只有$submission可用。
在提交webform时,node_load用于在select.inc中加载一个干净的选项版本。这些选项用于检查是否提交了任何有效选项,列表中的选项未被丢弃。
web/sites/all/modules/contrib/webform/components/select.inc有_webform_select_options()选项,可以根据令牌提供回调或筛选。
我不知道如何使用这些选项访问form_state?类似地,钩子node_load有允许发现选项的form_state吗?
如何基于令牌筛选选择列表?如何在回调中加载表单数据?
发布于 2022-08-24 03:25:47
秘诀是在hook_node_load中加载所有可能的响应。即使提交,它们也是一个有效的选择。我使它成为一个关联数组,这样索引就不会改变。
function module_node_load($nodes, $types) {
$choose_verifier_no_verifier_cid = webform_get_cid($webform_node, MyModuleHelper::CHOOSE_VERIFIER_NO_VERIFIER_WEBFORM_KEY)[0];
$verifier_options = MyModuleHelper::chooseAllVerifiers();
$webform_node->webform['components'][$choose_verifiers_cid]['extra']['items'] = $verifier_options;
$webform_node->webform['components'][$choose_verifier_no_verifier_cid]['extra']['items'] = $verifier_options;https://drupal.stackexchange.com/questions/312666
复制相似问题