Nach Post auf anderes tpl weiterleiten


#1

Hallo,

bin dabei ein kleines Modul zu schreiben, aus Gründen der Übersicht soll nach Eingabe in einer Form-Eingabemaske, die Ausgabe in einer neuen tpl erfolgen. Dazu habe ich in der php folgenden Code der aber nicht funktioniert!

class irgendwas extends oxAdminView {

protected $_sThisTemplate = 'template.tpl';
protected $_sThisTemplate2 = 'template2.tpl';

public function render() {
    parent::render();

    if (isset($_POST['p_ean'])){
        $this->_aViewData['artSearchOutput'] = $this;
        return $this->_template2;
    }
    else{
        $this->_aViewData['template'] = $this;
        return $this->_sThisTemplate;       
    }

…bla Funktionen und diverse Ausgaben

}

Irgendwer eine Idee warum mein Ansatz falsch ist und wie ich es ggf. lösen könnte.

Danke im Voraus und Grüße aus Berlin


#2

Was genau funktioniert denn nicht? Das richtige Template oder die Anzeige im Template?

Sowas macht man doch nicht :wink:

oxRegistry::getConfig->getRequestParameter('p_ean');

#3

Dürfte es wohl nicht geben…


#4

hm könnte sein :wink:

protected $_sThisTemplate2 = 'template2.tpl';

#5

Erstmal danke für die Antworten, ich hab den Code auf die schnelle hier rein geschrieben, im Quelltext stimmt es aber, ergo return $this->_sThisTemplate2; :wink:

Und was nicht funktioniert ist die Anzeige im Template2.


#6

also das kann auch nicht funktionieren …


#7

:wink: ich weiß, wie schon erwähnt hatte es auf die schnelle nur reingeschrieben, hab jetzt mal den Quelltext kopiert:

protected $_sThisTemplate = 'artSearch.tpl';
protected $_sThisTemplate2 = 'artSearchOutput.tpl';

public function render() {
    parent::render();

    if (isset($_POST['p_ean'])){
        $this->_aViewData['artSearchOutput'] = $this;
        return $this->_sThisTemplate2;
    }
    else{
        $this->_aViewData['artSearch'] = $this;
        return $this->_sThisTemplate;       
    }

}

Noch ein Nachtrag, grundsätzlich funktioniert die Ausgabe mit nur einem Template und ohne if Abfrage, ich hätte es aber gerne wegen der Übersicht auf ein anderes Template.

Des Weiteren eine $_POST Abfrage funktioniert auch wenn man (warum auch immer) es nicht macht, wie zur Hölle mach ich aus “oxRegistry::getConfig->getRequestParameter(‘p_ean’);” eine if Abfrage. Einfaches PHP verstehe ich noch aber das :roll_eyes: na gut schaff ich irgendwann auch noch, ich hab andere Sprachen gelernt.


#8

Vielleicht gibt es ja eine alternative Lösung und zwar die Ausgabe wie gehabt in einem Template und dafür das Formular ausblenden, wäre das möglich und wenn ja wie? :thinking: Momentan kommt die Ausgabe und das Formular darunter, ist eher eine unschöne Lösung.


#9

Aber das kann doch nichts ausgeben …?


#10

Warum kann es nichts ausgeben und was wäre mit der alternativen Frage von mir!?


#11

welchen inhalt hast du denn in $this?


#12

Ich Trottel :slight_smile: klar kann das nicht gehen! Aber so “$this->CheckArticle();” gehts, trotzdem danke!


#13

Stelle gerade fest, dass die Variante eher suboptimal ist, wie kann ich das Formular nach Post verstecken, quasi sowas wie “if post form=hidden”.


#14

php:

render(){
$this->_aViewData['p_ean'] = $_POST['p_ean'];
oder
$this->_aViewData['p_ean'] = oxRegistry::getConfig->getRequestParameter('p_ean'); 
}

tpl:

[{if $p_ean}]deine_ausgabe[{/if}]

`


#15

@rubbercut, danke das war es, funktioniert wie es soll! :wink:

Grüße aus Berlin