[phpBB Debug] PHP Warning: in file [ROOT]/ext/tas2580/seourls/event/listener.php on line 213: Undefined array key "FORUM_NAME"
Formfelder - REDAXO Forum
Hallo,

Wir haben in letzter Zeit festgestellt, dass die Kommunikation via Slack viel schneller und zielführender ist als ein Beitrag im Forum. Aufgrund der neuen und besseren Möglichkeiten der Kommunikation haben wir uns entschlossen das Forum nur noch als Archiv zur Verfügung zu stellen. Somit bleibt es weiterhin möglich hier nach Lösungen zu suchen. Neue Beiträge können nicht mehr erstellt werden.

Wir empfehlen, für deine Fragen/Probleme Slack zu nutzen. Dort sind viele kompetente Benutzer aktiv und beantworten jegliche Fragen, gerne auch von REDAXO-Anfängern! Slack wird von uns sehr intensiv und meistens "rund um die Uhr" benutzt :-)
Selbst einladen kannst Du dich hier: https://redaxo.org/slack/
helga
Beiträge: 137
Registriert: 17. Apr 2007, 14:48
Kontaktdaten: Website

Formfelder

9. Mär 2010, 19:52

Hallo,

ich bastle mir mein erstes Addon.

Hierbei lege ich diverse Subpages an, wo diverse Kategorien als Liste angezeigt werden.
Klicke ich nun auf einen Name dieser Liste, wird mir diverse Formfelder angezeigt und drunter wieder diverse Unterkategorien per Liste.

Bei Unter diesem Eingabefelder erscheinen die Buttons "Speichern", "Übernehmen" und "Löschen".

Hier möchte ich nur die letzten beiden Buttons haben, da bei klick auf speichern ein neuer Eintrag gemacht wird, was ich hier nicht will.
Der Code dazu:

Code: Alles auswählen

elseif ($func == 'edit' || $func == 'add') 
{    


   $form = new rex_form('rex_sym_category',"Kategorie-Daten","id=".$id,"post",false);
   $field = &$form->addTextField('name'); 
   $field->setLabel("KategorieName"); 
   $field = &$form->addReadOnlyTextField('categoryID'); 
   $field->setLabel("IP-Symcon ID");     


   $list = new rex_list('SELECT InstanceID,instanceName, Modulname FROM rex_sym_instance WHERE category_id='.$id,10000);
   
   $list->setColumnSortable('instanceName'); 
   $list->setColumnSortable('instanceID'); 
   $list->setColumnSortable('modulName');    
   
   $list->setColumnLabel('instanceName', "Name"); 
   $list->setColumnLabel('instanceID', "InstanceID"); 
   $list->setColumnLabel('modulName', "Modulname");
    
   $list->setColumnParams('instanceName', array('func' => 'edit_instance', 'id' => '###InstanceID###'));

   
   $form->show(); 
   $list->show(); 
} 
Wenn ich nun auf einen der Unterkategorien klicke, kommt wieder ein Formfield und dort erscheint nur der Button "Speichern".

Der Code sieht hier so aus:

Code: Alles auswählen

elseif ($func == 'edit_instance') 
{ 
   $form = new rex_form('rex_sym_instance',"Instance-Daten","instanceID=".$id,"post",false);
      $field = &$form->addTextField('instanceName'); 
   $field->setLabel("InstanceName"); 
   $field = &$form->addReadOnlyTextField('instanceID'); 
   $field->setLabel("IP-Symcon Instance-ID");
   $field = &$form->addReadOnlyTextField('modulName'); 
   $field->setLabel("IP-Symcon Modul-Name");
   
      if($func == 'edit_instance') $form->addParam('id', $id); 
    
   $form->show();
}
wieso ist hier nur der eine Button da?

helga
Beiträge: 137
Registriert: 17. Apr 2007, 14:48
Kontaktdaten: Website

9. Mär 2010, 22:49

das mit den Buttons geht scheinbar nur, wenn die $func gleich edit heißt.
Ok, dann habe ich das alles ins edit reingemacht.

Wie bekomme ich nur aber beim edit die Buttons "Speichern" und "Löschen" weg? Dort soll nur der Button "Speichern" erscheinen.

Benutzeravatar
timo.huber
Beiträge: 305
Registriert: 22. Dez 2009, 13:26

10. Mär 2010, 08:34

Hi,

du kannst mit der Methode editMode() festlegen ob sich das Formular im editiermdus befindet oder nicht.

Du kannst aber auch bei der Abfrage der ID festlegen ob sie sich in einem bestimmten Rahmen befindet (nur ID 1-10 z.b.)
Wenn dies nicht so ist setzt du sie händich auf einen existierenden Eintrag (z.b. 1). Damit wird das Formular im editiermodus aufgerufen.

Das Formular schaut beim Aufruf ob es einen Datensatz mit $id gibt. Wenn nicht wird es in den insert-Modus gesetzt. Das ist das einzige Geheimnis =)
mfg
$glaskugel = new rex_glaskugel();
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}

helga
Beiträge: 137
Registriert: 17. Apr 2007, 14:48
Kontaktdaten: Website

10. Mär 2010, 08:46

habe festgestellt, dass es zwingend nötig ist, das Formular zu $func= edit zu senden. Sie rex_form-Klasse:

Code: Alles auswählen

    if($func == 'edit')
    {
      if($applyLabel != '')
        $applyElement = $this->addInputField('submit', 'apply', $applyLabel, array('internal::useArraySyntax' => false), false);

      if($deleteLabel != '')
        $deleteElement = $this->addInputField('submit', 'delete', $deleteLabel, array('internal::useArraySyntax' => false), false);
    }
Solche starren Einträge sind nicht so schön, aber wenn man es weiß, kann man damit umgehen.
Desweiteren muß man auch $form->addParam() richtig setzen, damit es upgedatet wird.

Benutzeravatar
timo.huber
Beiträge: 305
Registriert: 22. Dez 2009, 13:26

10. Mär 2010, 14:03

$func muss aber nicht den Wert "edit" haben damit das Formular versandt wird.

Du kannst z.b. das Formular auf eine eigene Seite machen und einfach ohne Abfrage ausgeben, und es wird trotzdem versendet ;)

mfg
$glaskugel = new rex_glaskugel();
$loesung = $glaskugel->getLoesung("problem");
foreach ($loesung as $l)
{
echo $l;
}

wolfgang
Beiträge: 126
Registriert: 20. Okt 2005, 20:52
Wohnort: 23966 Tressow
Kontaktdaten: Website

12. Mär 2010, 19:43

Ich habe einen Löschen-Button grade so weggekriegt:

$el =& $form->getControlElement();
$el->deleteElement = null;

Gruß, Wolfgang

helga
Beiträge: 137
Registriert: 17. Apr 2007, 14:48
Kontaktdaten: Website

15. Mär 2010, 18:44

danke wolfgang, das funktioniert.

Zurück zu „Allgemeines [R4]“