Adatok kinyerése "SELECT" és "RADIOS" típusú mezőkből

HoLa képe

Jó estét!

Sajnos megakadtam egy meglehetősen primitív problémával. Van egy rádiógombcsoportom és egy legördülő menüm:

// rádió gombok:
$form['fizetes']['comment_preview'] = array(
  '#type' => 'radios',
  '#title' => t('Paing type'),
  '#required' => TRUE,
  '#default_value' => variable_get('comment_preview', 0),
 // próbáltam így is:
 '#options' => array(t('bank'), t('post'), t('personal')),
 // és így is:
  '#options' => array(
  '1' => t('bank'),
  '2' => t('post'),
  '3' => t('personal'),
  ),
);
 
// legördülő menü:
$options2 = array();
$options2['none'] = t('0 pcs');
for ($f=1;$f<=10;$f++) $options2["$f"] = "$f ".t(' pcs');
$options2['more'] = t('more');
$form['what']['feed_item_length'] = array(
  '#type' => 'select',
  '#title' => t('Choose one'),
  '#required' => TRUE,
  '#default_value' => variable_get('feed_item_length','0'),
  '#options' => $options2,
);

és amikor ki szeretném kérni belőle az adatokat, akkor nem adja ki. Így próbálkozok:

  drupal_set_message('Fizetés: '.$form_state['values']['fizetes']);

sőt, még úgy is megpróbáltam, ahogy a checkboxokat kezeltem, de még így se működött (erre számítottam is, hogy nem lesz jó, de az ember mindent kipróbál, amit cska lehet):

foreach($form_state['values']['fizetes'] as $x)
{
  if($x != "")
  {
	drupal_set_message('Fizetés: '.$x);
  }
}  

Kerestem neten megoldásokat és más példákban működött a "$form_state['values']['fizetes']"-es megoldás. Nem értem nálam miért nem jó. Vagy lehet elnéztem valamit a példákon.

Köszönöm szépen a segítséget

pp képe

1. devel modul felrak, bekapcsol
2. drupal_set_message -> dpm függvényhívásra cserél.

pp

0
0
realdream képe

A $form_state tömb típusú ezért az 'Array' szöveget adja vissza, ha csak simán kiíratod. Pórbáld az alábbi módon:

    drupal_set_message('<pre>'.print_r($form_state['values'],true).'</pre>'); 

Kiíratni a form_submit függvényben próbáld és ellenőrizni kell, hogy a form_submit függvénynél zárójelben megadtad-e a ($form, &$form_state) paramétereket az alábbi módon:

function formneve_form_submit($form, &$form_state) {
    drupal_set_message('<pre>'.print_r($form_state['values'], true).'</pre>'); 
}

Bekapcsolt devel modul esetén pedig az említett dpm($input, $name = NULL) függvényt is lehet használni: http://ratatosk.backpackit.com/pub/1836982-debugging-drupal

0
0

-------------------------------
http://www.realdream.hu

HoLa képe

kiírattam ezzel, és ezt kaptam:

Array
(
    [nev] => sgfb56bu56
    [e-mail] => dfgh@fdg.hj
    [cim] => dfgdfg
    [telefon] => 1234555
    [comment_preview] => 0
    [feed_item_length] => 0
    [datum] => 2010-10-29 00:00:00
    [datum2] => 2010-10-31 00:00:00
    [bankszamla] => 0123456789876543210
    [price] => 
    [op] => Elküldés
    [submit] => Elküldés
    [form_build_id] => form-5ed4278bcbf0c6aae4e9f982199e87cd
    [form_token] => 3b6cb3de3519cc8afe67d5fa4ddc9ed0
    [form_id] => mymodule_myform
)

a "select" és a "radios" típusú mezők nem kerültek bele valamiért...
Sőt a "select" mezőket bekeríti vörössel és ezt a hibaüzenetet adja:
"Nem érvényes választást talált a rendszer. Javasolt a webhely gazdájával felvenni a kapcsolatot."

$options2 = array();
for ($f=0;$f<=10;$f++) $options2["$f"] = "$f ".t(' pcs');
$form['what_is_this']['feed_item_length'] = array(
  '#type' => 'select',
  '#title' => t('Number'),
  '#required' => TRUE,
  '#default_value' => variable_get('feed_item_length','0'),
  '#options' => $options2,
);

a Devel-t próbáltam, alapból is fenn volt, de nem adott semmi eredményt, és üres az oldalhoz tartozó Devel menü is üres volt...

0
0
Bálint képe

Annyi a probléma, hogy a drupal_set_message() sztringek kiíratására való, és amit te szeretnél kiírni, az egy tömb.
A Devel modult tényleg tedd fel, ahogy pp is ajánlotta, abban vannak hasznos függvények tömbök megjelenítésére a puritán print_r helyett.

0
0
HoLa képe

azt hittem ezek is egy értéked adnak vissza, mint a text mező vagy a dátum:

$form_state['values']['datum']; 

mert elvileg select-nél és radios-nál is csak 1-et lehet kijelölni egyszerre, ezért gondoltam, hogy csak 1 értéked adnak vissza, mert itt ha ez tömb akkor eléggé túl van bonyolítva a rendszer. Viszont az előző hozzászólásomban, ahogy írtam nem is kerül be a form_state()-be, akkor ezek szerint máshogy kellene rá hivatkoznom? és ha igen, hogyan?

0
0
HoLa képe

találtam egy ilyen témát a neten:
http://drupal.org/node/683500

Persze ez alapból másról szól, de itt van az, hogy így egyszerűen kiszedi egy "radios" típusú elemből az eredményt:

$answer_id = $form_state['values']['age'];

nálam miért nem működik az ilyesmi?

0
0
kkwx képe

Nekem is ez volt a gondom pár hete, és így oldottam meg a dolgot:

próbáld ki így:

$options2 = array();
for ($f=0;$f<=10;$f++) $options2[$f] = "$f ".t(' pcs');
$form['what_is_this'] = array(
  '#type' => 'select',
  '#title' => t('Number'),
  '#required' => TRUE,
  '#default_value' => 0,
  '#options' => $options2,
);

vagyis a "$form['what_is_this']['feed_item_length']"-ből (és értelemszerűen a default_value mellől is) ki kell venni a "['feed_item_length']" részt, és elvileg így jól megy :)

persze biztos lehet úgy is, hogy az benn marad, csak azzal anno nem foglalkoztam, és ahogy nézem nálad se fontos ez a mező :)

0
0
HoLa képe

valóban, így működik, köszönöm szépen :)

0
0