MyBB.de Forum

Normale Version: Fehler ausgeben bei einem Forumlar
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Comm,

Ich habe mich mal ein ein kleines Plugin für mybb gewagt und bin nun vor ein problem gestoßen bezüglich fehler anzeigen in mybb bzw. ich weis nicht wie ich es lösen soll
ein kleines besipiel sscript:

Template:
Code:
<html>
<head>
<title>{$mybb->settings['bbname']} - {$lang->change_username}</title>
{$headerinclude}
</head>
<body>
{$header}
<table width="100%" border="0" align="center">
<tr>
{$usercpnav}
<td valign="top">
{$errors}
<table class="tborder" cellspacing="0" cellpadding="5" border="0">
<tbody>
<tr>
<td class="thead" colspan="3">
<strong>Die Character von {$formattedname}</strong>
</td>
</tr>
<tr>
<td class="trow1" style="width: 30%;">
<strong>Klasse:</strong>
</td>
<td class="trow1" colspan="2"><strong>CharInfomationen</strong></td>
</tr>
<tr>
<td class="trow1" style="width: 30%;">

</td>
<td class="trow1" style="width: 30%;">
<strong>Name:</strong>
</td>
<td class="trow1" style="width: 30%;">
<strong>LVL:</strong>
</td>
</tr>
    <form method="post" action="usercp.php?action=addklas">
    <tr>
        <td class="trow1">
        <select name="Klasse">
            <option value="1"><img src="https://wiki-de.guildwars2.com/images/thumb/9/90/Krieger_Icon.png/18px-Krieger_Icon.png">Krieger</option>
            <option value="2"><img src="https://wiki-de.guildwars2.com/images/thumb/f/f4/W%C3%A4chter_Icon.png/18px-W%C3%A4chter_Icon.png"> Wächter</option>
            <option value="3"><img src="https://wiki-de.guildwars2.com/images/thumb/0/07/Dieb_Icon.png/18px-Dieb_Icon.png">Dieb</option>
            <option value="4"><img src="https://wiki-de.guildwars2.com/images/thumb/c/c9/Ingenieur_Icon.png/18px-Ingenieur_Icon.png">Ingenieur</option>
            <option value="5"><img src="https://wiki-de.guildwars2.com/images/thumb/5/5e/Waldl%C3%A4ufer_Icon.png/18px-Waldl%C3%A4ufer_Icon.png">Waldläufer</option>
            <option value="6"><img src="https://wiki-de.guildwars2.com/images/thumb/b/b4/Elementarmagier_Icon.png/18px-Elementarmagier_Icon.png">Elementarmagier</option>
            <option value="7"><img src="https://wiki-de.guildwars2.com/images/thumb/0/05/Mesmer_Icon.png/18px-Mesmer_Icon.png">Mesmer</option>
            <option value="8"><img src="https://wiki-de.guildwars2.com/images/thumb/2/23/Nekromant_Icon.png/18px-Nekromant_Icon.png">Nekromant</option>
            </select>

        </td>
        <td class="trow1"><strong><input type="text" name="CharName" /></strong></td>
        <td class="trow1"><strong><input type="text" name="LvL" /></strong></td>
    </tr>
    <tr>
        <td class="trow1" colspan="3"><center><input type="submit" name="newchar" value="Charr Erstellen" /></center></td>
    </tr>
    
    
    {$CharsAusgabe}
</tbody>
</table>
    </table>
</form>
{$footer}
</body>
</html>


so nun will ich in die Variable {$errors} meine Usermeldungen ausgeben allerdings habe ich das Problem das ich den code ja unterbrechen muss und dann mein layout nicht mehr angezeigt wird.


nun Lade ich mein Template ganz am Anfang aber dann gibt er mir die obere Variable nicht mehr aus.

Wenn ich das Template unten lade dann wird es mir nach den returns nicht mehr geladen ist ja logisch.

wie Kann ich es einigermaßen einfach anstellen das ich trotzdem das script anhalte aber mein template die variable $errors ausgibt ?

Ja das script ist nicht sauber geschrieben aber ist nur zum testen momentan um mich bissel mit der Programmierung in Mybb vertraut zu machen.
PHP-Code:
<?php

global $mybb$templates$lang$header$headerinclude$footer$usercpnav$errors;
    
        if(
$mybb->get_input('action') == 'addklas')
    {
        
// Do something, for example I'll create a page using the hello_world_template

        // Add a breadcrumb
        
add_breadcrumb('add_klass'"misc.php?action=addklas");

   
        eval(
'$sections  = "' $templates->get('Gw2_Klassen') . '";');

        
// Using the misc_help template for the page wrapper
        
eval("\$page = \"".$templates->get("newchar")."\";");
    }    
       
//make new site 
    
 
    
       
   
    
if (!isset($_POST['CharName'], $_POST['LvL'], $_POST['Klasse'], $_POST['newchar'])) {
        
        
            
 
    } 
        
$Klasse $_POST['Klasse'];
        
$CharName $_POST['CharName'];
        
$LvL intval($_POST['LvL']);
        
        
        if(!
is_string($CharName)){
           return 
$errors $lang->KeinName;
            
        }
        if (
preg_match("#^[a-zA-ZäöüÄÖÜ ]+$#"$CharName) === 0){
            return  
$errors $lang->NichtErlaubteZeichen;
            
        }
        
        
?>
Prinzipiell ist zu sagen, dass die Variablen mit Inhalt gefüllt werden müssen, bevor Du per eval() das Template aufrufst.
Jop das ist mir klarr kann ich das eval dann einfach ins return schreiben ? das das template geladen wird wen es da unterbrochen wird ? oder muss ich das wirklich die function starten oder kann man die page neu generieren lassen an den stellen
Bitte achte auf Deine Rechtschreibung.

Hast Du Dir mal existierende Plugins angesehen um die Prinzipien der Pluginentwicklung zu erkennen?

Eine gute Erklärung gibt es hier, ist aber auf Englisch....
danke ich werde es mir mal durchlesen.
ich versuche drauf zu achten.
ich habe es hin bekommen.

mit ist gerade eine neue Idee für ein neues Plugin in den sin gekommen nur finde ich keine Hook die mit passt.
und zwar möchte ich den Link meines Headers ändern lassen. d.h meine funktion soll eigentlich immer aufgerufen werden. aber ich weis nicht wie ich das anstelle das es immer geladen wird kann mir da wer helfen?
oder muss ich da jede seite eintragen lassen
Die könnten die Hooks global_start, global_intermediate oder global_end helfen.
Vielen Vielen Dank Stefan ich werde es gleich ausprobieren.
Supper Foren Software die ihr hier Anbietet und echt ein schneller und Hilfreicher Support den man bekommen.

Mit freundlichen Grüßen:

Matthias
Hallo ich habe noch mal eine frage.
Gibt es irgenwo einen Liste mit den Variablen die ich mir per global holen kann.
Ich will nämlich gerade mein Kalender System erweitern weis aber nicht wie ich die letzte eid her bekomme.
muss ich mir die per Select [uid und dann mit order by last LIMIT 1] nur als Beispiel aus der db holen oder gibt es eine global variable mit dem letzt erstellten Eintrag also irgendiwe $mybb->eid oder so was.
sry das ich so viele fragen habe. MyBB Programmierung ist für mich Neuland.
Welche Variablen definiert sind, hängt vom Hook ab. Diese kann man sich auch mit $globals ausgeben lassen: http://php.net/manual/de/reserved.variables.globals.php
Seiten: 1 2