Laravel Displaying Data
Display data that is passed to our Blade views by enclosing the variable in curly braces.
The following route is given below:
Route::get('greeting', function () {
return view('welcome', ['name' => 'rafia']);
});
We display the contents of the name variable like:
Hii, {{ $name }}
- Blade {{ }} statements are sent through PHP`s htmlspecialchars function. It prevents XSS attacks.
We can put any PHP code where we wish to insert a Blade echo statement:
The current UNIX timestamp is {{ time( ) }}.
Displaying Unescaped Data
Blade {{ }} statements are automatically sent through PHP`s htmlspecialchars function to prevent XSS attacks.
If we need to escape our data, we have to use the following syntax:
Hello, {!! $name !!}.
Rendering JSON
We pass an array to our view with the intention of rendering (providing) it as JSON to initialize a JavaScript variable.
For example:
<script> var app = <?php echo json_encode($array); ?>; </script>
However, instead of manually calling json_encode, we can use the @json Blade directive. The @json directive accepts the same arguments as PHP`s json_encode function do:
<script> var app = @json($array); var app = @json($array, JSON_PRETTY_PRINT); </script>
The @json directive is also useful for seeding Vue components or data-* attributes:
<example-component :some-prop=’@json($array)’></example-component>
- Using the @json in element attributes requires to be surrounded by single quotes.
HTML Entity Encoding
Blade ( and the Laravel e helper ) will double encode HTML entities. If we would like to disable double encoding, call the Blade::withoutDoubleEncoding() method from the boot method of our AppServiceProvider:
<?php
namespaceApp\Providers;
useIlluminate\Support\Facades\Blade;
useIlluminate\Support\ServiceProvider;
classAppServiceProviderextendsServiceProvider
{
/**
* Bootstrap any application services.
*
* @return void
*/
publicfunctionboot()
{
Blade::withoutDoubleEncoding();
}
}
Blade & JavaScript Frameworks
JavaScript frameworks also use “curly” braces, which indicate that the given expression is displayed in the browser.
?We use @ symbol to inform the Blade, providing engine an expression that should remain untouched.
For example:
<h3> Laravel </h3>
Hii, @{{ name }}.
In the above example, @ (at the rate) symbol will be removed by the Blade.
However, {{ name }} expression will not be touched by the Blade engine.
The @verbatim Directive
If we are displaying JavaScript variables in a large portion of our template,
?we wrap the HTML in the @verbatim Directive. It is because we do not need to prefix each Blade echo statement within the @ symbol:
@verbatim<div class="container">Hello,{{name}}. </div>@endverbatim
For example:
@verbatim
Name of javascript {{ name }}
Type of application {{ type }}
<!- - and few more like these -->
@endverbatim
</div>
