[gelöst] View in User Profile Form
Eingetragen von silentbob (41)
am 07.06.2013 - 10:21 Uhr in
am 07.06.2013 - 10:21 Uhr in
Hallo,
ich hab eine kleines Modul geschrieben, welches über hook_form_alter eine View zur User Profile Form hinzu fügen soll. Wenn ich mir die Form über Krumo oder dsm ausgeben lasse, werden die daten ausgegeben. Die View an sich wird allerding nicht in der Profile Form angezeigt. Anbei mein Code:
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_profile_form') {
$form['my_view_field'] = array(
'#type' => 'markup',
'#value' =>views_embed_view('my_view','my_display'),
'#weight' => -100,
);
krumo($form);
return $form;
}
}
Wir kriege ich die View dargestellt ?
- Anmelden oder Registrieren um Kommentare zu schreiben
Wenn du das Formular über den
am 08.06.2013 - 18:36 Uhr
Wenn du das Formular über den hook_form_alter erweiterst, darf diese Form nicht noch einmal per return zurückgegeben werden. Dies ist nur bei einem normalen hook_form notwendig. Wenn du aus deinem Modul das return $form enfernst, sollte der View problemlos dargestellt werden.
Im hook_form_alter wird hierfür die Variable $form per Referenz übergeben - so werden geänderte Daten direkt mit "weitergegeben".
Weitere Infos zum Thema Parameterübergabe per Referenz:
http://php.net/manual/de/language.references.pass.php
hook_form_alter: https://api.drupal.org/hook_form_alter
SteffenR
http://www.twitter.com/_steffenr
Drupal-Initiative e.V.
Hi, Vielen Dank für deine
am 11.06.2013 - 09:25 Uhr
Hi,
Vielen Dank für deine Antwort. Ich werde das auch einmal ausprobieren. Ich hatte bisher zwei andere Lösungsansätze die auch ein bissel ihre Tücken haben:
- Der erste Ansatz war über hook_theme und einer user-profile-form.tpl.php. Finde ich aber irgendwie zu overloaded.
- Der zweiter Ansatz war mit Hilfe des Context Moduls. Damit kann man auch eine Condition auf zb. die User Form abfragen und dann einen Views Block einblenden. Hier habe ich aber das Problem das ich den Block nicht an die Stelle kriege (zwischen zwei bestimmten Feldern), wo ich ihn gerne hätte. Ich hab halt auch Field Groups.
Die Lösung über hook_form_alter wäre eigentlich die eleganteste und man muss nur an einer stelle den Code anpacken.
Gruss
So sieht der tatsächliche Code dann aus
am 12.06.2013 - 21:18 Uhr
Ich musste anstatt #value #markup nehmen und den Rat das return zu entfernen beherzigen.
So sieht der tatsächliche Code dann aus, falls es jemanden etwas bringt:
function MYMODULE_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'user_profile_form') {
$form['view block'] = array(
'#type' => 'markup',
'#markup' =>views_embed_view('myview','myview_display_block'),
'#weight' => 1,
);
}
}
ups doppler
am 12.06.2013 - 21:19 Uhr
ups doppler