Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

Tabellenheader "Select All"-checkbox bei tableselect gegen eine eigene Überschrift tauschen

Eingetragen von hsler (10)
am 29.08.2013 - 11:48 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x oder neuer

Hallo,

bei Drupal 7 gibt es ja das Tableselect bei Formularen, den braucht man nur noch einen Header und ein Array mit Werten Mitgeben und die Tabelle wird schön von Drupal aufgebaut. Allerdings gibt es keine Möglichkeit die Checkbox mit der man alle Einträge auf einmal markieren kann durch eine eigene Überschrift zu ersetzen. Also habe ich das durch einfaches Javascript selber versucht, allerdings tauscht er immer die checkbox des ersten Eintrags in der Tabelle und nicht die Checkbox im Header, so als ob der Header gar nicht da wäre.

Hat jemand schon mal versucht auch eine eigene Überschrift zu machen und kennt das Problem?

Hier der Quellcode:

<?php
   
//
    // DRUPAL VERSION 6
    //
   
function test_menu()
{
   
$items = array();

   
$items['test'] = array(
           
'title'             => t('Test Page!'),
           
'page callback'     => 'test_page',
           
'page arguments'     => array(1),
           
'access arguments'     => array('access content'),
           
'type'                 => MENU_CALLBACK,
    );
       
    return
$items;
}


function
test_page()
{
   
$ausgabe = 'Test Daten zum Anzeigen.';
   
   
$tabelle = drupal_get_form('test_my_form');
   
   
$script = "<script type='text/javascript'>
                        document.getElementsByTagName('input')[0].outerHTML = 'TESTHEADER';
                  </script>"
;
   
    return
$ausgabe . $tabelle . $script;
}


function
test_my_form(&$form_state)
{
   
$header = array('Header1' => 'Header1', 'Header2' => 'Header2', 'Header3' => 'Header3', 'Header4' => 'Header4');
   
   
$options = array(
            array(
'Header1' => 'TEST', 'Header2' => 'TEST', 'Header3' => 'TEST', 'Header4' => 'TEST'),
            array(
'Header1' => 'TEST', 'Header2' => 'TEST', 'Header3' => 'TEST', 'Header4' => 'TEST'),
            array(
'Header1' => 'TEST', 'Header2' => 'TEST', 'Header3' => 'TEST', 'Header4' => 'TEST'),
            array(
'Header1' => 'TEST', 'Header2' => 'TEST', 'Header3' => 'TEST', 'Header4' => 'TEST'),
    );
       
   
$form['table'] = array(
           
'#type'     => 'tableselect',
           
'#header'     => $header,
           
'#options'     => $options,
           
'#multiple' => TRUE,
           
'#empty'     => t('Keine Daten gefunden.')
    );
   
    return
$form;
}
?>

‹ Dezimalzahl 0.00 verstecken, bzw. als 0 in Drupal behandeln [gelöst] Unterschiedliche E-Mail-Adressen je Sprache ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Kommst Du mit

Eingetragen von quiptime (4972)
am 29.08.2013 - 12:28 Uhr

Kommst Du mit hook_form_alter() nicht an die Checkbox ran?

  • Anmelden oder Registrieren um Kommentare zu schreiben

wenn ich mir die variable

Eingetragen von hsler (10)
am 29.08.2013 - 14:04 Uhr

wenn ich mir die variable $form mit dem debugger anschaue dann gibts diese spalte nicht, da steht ganz normal der header dem ich mitgebe drinn und wenn es von der funktion drupal_get_form zurückkommt steht es im tabellenheader auch noch nicht drin, es ist einfach leer wie man nachfolgend sieht:

<?php
 
<thead><tr><th class="select-all"></th><th>Header1</th><th>Header2</th><th>Header3</th><th>Header4</th> </tr></thead></code>
?>

wenn die webseite aber fertig aufgebaut ist steht es dann plötzlich da. daher wüsst ich nicht wie die hook_form_alter() benutzen könnte

  • Anmelden oder Registrieren um Kommentare zu schreiben

Manchmal muß man um bestimmte

Eingetragen von wla (9461)
am 29.08.2013 - 14:37 Uhr

Manchmal muß man um bestimmte Änderungen machen zu können in die "After Build" Phase gehen.
Hier ein Beispiel (Drupal 6) um den Eintrag für einen Menüpunkt zu unterdrücken.

/**
* Implementation of hook_form_FORM_ID_alter().
*/
function DEINMODUL_form_FORM_ID_alter (&$form, &$form_state) {
  // set the function for dealing with the form once it's complete
  $form['#after_build'][] = 'DEINMODUL_unsetmenu_after_build';
}
/**  
*   Supress menu tab in related form
*/
function DEINMODUL_unsetmenu_after_build ($form, &$form_state) {
  unset($form['menu']);
  return $form;
}

Die echten Namen habe ich durch die Großbuchstaben ersetzt, aber das sollte zum Verständnis reichen.

Beste Grüße
Werner

  • Anmelden oder Registrieren um Kommentare zu schreiben

Wie genau machst Du das?

Eingetragen von quiptime (4972)
am 29.08.2013 - 14:38 Uhr
Zitat:

wenn ich mir die variable $form mit dem debugger anschaue

Wie genau machst Du das?

  • Anmelden oder Registrieren um Kommentare zu schreiben

ZendStudio 10

Eingetragen von hsler (10)
am 02.09.2013 - 11:18 Uhr

