Сохранение значений в таблице в своем модуле

Аватар пользователя Plazik Plazik 17 июля 2011 в 14:10

Добрый день.
Не получается в таблице в своем модуле сделать сохранение изменений через variable_get. Например в функции function draggabledemo_sort_form. Таблица выводится, но при изменении веса, изменения не сохраняются.
Код в полной версии.

<?php
/**
* Implementation of hook_menu
*/
function draggabledemo_menu() {
  
$items = array();

 

$items['draggabledemo'] = array(
    
'title' => 'Draggable Sorting List Demo',
    
'page callback' => 'drupal_get_form',
    
'page arguments' => array('draggabledemo_sort_form'),
    
'access arguments' => array('access content'),
  );

  return 

$items;
}

/**
* Form for re-ordering draggabledemo
*/
function draggabledemo_sort_form($node) {
  
$data = array(
            
=> 'First One',
            
=> 'Another One',
            
=> 'Some One',
          );
  
$form = array();
  
$form['list']['#tree'] = TRUE;
  
$form['list']['#theme'] = 'draggabledemo_list_sort_form';
  foreach (
$data AS $key => $title) {
    
$form['list'][$key]['title'] = array(
        
'#value' => $title
      
);
    
$form['list'][$key]['sort'] = array(
       
'#type' => 'weight'
       
'#delta' => count($data), 
       
'#default_value' => $key
     
);
  }
 
  return 
system_settings_form($form);
}

/**
* Theme the re-ordering form
*/
function theme_draggabledemo_list_sort_form($form) {
  
drupal_add_tabledrag('draggabledemo-sort''order''sibling''sort');
  
$header = array('''title''sort');
  foreach (
element_children($form) as $key) {
    
// Add class to group weight fields for drag and drop.
    
$form[$key]['sort']['#attributes']['class'] = 'sort';

    

$row = array(''); //This is important. We need to start with an empty element for the drag handle.

    

$row[] = drupal_render($form[$key]['title']);
    
$row[] = drupal_render($form[$key]['sort']);
    
$rows[] = array('data' => $row'class' => 'draggable'); //note the difference between $row and $rows
  
}
  
$output theme('table'$header$rows, array('id' => 'draggabledemo-sort'));
  
$output .= drupal_render($form);
  return 
$output;
}

/**
* Implementation of hook_theme
*/
function draggabledemo_theme() {
  return array(
    
'draggabledemo_list_sort_form' => array(
      
'arguments' => array('form' => NULL),
    ),
  );
}
?>

Комментарии

Аватар пользователя Plazik Plazik 17 июля 2011 в 19:15

"xxandeadxx" wrote:
system_settings_form не работет с формами у которых '#tree' = TRUE

Блин, плохо.
Т.е. надо самому писать действия, которые происходят при сохранении? Sad