【问题标题】:Drupal node form conditionally remove required status from fieldsDrupal 节点表单有条件地从字段中删除所需状态
【发布时间】:2016-07-12 13:42:04
【问题描述】:

我正在尝试以编程方式从某些节点/*/编辑字段中删除所需的状态。所需状态是默认设置的,只能根据分类字段中的选定值删除:

使用以下代码:

function mymodule_form_node_form_alter(&$form, &$form_state, $form_id) {
    if( $form_id == 'job_node_form' ){
        $form['#after_build'] = array('test');
    }
}

function test(&$form, &$form_state) {
    $form['title']['#required'] = FALSE; // works
    $form['jobs_schools_data']['field_job_type']['#required'] = FALSE; // does NOT work
    return $form;
}

我发现我可以成功地从标题字段中删除所需的状态,但对于我在上面的代码示例中添加的字段,例如 field_job_type,这同样不起作用。

为什么这不起作用,我该如何纠正它?

【问题讨论】:

  • 如果您转储$form,您确定可以访问正确的元素吗?也许尝试将$form_state['rebuild'] = true; 添加到test 函数
  • 否则,默认情况下需要删除,并在节点上设置 hook_validate 以应用条件

标签: drupal-7 field nodes required


【解决方案1】:

我有类似的东西,在实际表单中,我没有在两个字段上设置所需的状态,如果满足某些条件,只有一个应该显示。然后,我创建了一个自定义函数来检查是否填充了一个字段,并在此基础上从那里设置错误消息。

function events_registration_form_validate($form, &$form_state){
     $selected_time = $form_state['values']['time_selected'];
if ($form_state['values']['time_selected'] == '') {
  form_set_error('time_selected', t('Please choose an event time.'));

【讨论】:

  • 非常感谢 Johanna,但我不想设置错误警报。相反,我试图根据某些条件禁用单个字段上所需的错误警报。感谢您的一致回复
猜你喜欢
  • 1970-01-01
  • 2014-09-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-13
  • 2013-06-04
相关资源
最近更新 更多