taxonomy[vid] nevű select áthelyezése fieldset-be

fox mulder képe

Sziasztok!

Biztos kiüti a szemem, de nem látom...
Van egy tartalomtípusom, aminek a beküldő űrlapját szeretném módosítani. A tartalomtípus hozzá van rendelve az egyik szótárhoz, tehát létrejön egy select elem a beküldő űrlapon (name="taxonomy[vid]"). Ezt a selectet szeretném beletuszkolni egy fieldset-be hook_form_alter()-ben, de úgy tűnik, ez a select már nem az a select.

function ..._form_alter(&$form, $form_state, $form_id) {
$form['new_fieldset'] = array(
  '#type' => 'fieldset',
  ...
);
$form['new_fieldset']['taxonomy'][vid] = array(
 ...
);
}

Persze létrejön egy új select elem a fieldset-ben, de egyrészt a forrást nézve azt látom, hogy a name attribútumából kimarad a 'taxonomy' (csak a vid marad), másrészt marad a $form['taxonomy'][vid] elem is. Két egymást követő select elemmel szeretném a taxonomy select-et összecsomagolni egy fieldset-be, mert ennek az utóbbinak az option-jei (istenem, hogy lehet ilyeneket normálisan leírni?) az előző kettőben kiválasztott opcióktól függenek (AHAH).
Drupal verzió: 
eMeLA képe

A [vid] mi kar lenni ? [$vid] vagy ['vid'] ?

0
0

...mit tudok: http://web.termuves.hu

eMeLA képe

$form['new_fieldset']['taxonomy'][vid] = array(....

helyett, szereintem

$form['new_fieldset']['taxonomy'][1] = $form['taxonomy'][1] ;
unset $form['taxonomy'][1]; //ez utóbbi törli az vid=1 eredeti példányát
0
0

...mit tudok: http://web.termuves.hu

fox mulder képe

A vid-nek van konkrét értéke, csak gondoltam, az itt most lényegtelen. De elnézést, tök félreérthető volt. Amit javasolsz, már próbáltam. Íme az eredményül kapott HTML kód:
<select size="4" id="edit-213" class="form-select required" multiple="multiple" name="213[]">
A name-nek ennek kéne lenni: taxonomy[219][], vagy nem?

0
0

Fox Mulder

eMeLA képe

Fontos az, hogy milyen a name értéke ? Gondolom hivatkozni akarsz rá. Akkor hivatkozz arra amit kreál a Drupal. Vagy így nem működik ?

0
0

...mit tudok: http://web.termuves.hu

fox mulder képe

Én tudok vele mit kezdeni, de a Taxonomy nem. Vagy én értek valamit félre? Ez a hibaüzenet jelenik meg:

Nem érvényes választást talált a rendszer. Javasolt a webhely gazdájával felvenni a kapcsolatot.

Gondolom a Taxonomy hiányolja a formját.

0
0

Fox Mulder

fox mulder képe

Ha csinálok egy taxonomy-tól független form elemet, mondjuk így:

$form['new_fieldset'] = array (
  '#type' => 'fieldset',
  ...
);
$form['new_fieldset']['malacka']['tao'] = array ( ... );

akkor a HTML forrásban megint csak ez van:
<div class="form-item" id="edit-tao-wrapper">
 <label for="edit-tao">Malacka: </label>
 <select name="tao" class="form-select" id="edit-tao" ><option value="0">&lt; Empty &gt;</option></select>

Az egyik gyanusítottam a form elem '#tree' kulcsa lett volna, de TRUE vagy FALSE (ez a default) érték mellett is ugyanez van. Ha a ['malacka']['tao'] páros helyett ['taxonomy'][123456] van és a 'taxonomy' eltűnik, honnan tudja a Taxonomy modul, hogy dolga van a form elemmel (a Taxonomy által hozzáadott form elem '#tree' értéke TRUE)?
0
0

Fox Mulder

fox mulder képe

Így sikerült:

$form['new_fieldset'] = array( ... );
// Itt a lényeg:
$form['new_fieldset']['taxonomy']['#tree'] = TRUE;
$form['new_fieldset']['taxonomy'][1234] = $form['taxonomy'][1234];
unset($form['taxonomy'][1234]);

Remélem pontosan vettem ki a lényeget. A lényeg, hogy a Taxonomy modul egy $form['taxonomy'][1234] nevű tömböt vár, ami <select ... name="taxonomy[1234]"> HTML-t eredményez (ettől függ a wrapper neve és a select id-je is). Ha csak simán betesszük a fieldsetbe, ahol a '#tree' értéke valszeg a default FALSE, akkor a Taxonomy modul már semmit sem tud kezdeni a $form[1234] tömbbel.
0
0

Fox Mulder

eMeLA képe

Így visszakeresve még leírás is van hozzá:
http://drupal.org/node/48643

0
0

...mit tudok: http://web.termuves.hu