Формы в Drupal: default_value и value.
До сих пор применял атрибуты '#default_value' и '#value' не особо задумываясь об их отличиях. Делал по образцу и как-то само собой получалось правильно. Но удача отвернулась от меня, я ошибся и на меня снизошло просветление.
Вчера сел делать форму. Все очень просто - данные загружаются в форму из mysql пользователь их редактирует нажимает кнопку "Изменить" и новые данные отправляются в БД.
<?php
function module_edit(&$form_state){
// Получение данных из БД
// ...
if($cat=db_fetch_object($result)){
$form=array();
$form['f']=array(
'#type'=>'textfield',
'#value'=>$f,
);
$form['submit']=array(
'#type'=>'submit',
'#value'=>'Изменить',
);
return $form;
}
?>В приведенном коде я использовал '#value'. В результате в массиве $form_state['values'] хранились не введенные пользователем данные, а те, что первоначально были в форме.
<?php
function module_edit_submit($form,&$form_state){
$f=$form_state['values']['f'];
// Обработка данных
// ...
}
?>Переменная $f содержала устаревшие данные. А введенные пользователем данные нужно искать в массиве $form_state['clicked_button']['#post'].
После замены '#value' на '#default_value' все встало на свои места.
Читайте также:
Ссылки с других сайтов
Пока ничего нет
Опубликовано vikeng в Вс, 10/08/2008 - 15:38
Tags:

Комментарии:
Отправить комментарий