Seite 3 von 3

Re: Probleme bei Verwendung von Classes auf phpBB

Verfasst: 07.07.2017 14:13
von canonknipser
Mahony hat geschrieben:Hallo
Zeile 8 sollte das hier sein

Code: Alles auswählen

<!-- BEGIN matches -->
Wenn es sich um einen Kommentar (mehrere Kommentare) handelt,...
Es ist hier aber kein Kommentar, sondern ein Schleifenanfang (Aufbau einer Tabelle )- die Variable ist nur ein TWIG-reserviertes Wort, s.o. ;)

-> https://area51.phpbb.com/docs/32x/codin ... #templates

Re: Probleme bei Verwendung von Classes auf phpBB

Verfasst: 07.07.2017 14:19
von Mahony
Hallo
Danke für den Hinweis. Ich hatte mir das nicht so genau angesehen (Sorry).
Aber somit sind dann ja alle Eventualitäten abgedeckt (falls jemand mal ähnliche Probleme hat).

Grüße: Mahony

Re: Probleme bei Verwendung von Classes auf phpBB

Verfasst: 07.07.2017 15:59
von canonknipser
Hallo Mahony,
Ja, das ist eines der Probleme mit der phpBB-Template-Syntax - Anweisungen sind in html-Kommentaren verbaut ...

Re: Probleme bei Verwendung von Classes auf phpBB

Verfasst: 07.07.2017 19:28
von UweA
Das hat schon mal zwei Schritte weiter geholfen, Danke canonknipser ...

Leider verhalten sich jetzt erst 2 Seiten wie gewünscht.
Das eine bezieht sich anscheinend auf unsachgemässe Umsetzung der Superglobals
Dieser Ausschnitt gibt leider für eine Variable keinen Wert zurück - die team_id bleibt leer, alle anderen werden sauber belegt

Code: Alles auswählen

...
case PAGE_DETAILS:
	.....
        //if (isset ($_GET['team_id']) || isset ($_POST['team_id']))
		if ($request->variable('team_id', ''))
        {
            //$data['team_id'] = (isset ($_POST['team_id'])) ? $_POST['team_id'] : $_GET['team_id'];
		$data['team_id'] = $request->variable('team_id', '');
		}
        else
        {
            $data['team_id'] = '';
		}
	
        break;
Habe ich einen Fehler bei der Umsetzung der gemacht ? Es geht immer gleich in die ELSE

:geek:

Re: Probleme bei Verwendung von Classes auf phpBB

Verfasst: 07.07.2017 19:58
von canonknipser
BTW: Die ganzen Klassendefinitionen usw. findest du in der API-Dokumentation: https://area51.phpbb.com/docs/code/3.2.x/
einfach mal nach request suchen:
Es gibt in der Klasse request noch weitere Methoden, u.a auch eine is_set
Also, anstelle
if (isset ($_GET['team_id']) || isset ($_POST['team_id']))
einfach ein
if ($request->is_set('team_id')

vollständig sähe der Block dann so aus:

Code: Alles auswählen

      if ($request->is_set('team_id')
      {
        $data['team_id'] = $request->variable('team_id', '');
      }
      else
      {
         $data['team_id'] = '';
      }
   

Wenn du dann immer noch nicht das gewünschte Ergebnis hast, musst du mal überprüfen,ob deine team_id bei Aufruf mit "PAGE_DETAILS" überhaupt übergeben wird und wenn nicht, warum nicht. Das kann man leider aus so kurzen Codeschnipseln nicht rauslesen.

Re: Probleme bei Verwendung von Classes auf phpBB

Verfasst: 09.07.2017 08:45
von UweA
Jetzt mal wieder eine andere Frage. Ich weiss nicht warum es passiert wie es passiert ... und was der Code im Original an dieser Stelle, die ich als Problem ausgemacht habe tut. Die Seite ansich lief (bis zu meiner letzten Aenderung)
Habe den Code der main page mal im pate_bin abgelegt : pastebin/?mode=view&s=27

Ich bekomme bei der Heim / Auswärtswertung NUR die Auswärtswertungen, Nun sehe ich kein direktes Problem NUR verstehe ich nicht ganz was da im alten Code (3. Zeile, mit dem "Fragezeichen") mit den Superglobals passiert ist um es umzusetzen.

Code: Alles auswählen

        if (isset ($_GET['ha']) || isset ($_POST['ha']))
        {
            $data['ha'] = (isset ($_POST['ha'])) ? $_POST['ha'] : $_GET['ha'];
            if ($data['ha'] < GESAMT || $data['ha'] > AWAY)
            {
                 $data['ha'] = GESAMT;
            }
        }
Wenn ich es den 2. Teil (also ? $_POST.... ) weg lasse läuft die Seite, aber ich habe das Ergebnis, das nur die AWAY Ergebnisse berechnet werden
Wenn ich es versuche abzubillden mit

Code: Alles auswählen

            //$data['ha'] = (isset ($_POST['ha'])) ? $_POST['ha'] : $_GET['ha'];
			$data['ha'] = $request->is_set_post('ha') ? $request->variable('ha', '');
bekomme ich einen Fehler dass das Semikolon dort nicht hingehört - aber schon beim rsten vorkommen dieses Codeteiils in Zeile 144, denn diese Abfrage gehört zu jeder Variablen im $data-Array

Die aktuelle Seite setzt sich aus zwei Seiten des Originalcodes zusammen, da ich die Variablen nicht vom page_header.php (bis Zeile 874) in das scores.php herüber bekam, was aber im alten Code funktionierte. ich wollte es erst einmal zum Laufen bringen und dann hinterher wieder mit einer Trennung arbeite, da der page_header in allen Seiten Verwendung findet....

Oder war mein erster Ansatz korrekt und der Fehler passiert im Bereich des scores.php ?

Re: Probleme bei Verwendung von Classes auf phpBB

Verfasst: 10.07.2017 09:02
von canonknipser
Nein, der Fehler liegt in einer Fehlinterpretation der Syntax b ? c : d Hierbei handelt es sich um den sogenannten ternären Operator von php: http://php.net/manual/de/language.opera ... arison.php

Also, deine Ursprungssyntax:
$data['ha'] = (isset ($_POST['ha'])) ? $_POST['ha'] : $_GET['ha'];
bedeutet "wenn der POST-Wert ha (isset ($_POST['ha'])) gesetzt ist, dann ? weise den POST-Wert von ha zu $_POST['ha'], sonst : weise den GET-Wert von ha zu $_GET['ha']"

Das brauchst du nicht mehr, weil GET und POST in einem request-Aufruf ermittelt werden und du bei der Zuweisung nicht mehr unterscheiden musst. Also weist du nur noch den Wert zu:
$data['ha'] = $request->variable('ha', '');