【问题标题】:Want to target array element in an array想要定位数组中的数组元素
【发布时间】:2014-08-24 06:50:57
【问题描述】:

我想定位时隙数组中的数组元素。这是代码。

function example_pane_checkout_form($form, &$form_state, $checkout_pane, $order) {
    $active = array(10 => t('10 - 11 am'), 11 => t('11 - 12 pm'), 12 => t('12 - 1 pm'), 13 => t('1 - 2 pm'), 14 => t('2 - 3 pm'),15 => t('3 - 4 pm'), 16 => t('4 - 5 pm'), 17 => t('5 - 6 pm'), 18 => t('6 - 7 pm'), 19 => t('7 - 8 pm'), 20 => t('8 - 9 pm'), 21 => t('9 - 10 pm'));

    $default_date=date("y-m-d"); $current_time = date('H');
    if($current_time <= 19) {
        $myvalues = example_pane_value($default_date);
        $default_time = $myvalues[0]; $time_slot_title=$myvalues[1]; $current_orders = $myvalues[2];
        //print "time".$default_time." date".$time_slot_title;
        $form['time_slot'] = array(
            '#type' => 'radios',
            '#title' => $time_slot_title,
            '#default_value' => $default_time,
            '#options' => $active,
        );

        if (variable_get('blocker_enable_1', 0)) {
            $form['time_slot'][$active][11] = array( '#disabled' => TRUE,);
        }
    } 
} 

我将如何定位名为 11 的活动数组项并使其禁用,因为它是单选组中的单选按钮。谁能解释一下。

【问题讨论】:

  • 您缺少结束标签 } ...
  • 实际上它是一个很大的功能,我只放了我正在处理的一部分。我的目标正确吗?
  • 您不能禁用数组元素。没有这样的事情。如果你想把它从数组中删除,你只能删除它,例如unset($form['time_slot'][$active][11]).
  • 请指定测试用例

标签: php arrays drupal drupal-modules drupal-commerce


【解决方案1】:

对于 drupal,我认为禁用它的唯一方法是使用 JavaScript 并在 form_validate 中执行检查。

你需要在表单中做这样的事情:

drupal_add_js(
    "$(#RadiosId input[value='ValueToDisable']).prop('disabled', true);",
    "inline"
);

并在表单中验证:

example_pane_checkout_form_validate($form, &$form_sublit){
    if ($form_state['values']['time_slot'] == $ValueToDisable ){
        form_set_error('time_slot', t('NO HACKING PLS!');
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-13
    • 2012-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多