Ist kein großes Hexenwerk, arbeite mit ZendStudio 10, da ist ein Debugger enthalten ;-)...

  • Anmelden oder Registrieren um Kommentare zu schreiben

geht leider nicht

Eingetragen von hsler (10)
am 02.09.2013 - 11:27 Uhr
wla schrieb

Manchmal muß man um bestimmte Änderungen machen zu können in die "After Build" Phase gehen.
Hier ein Beispiel (Drupal 6) um den Eintrag für einen Menüpunkt zu unterdrücken.

/**
* Implementation of hook_form_FORM_ID_alter().
*/
function DEINMODUL_form_FORM_ID_alter (&$form, &$form_state) {
  // set the function for dealing with the form once it's complete
  $form['#after_build'][] = 'DEINMODUL_unsetmenu_after_build';
}
/**  
*   Supress menu tab in related form
*/
function DEINMODUL_unsetmenu_after_build ($form, &$form_state) {
  unset($form['menu']);
  return $form;
}

Die echten Namen habe ich durch die Großbuchstaben ersetzt, aber das sollte zum Verständnis reichen.

Beste Grüße
Werner

also so funktioniert das nicht:

<?php
 
function test_form_test_my_form_alter (&$form, &$form_state) {
   
// set the function for dealing with the form once it's complete
   
$form['#after_build'][] = 'test_unsetmenu_after_build';
}

function
test_unsetmenu_after_build ($form, &$form_state) {
    unset(
$form['menu']);
    return
$form;
}
?>

Wenn ich mit dem Debugger an den anfang der Funktion viewx_unsetmenu_after_build springe dann kann ich sehen das unter $form es gar keinen eintrag 'menu' gibt, nur das gleiche wie auch vorher vor drupal_get_form, den header den ich mitgebe und die options, an der stelle kann man noch einige mehr informationen sehen, aber nichts was darauf schliessen lässt wo denn genau die checkbox in den tabellenheader auftaucht

  • Anmelden oder Registrieren um Kommentare zu schreiben

Angebot

Eingetragen von hsler (10)
am 02.09.2013 - 11:32 Uhr
quiptime schrieb
Zitat:

wenn ich mir die variable $form mit dem debugger anschaue

Wie genau machst Du das?

hsler schrieb

Ist kein großes Hexenwerk, arbeite mit ZendStudio 10, da ist ein Debugger enthalten ;-)...

Ist gerade übrigens auch im Angebot (50%) für 149,- bei denen auf der Webseite ;-).....

  • Anmelden oder Registrieren um Kommentare zu schreiben

hsler schrieb wla

Eingetragen von hsler (10)
am 02.09.2013 - 14:39 Uhr
hsler schrieb
wla schrieb

Manchmal muß man um bestimmte Änderungen machen zu können in die "After Build" Phase gehen.
Hier ein Beispiel (Drupal 6) um den Eintrag für einen Menüpunkt zu unterdrücken.

/**
* Implementation of hook_form_FORM_ID_alter().
*/
function DEINMODUL_form_FORM_ID_alter (&$form, &$form_state) {
  // set the function for dealing with the form once it's complete
  $form['#after_build'][] = 'DEINMODUL_unsetmenu_after_build';
}
/**  
*   Supress menu tab in related form
*/
function DEINMODUL_unsetmenu_after_build ($form, &$form_state) {
  unset($form['menu']);
  return $form;
}

Die echten Namen habe ich durch die Großbuchstaben ersetzt, aber das sollte zum Verständnis reichen.

Beste Grüße
Werner

also so funktioniert das nicht:

<?php
 
function test_form_test_my_form_alter (&$form, &$form_state) {
   
// set the function for dealing with the form once it's complete
   
$form['#after_build'][] = 'test_unsetmenu_after_build';
}

function
test_unsetmenu_after_build ($form, &$form_state) {
    unset(
$form['menu']);
    return
$form;
}
?>

Wenn ich mit dem Debugger an den anfang der Funktion viewx_unsetmenu_after_build springe dann kann ich sehen das unter $form es gar keinen eintrag 'menu' gibt, nur das gleiche wie auch vorher vor drupal_get_form, den header den ich mitgebe und die options, an der stelle kann man noch einige mehr informationen sehen, aber nichts was darauf schliessen lässt wo denn genau die checkbox in den tabellenheader auftaucht

habe jetzt eine einfachere Lösung gefunden die auch klappt: man muss das "select-all" rausmachen und dann taucht es nicht mehr auf, eigentlich total einfach, aber mal wieder zu kompliziert gedacht:

<?php


    $tabelle
= drupal_get_form('test_my_form');
   
$tabelle = str_replace('<th class="select-all"></th>', '<th>L&ouml;schen</th>', $tabelle);


?>

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 5 Tagen 19 Stunden
  • Hey danke
    vor 6 Tagen 14 Stunden
  • Update: jetzt gibt's ein
    vor 1 Woche 8 Stunden
  • Hallo, im Prinzip habe ich
    vor 1 Woche 4 Tagen
  • Da scheint die Terminologie
    vor 1 Woche 4 Tagen
  • Kannst doch auch alles direkt
    vor 2 Wochen 2 Tagen
  • In der entsprechenden View
    vor 2 Wochen 2 Tagen
  • Dazu müsstest Du vermutlich
    vor 2 Wochen 2 Tagen
  • gelöst
    vor 4 Wochen 5 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 4 Wochen 6 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20449

Neue User:

  • Mroppoofpaync
  • 4aficiona2
  • AppBuilder

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 8 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association