Nach Post auf anderes tpl weiterleiten

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

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

Sowas macht man doch nicht :wink:

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

Dürfte es wohl nicht geben…

hm könnte sein :wink:

protected $_sThisTemplate2 = 'template2.tpl';

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.

also das kann auch nicht funktionieren …

: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.

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.

Aber das kann doch nichts ausgeben …?

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

welchen inhalt hast du denn in $this?

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

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

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}]

`

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

Grüße aus Berlin