drupal 字段集 feildset(2)

老葛的Drupal培训班 Think in Drupal

我们使用可选的属性#collapsible和#collapsed来告诉Drupal,在点击第2个字段集标题时,通过使用Javascript让它可以伸缩。
  这里有个问题值得思考:当$form_state['values']传递到验证和提交函数时,颜色字段应该是$form_state['values']['color']['favorite_color'] 还是$form_state['values']['favorite_color']?换句话说就是,是否将该值嵌套在字段集里面?答案是:根据情况而定。默认情况下,在表单处理器中,表单值不用嵌套,所以下面的代码是正确的:
 
function formexample_nameform_submit($form_id, $form_state) {
    $name = $form_state['values']['user_name'];
    $color_key = $form_state['values']['favorite_color'];
    $color = $form_state['values']['color_options'][$color_key];
 
    drupal_set_message(t('%name loves the color %color!',
       array('%name' => $name, '%color' => $color)));
}
 
    更新后的提交处理器所设置的消息可以在图10-4中看到。
 
10-4 提交处理器为表单设置的消息
 
    然而,如果将属性#tree设为TRUE,那么表单的数据结构就会反映到表单值的名字中。所以,如果我们在定义表单时声明了:
 
$form['#tree'] = TRUE;
 
    那么我们就可以使用下面的方式访问数据了:
 
function formexample_nameform_submit($form, $form_state) {
    $name =       $form_state['values']['name']['user_name'];
    $color_key = $form_state['values']['color']['favorite_color'];
    $color =        $form_state['values']['color_options'][$color_key];
    drupal_set_message(t('%name loves the color %color!',
        array('%name' => $name, '%color' => $color)));
}
 
提示 将属性#tree设为TRUE,你将得到一个嵌套的表单值数组。将属性#tree设为FALSE(默认情况),你将得到一个未嵌套的表单值数组。
 

Drupal版本: