View Composer-Methode
landete ich in einem Service-Provider mit einer View Composer-up.
Im boot()
Methode des Dienstleisters:
// Wildcard view composer
view()->composer('*', function($view) {
// Instantiate new DOMDocument object
$svg = new DOMDocument();
// Load SVG file from public folder
$svg->load(public_path('images/logo.svg'));
// Add CSS class (you can omit this line)
$svg->documentElement->setAttribute("class", "logo");
// Get XML without version element
$logo = $svg->saveXML($svg->documentElement);
// Attach data to view
$view->with('logo', $logo);
});
Und meiner Meinung nach:
<!-- Echo unescaped SVG content -->
{!! $logo !!}
Ich verwende DOMDocument
, wie es mir das XML-Version Element entfernen kann, die nicht in der sein sollten, HTML.
Die CSS-Klasse ist nicht wesentlich, aber spart mir das Umwickeln des Logos mit einem anderen HTML-Element zum Stylen.
Wenn Sie nur das Logo in einem bestimmten Blade-Teil wie Header brauchen Sie
view()->composer('header', function($view) {});
http://laravel.com/docs/5.0/views#view-composers
https://laracasts.com/series/laravel-5-fundamentals/episodes/25
Klingenteil Methode
Diese Methode ist nicht best practice schreiben seit Diese Art von Code sollte nicht wirklich in Sicht sein. Es ist jedoch sehr einfach und viel besser als PHP-Code in jeder einzelnen Ansicht hinzuzufügen.
ein neues Teil-Marke (sagen wir mal logo.blade.php) mit dem folgenden Code:
<?php
// Instantiate new DOMDocument object
$svg = new DOMDocument();
// Load SVG file from public folder
$svg->load(public_path('images/logo.svg'));
// Add CSS class (you can omit this line)
$svg->documentElement->setAttribute("class", "logo");
// Echo XML without version element
echo $svg->saveXML($svg->documentElement);
?>
Sie können nun die SVG-Datei in einem Blade-Vorlage verwenden, indem die Teil einschließlich etwa so:
@include('logo')
Was ist dass .svg aussieht? Ist es ein Sprites-Bild mit verschiedenen Symbolen? – ihue
Was passiert, wenn du ' Php include (" file.svg ") eingibst?>" Hast du irgendetwas rendern gesehen? – ihue
Das SVG ist ein Logo. Sollte file_get_contents() nicht include() sein, aber es hat funktioniert (wenn SVG kein XML-Versionselement hatte). Ich wollte nur einen besseren Weg finden, es zu tun. –