2016-07-20 3 views
1

Ich möchte meine blade Vorlagen in die Datenbank speichern, weil die header and footer jeder Seite is customizable für den Benutzer. Ich möchte, dass meine Benutzer das Layout selbst erstellen, und dann möchte ich für jede Anfrage eines bestimmten Benutzers die Seite mit dem von diesem Benutzer angegebenen Layout bereitstellen.Sparen Sie Blade-Vorlagen in der Datenbank statt Datei

Die notwendigen Variablen, die vom Controller übergeben werden, werden ihnen in der Dokumentation zur Verfügung gestellt.

Hinweis: Ich vertraue meinen Benutzern. Sie sind alle Beteiligten des Projekts und Programmierer, so dass serverseitige Codeausführung akzeptabel ist.

Antwort

0

Ich fragte und beantwortete eine ähnliche Frage vor einigen Tagen. Soweit ich weiß, verarbeitet Blade keine Ansichtsinhalte aus Datenbankspalten. Sie können zwar die compileString() - Methode von View verwenden. Aber Sie sollten sich die folgenden Fragen ansehen.

Extend Blade Template from Database stored string

Let users create custom blade layouts/store in database

+1

Sollte ich gehen und die Vorlage bei jeder Anfrage speichern und dann daraus verarbeiten? @ Huzaib-Shafi –

+1

Ich würde definitiv davon abhalten, aufgrund der Ressourcennutzung beteiligt ist. Ich denke, Sie sollten für das Token-Konzept gehen –

1

Ich erkannte, dass ich Sicherheit und Caching verbessern kann, wenn ich sie nur lassen nur den statischen Inhalt einzufügen. Die einzige Sache, die ich ändern muss, ist der Hauptinhalt, also kann ich sie einfach einen token setzen lassen, wo der Inhalt platziert werden soll. Wie in der obigen Antwort von @ huzaib-Shafi, habe ich die folgenden ...

//In controller 
$content = View::make('final',compact('data')); 
$token = "<meta name='_token' content='" . csrf_token() ."'"; 
$scripts = View::make('final_scripts',compact('data')); 

$view = str_replace_first("<%content%>", $content, $templateInDatabase); 
$view = str_replace_first("<%token%>", $token, $view); 
$view = str_replace_first("<%scripts%>", $scripts, $view); 

return $view; 

Dies erzwingt sie bootstrap in ihrer Vorlage zu verwenden, weil ich bootstrap styles in meinen blade Vorlagen verwenden, aber es ist akzeptabel mein Fall.

+1

Aber die Zeichenfolge Ersetzungen sind auch Overhead. Aber ich kenne auch keine bessere Lösung. –

Verwandte Themen