2016-06-05 10 views
2

ich vor kurzem eine neue Anwendung erstellen mit den aktualisierten Schlanke Rahmen in Version 3.Sets Schablonendaten global in Schlanke v3

angefangen habe ich habe in der Regel ein paar Variablen, die ich in jedem Template verfügbar sein soll (wie Benutzername, Datum , etc.). In Schlank v2, habe ich dies durch einen Haken und anschließend Aufrufen der setData or appendData Methoden wie so:

$app->view->setData(array(
    'user' => $user 
)); 

Hooks von Middlewares in v3 ersetzt wurden, aber ich weiß nicht, wie die Daten auf die einzustellen global für alle Vorlagen anzeigen - irgendwelche Ideen?

+1

Was ist der Typ der View-Engine, die Sie verwenden? ist es PHP-View oder Twig-View? –

+0

Ich benutze derzeit Smarty-View, aber ich würde nichts dagegen haben - nicht viele Vorlagen und ich habe es nur benutzt, weil ich es vorher benutzt habe – mvuajua

+0

Cool, eigentlich habe ich meine Antwort nach den 2 grundlegenden Komponenten von Slim 3, PHP- Ansicht und Twig-View http://www.slimframework.com/docs/features/templates.html –

Antwort

7

Dies ist nach wirklich auf die Ansicht Komponente, die Sie verwenden, schlank 3 Projekt bieten 2 Komponenten Twig-View und PHP-View

Für Zweig-View, Sie offsetSet verwenden können, ist dies ein Grund ist usage example , ich werde dieses Beispiel verwenden, aber mit einer zusätzlichen Zeile foo Variable in die Ansicht

$container['view'] = function ($c) { 
    // while defining the view, you are passing settings as array 
    $view = new \Slim\Views\Twig('path/to/templates', [ 
    'cache' => 'path/to/cache' 
    ]); 

    // Instantiate and add Slim specific extension 
    $basePath = rtrim(str_ireplace('index.php', '', $c['request']->getUri()->getBasePath()), '/'); 
    $view->addExtension(new Slim\Views\TwigExtension($c['router'], $basePath)); 

    ////////////////////////////// 
    // this is my additional line 
    $view->offsetSet('foo', 'bar'); 
    ////////////////////////////// 

    return $view; 
}; 
einstellen

Sie, dass in Zweig Vorlage zugreifen kann einfach durch

{{ foo }} 

Für PHP-View mit es verschiedene Formen der Weitergabe Variablen Vorlage hat, können Sie sie in here

// via the constructor 
$templateVariables = [ 
    "title" => "Title" 
]; 
$phpView = new PhpRenderer("./path/to/templates", $templateVariables); 

// or setter 
$phpView->setAttributes($templateVariables); 

// or individually 
$phpView->addAttribute($key, $value); 
4

finden Für Zweigansicht

$view->getEnvironment()->addGlobal($name, $value);