需要 Drupal 专家的帮助。
我的目的(使用 Drupal 7 和 Ubercart 3)是向 Checkout 页面添加一个自定义字段,该字段应该是动态的(来自 ajax 请求的值),其内容取决于用户的交付城市输入。
使用“额外字段窗格”模块,我已经成功创建了具有一些占位符值的字段。然后,我使用 JS 方法将值附加到该字段。当我提交具有该动态添加的选定值的表单时出现了问题 - 我对该字段有“无效选择”错误。当非添加的JS值(占位符)所选时 - 一切都按预期工作。
你能提示我解决这个问题吗?
我在这里找到了一个https://stackoverflow.com/a/5159013/837255,这似乎是一种常见的方法,但这里开始了其他问题。在钩子中的 %my module% 中,我无法访问字段以对其进行操作。
我需要如何更改由模块“ajax_field_name”创建的示例:
$form['panes']['delivery']['ajax_field_name']['#ajax'] = ....
但是我的 *cking 窗格没有任何 $form['panes']['delivery']['ajax_field_name']。当我这样做时,var_dump($form['panes']['delivery'])
我看到 'ajax_field_name' 位于$form['panes']['delivery']['address']['#uc_addresses_address']
私有财产后面的 OBJECT 中的某处。
function uc_nova_poshta_form_alter(&$form, &$form_state, $form_id){
if ($form_id == 'uc_cart_checkout_form'){
$obj = $form['panes']['delivery']['address']['#uc_addresses_address'];
// addressBook is a private property
$obj->addressBook;
}
}
事实上,这段代码可以满足我的需要 -
$form['panes']['delivery']['address']['ajax_field_name2'] = array(
'#type' => 'select',
...
}
在正确的位置创建一个自定义字段,可以访问它,但仅在该表单中,此字段不会影响任何进一步的活动(订单审查、管理页面等)。同样在$form['panes']['delivery']
此字段中('ajax_field_name2')与使用模块'ajax_field_name'创建的分开。
我猜这种行为的原因是一些模块,例如 uc_addresses (我是对的吗?),但即使我禁用了最可疑的模块 - 问题仍然存在。
是否有可能找出如何访问“ajax_field_name”创建的字段?谢谢你。