2009-07-29 5 views
0

Ich versuche, #field_prefix auf ein Textfeld zu implementieren, so dass ich einige zusätzliche Benutzeroberfläche zu meinem Formular hinzufügen kann.Drupal Formular-API: #field_prefix funktioniert nicht auf Textfeld

Ich habe ein Modul, in dem ich andere überschreibt wie das tue, mit einer Funktion, die im Grunde wie folgt aussieht:

function modulename_form_alter(&$form, $form_state, $form_id){ 
    if ($form_id == "contenttype_node_form"){ 
     $form['field_contenttype_fieldname'][0]['#prefix'] = 'prefix'; //this line works   
     $form['field_contenttype_fieldname'][0]['#field_prefix'] = 'field_prefix'; //this line doesn't work 
    } 

Hier ist die Dokumentation, scheint ziemlich geradlinig: http://api.drupal.org/api/file/developer/topics/forms_api_reference.html/6#field_prefix

I habe mein Theme umbenannt, um es effektiv zu deaktivieren - sollte beweisen, dass ich keine anderen Overrides hänge, die einen Konflikt verursachen würden.

Was fehlt mir?

Update: Ended up theme_form_element zwingend meinen Präfix manuell einzulegen, wenn der #field_name die richtige Bedingung erfüllt. Es fühlt sich Hacky an, aber text_textfield unterstützt einfach #field_prefix nicht.

+0

Nichts davon sollte funktionieren, wie es sein sollte "modulename_form_alter" anstelle von "modulename_formalter" ... – ceejayoz

+0

mein Fehler beim Eintippen. Die Präfix-Zeile funktioniert wie erwartet. – ack

+0

OK, nur überprüfen. Es passiert! – ceejayoz

Antwort

1

Meine Vermutung ist, dass man als CCK Feld field_contenttype_fieldname ist nicht wirklich ein Textfeld, sondern eine benutzerdefinierte FormAPI Feld CCK bietet das ist wie ein Textfeld, und als solche ist es nicht das field_prefix Attribut verbrauchen.

Versuchen Sie print_r() ing dieses Feld aus der $form und sehen Sie, was es #type ist.

+0

Ja, genau das ist es. es ist ein 'text_textfield'. Ich kann #Type überschreiben und erzwinge es in ein 'Textfeld' und mein #field_prefix funktioniert jetzt. irgendwelche Gefahren dabei? Wie ist 'text_textfield' anders? – ack

+0

Es kann die Mehrfachwertverarbeitung von CCK beeinträchtigen, aber ansonsten funktioniert es, wenn es funktioniert. – ceejayoz