CoderFunda
  • Home
  • About us
    • Contact Us
    • Disclaimer
    • Privacy Policy
    • About us
  • Home
  • Php
  • HTML
  • CSS
  • JavaScript
    • JavaScript
    • Jquery
    • JqueryUI
    • Stock
  • SQL
  • Vue.Js
  • Python
  • Wordpress
  • C++
    • C++
    • C
  • Laravel
    • Laravel
      • Overview
      • Namespaces
      • Middleware
      • Routing
      • Configuration
      • Application Structure
      • Installation
    • Overview
  • DBMS
    • DBMS
      • PL/SQL
      • SQLite
      • MongoDB
      • Cassandra
      • MySQL
      • Oracle
      • CouchDB
      • Neo4j
      • DB2
      • Quiz
    • Overview
  • Entertainment
    • TV Series Update
    • Movie Review
    • Movie Review
  • More
    • Vue. Js
    • Php Question
    • Php Interview Question
    • Laravel Interview Question
    • SQL Interview Question
    • IAS Interview Question
    • PCS Interview Question
    • Technology
    • Other

24 April, 2021

Laravel Blade SVG Directive

 Programing Coderfunda     April 24, 2021     Packages, php     No comments   

 

Laravel Blade SVG Directive

Using SVG’s in your design is all the rage and for good reason. They can be resized to any size without becoming pixelated, you can reference them by id, modify them through CSS or JavaScript.

One of the difficulties in using SVG files in your templates is referencing them. Currently, there are three ways this can be done. Either referencing an SVG file, embedding the whole thing, or use an SVG sprite.

Here is how the different styles look when written in HTML:

Image Src

<img src="icon.svg" alt="My SVG Icon">

Embedding an SVG

<svg class="icon icon-lg" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M3.938 6.497a6.958 6.958 0 0 0-.702 1.694L0 9v2l3.236.809c.16.6.398 1.169.702 1.694l-1.716 2.861 1.414 1.414 2.86-1.716a6.958 6.958 0 0 0 1.695.702L9 20h2l.809-3.236a6.96 6.96 0 0 0 1.694-.702l2.861 1.716 1.414-1.414-1.716-2.86a6.958 6.958 0 0 0 .702-1.695L20 11V9l-3.236-.809a6.958 6.958 0 0 0-.702-1.694l1.716-2.861-1.414-1.414-2.86 1.716a6.958 6.958 0 0 0-1.695-.702L11 0H9l-.809 3.236a6.96 6.96 0 0 0-1.694.702L3.636 2.222 2.222 3.636l1.716 2.86zM10 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" fill-rule="evenodd">
</path>
</svg>

SVG Sprite

<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="0" height="0" style="position:absolute; display: none; visibility: hidden; width: 0; height: 0;">
<symbol id="icon-arrow-down" //..
<symbol id="icon-arrow-up" //..
// etc…
</svg>

<!— Then to referece it: —>
<svg><use xlink:href="#icon-arrow-down"></svg>

As you can hopefully see using the inline or sprite style is not that user friendly and it’s a lot of copy and pasting the icon text around.

Adam Wathan launched a new Laravel package to make all this much easier when you are using the Blade template engine.

Laravel Blade SVG Package

The Blade SVG package adds a new directive for either inline SVG or using SVG sprites.

Once installed this gives you the option to picking what choice best suits your project through a config item:

return [
'inline' => true,
// True renders the full icon SVG inline by default
// False references the sprite sheet and render the icon with a `use` tag
];

You also then have access to the following two directives:

@icon('icon-arrow-up')
{{ svg_icon('icon-arrow-up') }}

The difference is the svg_icon is a helper that allows a fluent chaining syntax for more advanced operations:

{{ svg_icon('icon-arrow-up')->alt('Arrow')->dataFoo('bar')->dataBaz() }}

Sample Blade SVG Usage

With the inline flag set to true you use it like this:

@icon('icon-arrow-up', ['class' => 'icon-lg'])

Which renders the following:

<svg class="icon icon-lg" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg">
<path d="M3.938 6.497a6.958 6.958 0 0 0-.702 1.694L0 9v2l3.236.809c.16.6.398 1.169.702 1.694l-1.716 2.861 1.414 1.414 2.86-1.716a6.958 6.958 0 0 0 1.695.702L9 20h2l.809-3.236a6.96 6.96 0 0 0 1.694-.702l2.861 1.716 1.414-1.414-1.716-2.86a6.958 6.958 0 0 0 .702-1.695L20 11V9l-3.236-.809a6.958 6.958 0 0 0-.702-1.694l1.716-2.861-1.414-1.414-2.86 1.716a6.958 6.958 0 0 0-1.695-.702L11 0H9l-.809 3.236a6.96 6.96 0 0 0-1.694.702L3.636 2.222 2.222 3.636l1.716 2.86zM10 13a3 3 0 1 0 0-6 3 3 0 0 0 0 6z" fill-rule="evenodd">
</path>
</svg>

Compared to if you have the inline set to false:

@icon('icon-arrow-up', ['class' => 'icon-lg'])

Would render:

<svg class="icon icon-lg">
<use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#icon-arrow-up"></use>
</svg>

No matter which style you have as the default you can switch between them with the svg_icon helper.

{{ svg_icon('icon-arrow-up', 'icon-lg')->sprite() }}
{{ svg_icon('icon-arrow-up', 'icon-lg')->inline() }}

