Problém s funkcí form_validate() a theme()
Dobrý den, potřeboval bych poradit s tímto:
jde o to, že draggable tabulka se mi z formuláře rendruje správně, ale za žádnou cenu to nechce brát funkci eprihlaseni_akce_items_validate() a když funkci theme_eprihlaseni_akce_items() odstranim, tak mi to validaci bezproblémově vezme, napadlo mě, jestli není nutno ji tam někde do výstupu taky nějak zaregistorvat, fakt nevím. A ještě by mě zajímalo, jestli mohu k proměnným ve formuláři přistupovat obvykle přes $form_state[‚values‘]
Kód:
<?php
function eprihlaseni_akce_items(){
$id_akce = $_SESSION['eprihlaseni']['id_akce_items'];
$form['signed'] = array(
'#title' => t('Účastníci'),
'#type' => 'fieldset',
'#collapsible' => TRUE,
'#collapsed' => FALSE
);
$pojist = array(
'111'=>'Všeobecná ZP',
'201'=>'Vojenská ZP',
'205'=>'Česká prrůmyslová ZP',
'207'=>'Odborová ZP zaměstnanců bank, pojišťoven a stavebnictví',
'209'=>'Zaměstnanecká pojišťovna ŠKODA',
'211'=>'ZP ministerstva vnitra ČR',
'213'=>'Revírní bratrská pokladna',
'217'=>'ZP METAL-ALIANCE',
'222'=>'Česká národní ZP',
'227'=>'ZP AGEL',
'228'=>'ZP Média'
);
$sql = db_query("SELECT * FROM {eprihlaseni_signed} WHERE tabor = :id", array(':id' => $id_akce));
foreach($sql as $value){
$form['signed'][$value->id]['order_signed'] = array(
'#type' => 'hidden',
'#value' => $value->order_signed,
'#attributes' => array('class' => 'order_signed_class')
);
$form['signed'][$value->id]['jmeno'] = array(
'#type' => 'textfield',
'#value' => $value->jmeno
);
$form['signed'][$value->id]['adress']= array(
'#type' => 'textfield',
'#value' => $value->adress
);
$form['signed'][$value->id]['email'] = array(
'#type' => 'textfield',
'#value' => $value->email
);
$form['signed'][$value->id]['year'] = array(
'#type' => 'textfield',
'#size' => '20',
'#value' => $value->year
);
$form['signed'][$value->id]['rodc'] = array(
'#type' => 'textfield',
'#size' => '20',
'#value' => $value->rodc
);
$form['signed'][$value->id]['pojistovna'] = array(
'#type' => 'select',
'#options'=> $pojist,
'#value' => $value->pojistovna
);
$form['signed'][$value->id]['status'] = array(
'#type' => 'hidden',
'#size' => '20',
'#value' => $value->status
);
}
$form['add']['order_signed'] = array(
'#type' => 'hidden',
'#required' => 1,
'#attributes' => array('class' => 'order_signed_class')
);
$form['add']['jmeno'] = array(
'#type' => 'textfield',
'#required' => 1,
);
$form['add']['adress']= array(
'#type' => 'textfield',
'#required' => 1,
);
$form['add']['email'] = array(
'#type' => 'textfield',
'#required' => 1,
);
$form['add']['year'] = array(
'#type' => 'textfield',
'#required' => 1,
);
$form['add']['rodc'] = array(
'#type' => 'textfield',
'#required' => 1,
);
$form['add']['pojistovna'] = array(
'#type' => 'select',
'#options'=> $pojist,
'#required' => 1,
);
$form['add']['status'] = array(
'#type' => 'hidden',
);
$form['tlacitka']['submit'] = array(
'#type' => 'submit',
'#value' => 'Ulož',
);
$form['tlacitka']['printpdf'] = array(
'#type' => 'button',
'#attributes' => array('onclick' => 'alert(\'alert\')'),
'#value' => 'Tiskni v PDF',
);
return $form;
}
*****************************************************************
//funkce pro validaci
function eprihlaseni_akce_items_validate($form, $form_state){
drupal_set_message('Testovací hláška');
}
******************************************************************
function theme_eprihlaseni_akce_items($variables) {
$header = array('','Jméno','Adresa','E-mail', 'Datum narození', 'Rodné číslo', 'Pojišťovna', 'Status');
$rows = array();
drupal_add_tabledrag('table_signed_people', 'order', 'sibling', 'order_signed_class', NULL, NULL, FALSE);
$form = $variables['form'];
$row = array();
foreach(element_children($form['signed']) as $i){
$row = array();
foreach(element_children($form['signed'][$i]) as $key){
$row[] = array('data' => drupal_render($form['signed'][$i][$key]));
}
$row = array_merge(array('data' => $row), array('class' => array('draggable')));
$rows[] = $row;
}
$row = array();
foreach(element_children($form['add']) as $key){
$row[] = array('data' => drupal_render($form['add'][$key]));
}
$row = array_merge(array('data' => $row), array('class' => array('draggable')));
$rows[] = $row;
$element = array(
'#empty' => t('Zatím se nikdo nepřihlásil'),
'#attributes' => array(
'id' => 'table_signed_people',
)
);
$output .= theme('table', array('header' => $header, 'rows' => $rows, 'empty' => $element['#empty'], 'attributes' => $element['#attributes']));
$output .= drupal_render_children($form['tlacitka']);
return $output;
}
?>
==================================================================================================================================================
Myslim ze ti tam chyba
Myslim ze ti tam chyba
$form['signed']['#tree'] = TRUE;…Máte pravdu,
Máte pravdu, $form[‚signed‘][‚#tree‘] = TRUE mi tam chybělo, ale pořád to nevyřešilo problém s tím, že to nechce vzít funkci pro validaci, jakoby to na ni vůbec neodkazovalo. Tak prosím, jestli by Vás ještě něco nenapadlo…Díky
Ja by som to testoval cez
Ja by som to testoval cez
die('hlaska');– myslim ze Drupal robi presmerovanie a podobne tak je mozne ze sa set message nezobrazi.do formy si dopln argumeny
Poslat nový komentář