MVC: Template innerhalb Template

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • MVC: Template innerhalb Template

    Sehr geehrte Damen und Herren,

    bei dem Versuch , standesgemäß nach mvc pattern zu arbeiten , stoße ich auf folgendes Problem, welches ich auch durch intensives googeln bisher nicht lösen konnte:

    meine view class setzt mir meine verschiedenen Templates zusammen:

    PHP-Code:
      public function display($tpl) {
        
    extract($this->_vars);
        
    ob_start();
        include 
    'views/header.tpl.php';
        include 
    'views/'.$tpl;
        include 
    'views/footer.tpl.php';
        return 
    ob_get_clean();
      }

      public function 
    getTemplate($tpl) {
          
    extract($this->_vars);
          
    ob_start();
          include 
    'views/'.$tpl;
          return 
    ob_get_clean();
      } 
    Nun habe ich einen Controller, innerhalb dessen für eine bestimmte "Action" das passende Template zugewiesen wird.

    Controller.php

    PHP-Code:
        public function imageViewAction() {
            
    $site $_GET ['site'];
            
    $imagearray $model->HolMirInfos $_GET ['dir'] );
     
    $soli $this->showVoteAction(v,w,x,y,z);
     
    $this->_view->soli $soli;
            
    $this->_view->name $imagearray [x] [y];
            
    $this->_view->src $imagearray [x] [y];
            
    $this->_view->display 'example/template1.tpl.php' );

        } 
    Innerhalb dieser Methode, möchte ich nun gerne ein weiteres template laden, was bereits mit Daten befüllt worden ist.

    PHP-Code:
     $soli $this->showVoteAction(v,w,x,y,z); 
    showvoteaction

    PHP-Code:
    public function showvoteAction(v,w,x,y,z) {
           
            ....
    berechnungen
    ...
    ...
    ...
    ..


            
    $this->_view->song $querystring;
            
    $complete $this->_view->setTemplate('example/template2.tpl.php' );
            
            
    //return $complete;
        

    Doch leider wird bei dieser Konstellation das Template nicht an der gewünschten Stelle implementiert, sondern irgendwo.

    Was habe ich hier falsch angestellt?

    Vielleicht weiß jemand eine Antwort auf meine Frage?

    Beste Grüße,

    euer Crowdy

  • #2
    Wie sieht denn setTemplate aus? Ist das insgesamt ein bekanntes Framework oder Eigenentwicklung?

    Mit diesem Satz…

    Doch leider wird bei dieser Konstellation das Template nicht an der gewünschten Stelle implementiert, sondern irgendwo.
    …kann ich ansonsten ehrlich gesagt wenig anfangen, weil ich zum Beispiel nicht weiß, was die „gewünschte Stelle“ ist.

    Das ist alles nicht ersichtlich.

    Der Code, den du zeigst, ist insgesamt mehr oder weniger Pseudocode, oder?

    Kommentar


    • #3
      Hallo mermshaus,

      die gewüschte Stelle wäre in diesem Fall, dass das Template innerhalb des ersten templates erscheint. Derzeit ist es allerdings so, dass es oberhalb allen Inhalts steht, und quasi beim aufruf des entsprechenden Controllers als erstes geladen wird.

      Es handelt sich um eine Eigenentwicklung.Die setTemplate Methode ist getTemplate.

      Insgesamt handelt es sich dabei auch nicht um einen pseudo code, sondern verwende Ihn tatsächlich so, oder so in der Art, da ich Ihn für das Forum ein wenig "anonymisiert" habe.

      Kommentar


      • #4
        Problem gelöst !

        Hallo ,

        nach einigem rumprobieren konnte ich mein Problem lösen.

        Über setTempalte rief ich gettemplate auf

        settemplate
        PHP-Code:
          public function setTemplate($tpl)
          {
              echo 
        $this->getTemplate($tpl);
          } 
        getemplate
        PHP-Code:
        public function getTemplate($tpl) {
              
        extract($this->_vars);
              
        ob_start();
              include 
        'views/'.$tpl;
              return 
        ob_get_clean();
          } 
        Nachdem ich nun auf diesen Umweg verzichte, und mich direkt gettemplate bediene, wird auch allles an der richtigen Stelle ausgegeben.

        Kommentar


        • #5
          Insgesamt handelt es sich dabei auch nicht um einen pseudo code, sondern verwende Ihn tatsächlich so, oder so in der Art
          Jedenfalls gehören in PHP zumindest mal Dollarzeichen vor Variablennamen.

          Ich erwähne das, weil es für Helfer leider ziemlich unmöglich ist, zu entscheiden, was eine absichtliche Verkürzung ist (im Sinne von Pseudocode) und was gegebenenfalls ein Fehler. Deshalb im Zweifel besser darauf achten, gültigen Code zu schreiben, der auch halbwegs Sinn ergibt.
          Zuletzt geändert von mermshaus; 28.09.2015, 19:05.

          Kommentar

          Lädt...
          X