Как установить опцию по умолчанию для ссылки на поле cck через форму alter
Я принимаю 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 ответа
Решение
Сначала вы должны держаться подальше от 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;
}
}
}
Я неправильно обращался к значению элемента, потому что это поле ссылки на узел, правильный способ получить доступ к этому элементу $form['field_media_model']['#default_value'][0]['nid']