$form Anwendnungen verstehen

Hast du Probleme oder Fragen bei der Einrichtung bestimmter Plugins ? Diese kannst du hier loswerden.
Antworten
tomtom
Beiträge: 19
Registriert: 25. Mai 2016, 19:39

$form Anwendnungen verstehen

Beitrag von tomtom »

Hallo,
ich kann einfach nirgendwo finden, wie ich vernünftig ein Formular mit der aktuellen Version erstellen kann.
Wenn ich die $form Variablen verwende, wie bspw. hier;

Code: Alles auswählen

 $form = new HtmlForm('...');
 $form->addInput('...');
 $form->addSubmitButton('...');
 $form->show();
Dann bekomme ich immer cannot header Fehler.

Wie baue ich vernünftig ein Formular auf?
Benutzeravatar
fasse
Administrator
Beiträge: 6182
Registriert: 12. Nov 2005, 16:06

Re: $form Anwendnungen verstehen

Beitrag von fasse »

Hallo TomTom,

hast du auch vorher die Common.php eingebunden?

Bitte poste mal die vollständige Fehlermeldung, dann können wir auch besser helfen.

Viele Grüße
Fasse
tomtom
Beiträge: 19
Registriert: 25. Mai 2016, 19:39

Re: $form Anwendnungen verstehen

Beitrag von tomtom »

Hallo Fasse,
sorry, ich hätte es mir ja auch denken können.

Die Fehlermeldung lautet wie folgt;
Warning: Cannot modify header information - headers already sent by (output started at /www/.../adm_program/system/classes/htmlform.php:1965) in /www/.../adm_program/system/classes/htmlpage.php on line 602

Meine Formulare laufen derzeit alle mit html Code, aber ich möchte diese gerne an der neueren Software anpassen. Verstehe dazu aber noch nicht die Möglichkeiten. Habe mir lange das Login Plugin angesehen und auch die profile_new.php versucht zu verstehen, aber wahrscheinlich reicht mein PHP noch nicht, um den Umfang zu verstehen.

In meinem Formular, was ich gerne anpassen möchte, geht es um Rechnungen, bzw. Forderungen, die wir in unserem Verein immer archivieren und auch hier eintragen. Es werden über Admidio auch die monatlich zu zahlenden Beträge generiert.
Das bedeutet, dass wir am Monatsende in Admidio gucken, was bezahlt werden muss. Die jährliche Pacht, die quartals-Zahlungen für Versicherungen und die monatlichen Abschläge kann so jeder bei uns anweisen. Jeder kann sehen, wann, was und wer bezahlt hat.

Ich habe das mit einer Datei gelöst.

Code: Alles auswählen

<?php
// Pfad des Plugins ermitteln
$plugin_folder_pos = strpos(__FILE__, 'adm_plugins') + 11;
$plugin_file_pos   = strpos(__FILE__, 'liste.php');
$plugin_folder     = substr(__FILE__, $plugin_folder_pos+1, $plugin_file_pos-$plugin_folder_pos-2);

if(!defined('PLUGIN_PATH'))
{
    define('PLUGIN_PATH', substr(__FILE__, 0, $plugin_folder_pos));
}
require_once(PLUGIN_PATH. '/../adm_program/system/common.php');
require_once(PLUGIN_PATH. '/'.$plugin_folder.'/config.php');

// Liste nur anzeigen, wenn notwendige Rechte vorhanden sind
$showPlugin = false;

foreach ($plgFreigabe AS $i)
{
    if($i == 'Alle')
    {
        $showPlugin = true;
    }
    elseif($i == 'Benutzer'
    && $g_valid_login == true)
    {
        $showPlugin = true;
    }
    elseif($i == 'Rollenverwalter'
    && $g_current_user->assignRoles())
    {
        $showPlugin = true;
    }
    elseif(hasRole($i))
    {
        $showPlugin = true;
    }
}
$headline = ''.$gL10n->get('SYS_OVERVIEW').' der Forderungen';

// create html page object
$page = new HtmlPage($headline);

// wenn Benutzer keine Rechte hat, dann Fehler ausgeben
if($showPlugin == false)
{
    $page->addHtml('<h3>Sie haben keine Berechtigung f&uuml;r diese Seite!</h3>');
    $page->show();
}
else{

//Standardseite
    if (!isset($_POST['action']) && !isset($_GET['action'])) {
        include("inc/liste.inc.php");
    }

/* Forderung bearbeiten */
    if (isset($_GET['action']) && $_GET['action']=="forderung_edit") {
        include("inc/forderung_edit.inc.php");
    }

/* Neue Forderung anlegen */
    if (isset($_GET['action']) && $_GET['action']=="forderung_neu") {
        include("inc/forderung_neu.inc.php");
    }
/* Forderungen begleichen */
    if (isset($_GET['action']) && $_GET['action']=="forderung_begleichen") {
        include("inc/forderung.inc.php");
    }
    if (isset($_GET['action']) && $_GET['action']=="test") {
  include("inc/test.inc.php");
}
$page->show();
}
?>
Das funktioniert bisher auch alles bestens.

Nun aber an der Modification scheitere ich.

Meine Versuche sind nun in der test.inc.php
Da ich bisher nur header Fehler habe, ist das Script noch nicht weit, sieht aber so aus;

Code: Alles auswählen

<?php
$form = new HtmlForm('forderung', $g_root_path.'/adm_plugins/Buchhaltung/forderung_neu_save.php');
$form->addInput('rnr', 'Rechnungnummer', null, array('property' => FIELD_REQUIRED));
$form->addInput('r_betrag', 'Rechnungsbetrag', null, array('property' => FIELD_REQUIRED));
$form->addSubmitButton('next_page', 'Erstellen');
$form->show();
?>
tomtom
Beiträge: 19
Registriert: 25. Mai 2016, 19:39

Re: $form Anwendnungen verstehen

Beitrag von tomtom »

Darf ich das Thema mal schieben?
weissst
Developer
Beiträge: 342
Registriert: 4. Nov 2011, 18:07
Wohnort: 54xx

Re: $form Anwendnungen verstehen

Beitrag von weissst »

Hallo tomtom,

grundsätzlich baut sich jede Seite so auf:

Code: Alles auswählen

<?php
// add all standart functions from Admidio
require_once('../../system/common.php');
// create html page object
$page = new HtmlPage('headline');
// add form
$form = new HtmlForm('form1', $g_root_path.'/adm_program/modules/XXX.php', $page);
// add input fields
$form->addInput('rnr', 'Rechnungnummer', null, array('property' => FIELD_REQUIRED));
$form->addInput('r_betrag', 'Rechnungsbetrag', null, array('property' => FIELD_REQUIRED));
$form->addSubmitButton('next_page', 'Erstellen');
// add form to html page and show page
$page->addHtml($form->show(false));
$page->show();
?>
ich hoffe das hilft dir :-)
Stefan
tomtom
Beiträge: 19
Registriert: 25. Mai 2016, 19:39

Re: $form Anwendnungen verstehen

Beitrag von tomtom »

Hallo Stefan,

genau folgende Zeile war die Entscheidende.
weissst hat geschrieben:

Code: Alles auswählen

$page->addHtml($form->show(false));
Tausend Dank, damit hast Du mir wirklich sehr geholfen.
Antworten