+ Antworten
Seite 1 von 4 1 2 3 4 LetzteLetzte
Ergebnis 1 bis 10 von 39

Thema: $task bleibt immer NULL

  1. #1
    Neu an Board
    Registriert seit
    08.07.2007
    Beiträge
    15
    Bedankte sich
    0
    1 Danksagung in 1 Beitrag

    Standard $task bleibt immer NULL

    Hallo Leute,

    habe heute mal angefangen, eine eigene Komponente für Joomla 1.0.13 zu schreiben.

    Nun funktioniert im FRONTEND alles wunderbar, auch eine Tabelle mit der Ansicht aller Datenbankeinträge im Backend funktioniert.

    Mein Problem ist allerdings, dass ich, wenn ich in der Toolbar auf z.B. NEW klicke, nichts passiert. Ein Debug über den Inhalt dieser Variable brachte mich auch nicht weiter.

    Hier mal ein Auszug aus meiner admin.mykontakt.php:

    PHP-Code:
     defined '_VALID_MOS' ) or die ( 'Direct access not allowed !' );
     
     require_once(
    $mainframe->getPath('class'));
     require_once(
    $mainframe->getPath('admin_html'));
     
     
    $id mosGetParam ($_REQUEST'cid', array(0));
     
     if (!
    is_array$id )) {
         
    $id = array(0);
     }
     
     if (!
    $task$task="listItems";

     switch (
    $task){
         case 
    "edit":        edit($option$id[0]); break;
         case 
    "new":            edit($option''); break;
         case 
    "save":        save($option); break;
         case 
    "delete":        delete($option$id); break;
         case 
    "publish":        publish($option'1'$id); break;
         case 
    "unpublish":    publish($option'0'$id); break;
         case 
    "listItems":    listItems($option); break;    
     } 
    Dieses Switch-Statement funktioniert insofern nicht, da die Variable $task immer leer ist. Übergebe ich Sie per Link mit einem Wert funktioniert alles wunderbar, allerdings nicht nach einem Klick in der Toolbar.

    Bitte um Hilfe
    und schon mal dank im Voraus
    Fishmac

  2. #2
    Hat hier eine Zweitwohnung Avatar von kaspurlu
    Registriert seit
    08.03.2007
    Ort
    München
    Beiträge
    1.112
    Bedankte sich
    90
    Erhielt 211 Danksagungen
    in 197 Beiträgen

    Standard

    setzt doch vorne hin mal $task = mosGetParam(usw.)
    Event Table Edit Tabellenkomponente für verschiedenste Einsatzgebiete

  3. #3
    Neu an Board
    Registriert seit
    08.07.2007
    Beiträge
    15
    Bedankte sich
    0
    1 Danksagung in 1 Beitrag

    Standard

    hab ich auch schon probiert:

    $task = mosGetParam($_REQUEST,'task','');

    bringt auch nix :-(

  4. #4
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Nicht
    PHP-Code:
    if (!$task$task="listItems"
    sondern default Wert für den task vergeben, das nur am Rande.

    Statt
    PHP-Code:
    $id mosGetParam ($_REQUEST'cid', array(0)); 
    PHP-Code:
    mosGetArrayInts() 
    verwenden.

    Wie sieht denn deine toolbar.html aus?
    Die globalen Arrays checken.
    PHP-Code:
    var_dump($_REQUEST);
    exit(
    0); 
    Gruß
    ec

  5. #5
    Neu an Board
    Registriert seit
    08.07.2007
    Beiträge
    15
    Bedankte sich
    0
    1 Danksagung in 1 Beitrag

    Standard Ausgaben / Werte

    So, hier mal die toolbar.mykontakt.html.php:

    PHP-Code:

      defined 
    '_VALID_MOS' ) or die ( 'Direct access not allowed !' );
      
      class 
    menuMy_Kontakt{
          function 
    list_menu(){
              
    mosMenuBar::startTable();
              
    mosMenuBar::publish('publish');
              
    mosMenuBar::unpublish('unpublish');
              
    mosMenuBar::addNew('new');
              
    mosMenuBar::editList('edit');
              
    mosMenuBar::deleteList('''delete');
              
    mosMenuBar::endTable();
          }
          
          function 
    edit_menu(){
              
    mosMenuBar::startTable();
              
    mosMenuBar::back();
              
    mosMenuBar::save('save');
              
    mosMenuBar::endTable();
          }
      }
    ?> 
    Und warum steht der Wert für 'task' nicht in $_REQUEST (var_dump....):

    PHP-Code:
    array(4) { ["option"]=>  string(13"com_mykontakt" ["act"]=>  string(3"all" ["7a4ec453f46358d97fc2ec7370a0b0b4"]=>  string(1"-" ["6ebf31ae9849f0dd9b0d3e642323856a"]=>  string(32"0dd504ae7f4776982943595eec96a56e" 

  6. #6
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Unterbrichst du dann den Programmablauf mit exit oder rufst du eine Funktion auf, die
    auf einer andere Seite umleitet?

    Gruß
    ec

  7. #7
    Neu an Board
    Registriert seit
    08.07.2007
    Beiträge
    15
    Bedankte sich
    0
    1 Danksagung in 1 Beitrag

    Standard

    Ich lasse das Programm hiernach in die Switch-Anweisung weiterlaufen.

    Problem ist, dass ich erwarte, in der Variablen $task nach Klick auf z.B. new der Toolbar ein verwertbares Value zu finden. Daher muss ich die Ausgabe ja auswerten nach dem Klick, kann also nicht mit exit beenden.

    Was mich nur wundert: ich habe im grossen und ganzen das Beispiel zum Testen anhand eines Tutorials aus einem Buch - eigentlich sollte ich in $task doch was haben :-(

  8. #8
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Du läufst nach dem Absenden in der Toolbar nicht zufällig in eine Funktion, die
    ein mosRedirect enthält? Exit soll für ein Debugging gesetzt werden, damit
    man nicht weitergeleitet wird. Wenn du mosRedirect in der Funktion ausführst,
    ist wohl klar, dass der Task leer ist, da du schon längst einen neuen Request
    hast und Task schon lange nicht mehr gefüllt ist, aber vorher war.

    So könnte das aussehen. Wenn du nun auf die Toolbar klickst siehst du,
    dass da ein Task ist.
    PHP-Code:
    //debug
    if(!empty($task)) {
       echo 
    'task fired: '$task;
       
    // unterbricht den ablauf
       
    exit();

    Gruß
    ec

  9. #9
    Neu an Board
    Registriert seit
    08.07.2007
    Beiträge
    15
    Bedankte sich
    0
    1 Danksagung in 1 Beitrag

    Standard

    Das führt zu keiner Ausgabe/Abbruch.

    Habs jetzt so im Code:
    PHP-Code:
     defined '_VALID_MOS' ) or die ( 'Direct access not allowed !' );
     
     require_once(
    $mainframe->getPath('class'));
     require_once(
    $mainframe->getPath('admin_html'));
     
     
    $id mosGetParam ($_REQUEST'cid', array(0));

    //debug
    if(!empty($task)) {
       echo 
    'task fired: '$task;
       
    // unterbricht den ablauf
       
    exit();
    }  

     if (!
    is_array$id )) {
         
    $id = array(0);
     }
     
     if (!
    $task$task="listItems";

     switch (
    $task){
         case 
    "edit":        edit($option$id[0]); break;
         case 
    "new":            edit($option''); break;
         case 
    "save":        save($option); break;
         case 
    "delete":        delete($option$id); break;
         case 
    "publish":        publish($option'1'$id); break;
         case 
    "unpublish":    publish($option'0'$id); break;
         case 
    "listItems":    listItems($option); break;    
     } 
    Die Funktion die bei Klick auf "New" in der Toolbar aufgerufen werden sollte sieht so aus:
    PHP-Code:
     function edit($option,$uid){
         global 
    $database;
         
    $row = new mosMyKontakt($database);
         
    $row->load($uid);
         
    HTML_my_kontakt::edit($option,$row);
     } 
    Also kein Redirect.

    Was mich wundert ist, dass ich eigentlich zu Beginn meines Skriptes doch etwas in Task haben sollte, oder?

  10. #10
    Gehört zum Inventar
    Registriert seit
    18.02.2005
    Beiträge
    8.841
    Bedankte sich
    85
    Erhielt 2.269 Danksagungen
    in 1.936 Beiträgen

    Standard

    Was mich wundert ist, dass ich eigentlich zu Beginn meines Skriptes doch etwas in Task haben sollte, oder?
    Nein, nicht unbedingt.

    Wir kommen an einen Punkt, wo ich von außen nicht mehr sehr viel für dich tun kann,
    da ich nicht genau weiß was du da machst. Die offensichtlichsten kleinen Fehler kann
    man erst einmal ausschließen. Was du da sonst machst weiß ich nicht. Hellsehen sitzt
    noch nicht drin.

    Gruß
    ec

+ Antworten
Seite 1 von 4 1 2 3 4 LetzteLetzte

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein