Добрый день! Есть материал board, у него два поля field_one и field_two. Делаю второе поле видимым, если первое имеет значение one. Но при сохранении документа, значения не сохраняются. Что мне еще нужно сделать?
<?php
function input_form_alter(&$form, &$form_state, $form_id) {
switch ($form_id) {
case 'board_node_form':
$form['field_one'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array(t('one'), t('two'))),
);
$form['field_two'] = array(
'#type' => 'select',
'#options' => drupal_map_assoc(array(t('one'), t('two'))),
'#states' => array(
'visible' => array(
':input[name="field_one"]' => array('value' => t('one')),
),
),
);
break;
}
return;
}
?>
Комментарии
Может, поробовать посмотреть в сторону http://drupal.org/project/conditional_fields ?
Не, я хочу в модуль все. Т.к. в некоторые полня нужно будет загружать данные динамически.
Может кто-нибудь подскажет?
пойдём от обратного - почему оно должно сохранться? добавить поле в форму != сохранить его значение
Если не сложно, тыкните меня в пример))) Т.е. примеры динамической формы я видел и в вашем блоге, а как именно темизировать форму определенного тип документа, чтобы все правильно сохранялось и далее правильно редактировалось я не видел. Если я совсем наглею, то не против помощи за $$$.
<?php
function input_form_alter(&$form, &$form_state, $form_id) {
...
$form['#submit'][] = 'input_board_node_form_submit';
...
}
function
input_board_node_form_submit($form, $form_state) {// сохраняете значение $form_state['values']['field_two']
}
?>
<?php
function input_board_node_form_submit($form, $form_state) {
// сохраняете значение $form_state['values']['field_two']
$node = new stdClass();
$node->title = $form['values']['title'];
$node->field_two = $form_state['values']['field_two'];
$node_save($node);
}?>
Или я опять не правильно делаю? Чето не сохраняется...
http://fooninja.net/2011/04/13/guide-to-programmatic-node-creation-in-dr...
код?
пробовал так
<?php
$node->language = LANGUAGE_NONE; // Or e.g. 'en' if locale is enabled
$node->field_two[0]['value'] = $form_state['values']['field_two'];
function input_board_node_form_submit($form, $form_state) {
// сохраняете значение $form_state['values']['field_two']
$node = new stdClass(); // Create a new node object
$node->type = "board"; // Or page, or whatever content type you like
node_object_prepare($node); // Set some default values
if(
$node = node_submit($node)) { // Prepare node for savingnode_save($node);
echo "Node with nid " . $node->nid . " saved!\n";
}
}
?>
и так
<?php
function input_board_node_form_submit($form, $form_state) {
variable_set('field_two', $form_state['values']['field_two']);
}
?>