2016-08-08 20 views
1

Ich erstelle eine Aktion in einem meiner Phalcon-Controller, die verwendet wird, um eine Druckversion einer Seite zu generieren. Hier ist mein print.volt Layout:Phalcon PhP - wie man das Hauptlayout für eine Aktion deaktiviert

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <title>Print</title> 
</head> 
<body> 
<!-- Begin page content --> 
<div class="container"> 
    {% block content %}{% endblock %} 
</div> 
</body> 
</html> 

Und meine Ansicht:

{% extends "layouts/print.volt" %} 
{% block content %} 
    HERE 
    <script type="text/javascript"> 
     window.print(); 
    </script> 
{% endblock %} 

Es funktioniert, aber mein Problem ist, dass der Inhalt erzeugt wird, in einem anderen Layout eingefügt, der den {{ content() }}-Tag hat. Am Ende erhalten Sie eine Seite mit allen Webseiten-Menüs, meinem print.volt und meiner Ansicht. Ich würde gerne wissen, wie ich nur die Ansicht innerhalb der print.volt, ohne das Master-Layout eingefügt bekommen kann. Wie kann ich dieses Verhalten deaktivieren?

Danke für jede Hilfe!

Antwort

6

Zwei Optionen kommen in den Sinn.

1) Verwenden Sie Einfache Ansicht, die eine Vorlage ohne das Layout machen kann:

$view = new \Phalcon\Mvc\View\Simple(); 
$view->setViewsDir('PATH_TO_YOUR_VIEWS'); 
$html = $view->render('template-name', $params); 

Diese Option ist auch wirklich praktisch, wenn das Senden HTML für E-Mail zu erzeugen.

2) Deaktivieren Sie das Layout für den Stromregler :: Methode

$this->view->setLayout(''); 

3) Update:Timothy empfohlen, eine Alternative zu (2)

$this->view->setRenderLevel(\Phalcon\Mvc\View::LEVEL_ACTION_VIEW); 
+0

$ this-> view-> setLayout (''); funktioniert für mich, danke! Ich stimme die Antwort als richtig

+2

Wäre nicht '$ this-> view-> setRenderLevel (View :: LEVEL_ACTION_VIEW);' eine bessere Lösung? – Timothy

+0

@Timothy Ich habe es versucht, es hat nicht funktioniert. –