As you can see, this package will be very useful for when you are working with SVG files and will keep your views clean and easier to manage.

If you’d like to learn more checkout the GitHub repo.

  • Share This:  
  •  Facebook
  •  Twitter
  •  Google+
  •  Stumble
  •  Digg
Email ThisBlogThis!Share to XShare to Facebook

Related Posts:

  • PHP Pipe Operator Package P Pipe Operator is a package by Sebastiaan Luca that provides a userland implementation of the pipe operator in PHP. A recen… Read More
  • Flexible Fields for Laravel Nova Flexible Fields is a Laravel Nova package that allows you to easily create repeatable fields or blocks within a resource. Check out th… Read More
  • Regex Helpers for Laravel tmeteor/regex is a set of ready-made regex helper methods for use in your Laravel application:This package comes with common regular expres… Read More
  • API Version Control in Laravel API Version Control is a package by Reindert Vetter designed to manage versions of API endpoints elegantly.This package provides … Read More
  • Build Typescript Interfaces for Laravel Models Laravel Typescript is a package that lets you generate TypeScript interfaces from your Laravel models. The example from the documentat… Read More
Newer Post Older Post Home

0 comments:

Post a Comment

Thanks

Meta

Popular Posts

  • Sitaare Zameen Par Full Movie Review
     Here’s a  complete Vue.js tutorial for beginners to master level , structured in a progressive and simple way. It covers all essential topi...
  • C++ in Hindi Introduction
    C ++ का परिचय C ++ एक ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग लैंग्वेज है। C ++ को Bjarne Stroustrup द्वारा विकसित किया गया था। C ++ में आने से पह...
  • Write API Integrations in Laravel and PHP Projects with Saloon
    Write API Integrations in Laravel and PHP Projects with Saloon Saloon  is a Laravel/PHP package that allows you to write your API integratio...
  • Credit card validation in laravel
      Validation rules for credit card using laravel-validation-rules/credit-card package in laravel Install package laravel-validation-rules/cr...
  • iOS 17 Force Screen Rotation not working on iPAD only
    I have followed all the links on Google and StackOverFlow, unfortunately, I could not find any reliable solution Specifically for iPad devic...

Categories

  • Ajax (26)
  • Bootstrap (30)
  • DBMS (42)
  • HTML (12)
  • HTML5 (45)
  • JavaScript (10)
  • Jquery (34)
  • Jquery UI (2)
  • JqueryUI (32)
  • Laravel (1017)
  • Laravel Tutorials (23)
  • Laravel-Question (6)
  • Magento (9)
  • Magento 2 (95)
  • MariaDB (1)
  • MySql Tutorial (2)
  • PHP-Interview-Questions (3)
  • Php Question (13)
  • Python (36)
  • RDBMS (13)
  • SQL Tutorial (79)
  • Vue.js Tutorial (69)
  • Wordpress (150)
  • Wordpress Theme (3)
  • codeigniter (108)
  • oops (4)
  • php (853)

Social Media Links

  • Follow on Twitter
  • Like on Facebook
  • Subscribe on Youtube
  • Follow on Instagram

Pages

  • Home
  • Contact Us
  • Privacy Policy
  • About us

Blog Archive

  • July (4)
  • September (100)
  • August (50)
  • July (56)
  • June (46)
  • May (59)
  • April (50)
  • March (60)
  • February (42)
  • January (53)
  • December (58)
  • November (61)
  • October (39)
  • September (36)
  • August (36)
  • July (34)
  • June (34)
  • May (36)
  • April (29)
  • March (82)
  • February (1)
  • January (8)
  • December (14)
  • November (41)
  • October (13)
  • September (5)
  • August (48)
  • July (9)
  • June (6)
  • May (119)
  • April (259)
  • March (122)
  • February (368)
  • January (33)
  • October (2)
  • July (11)
  • June (29)
  • May (25)
  • April (168)
  • March (93)
  • February (60)
  • January (28)
  • December (195)
  • November (24)
  • October (40)
  • September (55)
  • August (6)
  • July (48)
  • May (2)
  • January (2)
  • July (6)
  • June (6)
  • February (17)
  • January (69)
  • December (122)
  • November (56)
  • October (92)
  • September (76)
  • August (6)

  • Sitaare Zameen Par Full Movie Review - 7/7/2025
  • Step-by-step Vue.js Tutorial Beginner to Master - 7/7/2025
  • Tailwindcss best practices for responsive design - 7/1/2025
  • Tailwind CSS Tutorial (Beginner to Master) - 7/1/2025
  • Failed to install 'cordova-plugin-firebase': CordovaError: Uh oh - 9/21/2024

Laravel News

  • NativePHP for Mobile v1.1: Smaller, Smarter, and Ready to Scale - 7/9/2025
  • PHP 8.5 Introduces an INI Diff Option - 7/10/2025
  • Custom Object Casting in Laravel Models - 7/6/2025
  • Conditionally Fail Queue Jobs While Throttling Exceptions in Laravel 12.20 - 7/8/2025
  • Run Laravel Pint Faster in Parallel Mode - 7/9/2025

Copyright © 2025 CoderFunda | Powered by Blogger
Design by Coderfunda | Blogger Theme by Coderfunda | Distributed By Coderfunda