Зависимые элементы формы.

Главные вкладки

Аватар пользователя novichekd novichekd 4 августа 2011 в 9:53

Добрый день! Есть материал 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;
}
?>

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 4 августа 2011 в 14:52

"novichekd" wrote:
Но при сохранении документа, значения не сохраняются.

пойдём от обратного - почему оно должно сохранться? добавить поле в форму != сохранить его значение

Аватар пользователя novichekd novichekd 4 августа 2011 в 15:05

xxandeadxx wrote:
"novichekd" wrote:
Но при сохранении документа, значения не сохраняются.

пойдём от обратного - почему оно должно сохранться? добавить поле в форму != сохранить его значение

Если не сложно, тыкните меня в пример))) Т.е. примеры динамической формы я видел и в вашем блоге, а как именно темизировать форму определенного тип документа, чтобы все правильно сохранялось и далее правильно редактировалось я не видел. Если я совсем наглею, то не против помощи за $$$.

Аватар пользователя xxandeadxx xxandeadxx 4 августа 2011 в 15:24
<?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']
}
?>
Аватар пользователя novichekd novichekd 4 августа 2011 в 15:49

xxandeadxx wrote:

<?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);
}
?>

Или я опять не правильно делаю? Чето не сохраняется...

Аватар пользователя novichekd novichekd 4 августа 2011 в 16:31

xxandeadxx wrote:
http://fooninja.net/2011/04/13/guide-to-programmatic-node-creation-in-dr...

У меня все равно ничего не получается... Вот тут вообще показано что нужно делать так

<?php
 variable_set
('field_two'$form_state['values']['field_two']); 
?>

Кто может сделать пример полным кодом? Чтобы я до конца понял.

Аватар пользователя novichekd novichekd 4 августа 2011 в 16:41

xxandeadxx wrote:
"novichekd" wrote:
У меня все равно ничего не получается...

код?

пробовал так

<?php
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

  

$node->language LANGUAGE_NONE// Or e.g. 'en' if locale is enabled

  

$node->field_two[0]['value']   = $form_state['values']['field_two'];

  if(

$node node_submit($node)) { // Prepare node for saving
        
node_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']); 
}
?>