johnturingan/laravel-fly-view

Render Blade templates from string mark-up.

1.2.0 2020-04-06 20:31 UTC

This package is not auto-updated.

Last update: 2024-11-12 18:22:26 UTC


README

Is an Extension of Laravel View Class which compiles String Template on the fly. It automatically detects changes on your string template and recompiles it if needed.

This is useful if you want to render your template which came from other sources like CMS or third party API

Since its an Extension of laravel View class. It will not interfere on the usual flow of your application. You can still use laravel view as per normal but with the capability of passing string template.

It supports all directives of Blade Template.

Supports Laravel 5.2+

Installation 🚥

Add the package to your composer.json

"require": {
	...
	"johnturingan/laravel-fly-view": "{version}"
},

Or just run composer require

$ composer require johnturingan/laravel-fly-view

In config/app.php replace

Illuminate\View\ViewServiceProvider::class

with

Snp\FlyView\Providers\ViewServiceProvider::class

Usage ✅

View normal usage:

Pass path to blade file using dot notation on the first parameter

return view('path.to.view', []);
Flyview usage:

Pass array of strings on the first parameter

return view([ 'String Template with {{$blade}} syntax and @directives' ], []);

or you can do

return view([
    '{{ $token }}',
    '{{ $me }}'
], [
    'token' => Str::uuid(),
    'me' => 'Laravel Fly View'
]);

Flyview will merge all strings inside the array before compile. Useful if you have multiple template sources.

You can also use if from response helper like this.

return response()->view([
    '{{ $token }}',
    '{{ $me }}'
], [
    'token' => Str::uuid(),
    'me' => 'Laravel Fly View on Response Helper'
]);

Like I said before, it will not interfere the usual flow of Laravel View. Meaning you can do something like this.

$bag = [
    'include' => [
        '{{ $token }} - This is FlyView Include',
        '@include("includes.nativeInclude") <br/> Above is Include Inception'
    ],
    'data' => [ 'token' => Str::uuid() ]
];

return view('includeTest', $bag);

Inside your includeTest.blade.php file is this:

@include('includes.nativeInclude', $data)

@include($include, $data)

Including string template to blade template file is possible.

Config 📄

All configuration is same as the default view config in your config folder with an additional settings to minimize view contents. Default is false.

/*
    |--------------------------------------------------------------------------
    | Minify View Content
    |--------------------------------------------------------------------------
    |
    | This option determines whether or not you want to minify view contents.
    | It removes unnecessary whitespace
    |
    */
    'minify' => false

NOTE:

If you find any bugs or you have some ideas in mind that would make this better. Please don't hesitate to send comment on github.

If you find this package helpful, a simple star is very much appreciated.

MIT LICENSE
copyright © 2018 Scripts and Pixels.