как установить опцию по умолчанию для ссылки на поле cck через форму alter - PullRequest
1 голос
/ 20 сентября 2011

Я принимаю arg из URL и в соответствии со значением 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;
  }

}

Ответы [ 2 ]

2 голосов
/ 11 октября 2011

Сначала вы должны держаться подальше от конструкции 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;
    }
  }
}
0 голосов
/ 11 октября 2011

Я неправильно обращался к значению элемента, потому что это поле ссылки на узел, правильный способ доступа к этому элементу - $form['field_media_model']['#default_value'][0]['nid']

...