1

我接受来自 url 的 arg 并根据我需要设置默认选项值的 arg 值,这里是代码:

function ims_form_alter(&$form, $form_state, $form_id) {


switch ($form_id) {

  case 'media_content_node_form':

    unset($form['buttons']['preview']);

    $form['#redirect'] = 'mediacontent';

    if(is_numeric(arg(3)))
    {
      $arg_nid = arg(3);
      foreach($form['field_media_model']['#options'] as $k=>$v)
              {
        if($v==$arg_nid)
        {
        $form['field_media_model']['#default_value'] = $v;
        } 

      }
    }

    break;
  }

}
4

2 回答 2

2

switch首先,如果您只测试一件事,您应该远离建筑;使用if.

其次,根据您自己的评论,您使用了错误的变量。

第三,为什么还有所有额外的麻烦,例如取消设置值、循环通过#options 和重定向?

function ims_form_alter(&$form, $form_state, $form_id) {
  if ($form_id == 'media_content_node_form') {
    $nid = arg(3);

    if(($nid = arg(3)) && is_int($nid)) {
      $form['field_media_model']['#default_value'][0]['nid'] = $nid;
    }
  }
}
于 2011-10-11T08:45:23.467 回答
0

我错误地访问了元素的值,因为它是节点引用字段访问该元素的正确方法是$form['field_media_model']['#default_value'][0]['nid']

于 2011-10-11T09:30:39.010 回答