Laravel blade concatenate string if variable is not empty - laravel

I'm trying to add an id attribute to a link if a given variable is not empty. To do so I'm using the inline-if sentence.
<li><a {{ $link['element_id'] }} != "" ? {{"id=" . $link['element_id'] }} : '' href="{{ url($link['url']) }}">{{$link['name']}}</a></li>
Output:

I believe you issue is that it is out of the php itself. Did you try using
<li><a {{ $link['element_id'] != "" ? 'id=' . $link['element_id'] : ''}} href="{{ url($link['url']) }}">{{$link['name']}}</a></li>
And also a good practice is to use one type of quotes in the php code preferably single ones.

You can use conditional inside the blade mustache syntax:
<li><a id="{{ $link['element_id'] != '' ? $link['element_id'] : '' }} href="{{ url($link['url']) }}">{{$link['name']}}</a></li>

This one should works:
<li>
<a id="{{ $link['element_id'] !== '' ? $link['element_id'] : null }}" href="{{ url($link['url']) }}">
{{ $link['name'] }}
</a>
</li>

Try something like this :
<li>
<a #if($link['element_id']!="") {{"id=" . $link['element_id'] }} #endif href="{{ url($link['url']) }}" >
{{$link['name']}}
</a>
</li>
But if you really want to do it via "inline-if" (this should work):
Your issue is that your are not putting the php between the brackets.
<li>
<a {{ $link['element_id']!= "" ? "id=" . $link['element_id'] : ''}} href="{{url($link['url'])}}">
{{$link['name']}}
</a>
</li>

Related

How to make a variable optional in blade template (laravel 8)

I get an error :
$count is undefined
Make the variable optional in the blade template. Replace {{ $count }} with {{ $count ?? '' }}
Here is my blade file:
#extends('layouts.layout')
#section('content')
<div class="container">
<br>
#if ($count == 0 && !$count == '')
<h3>Δε βρέθηκαν eshops με τον όρο αναζήτησης : <span class="badge badge-secondary">{{ $q }}</span>.
<br>
Θα κάνουμε ό,τι μπορούμε να καλύψουμε την ανάγκη σας !<h3>
<h5>Μπορείτε να δοκιμάσετε με ένα νέο όρο αναζήτησης ή επιβεβαιώστε την ορθογραφία σας.</h5>
<button type="button" class="btn btn-success">Δοκιμάστε πάλι !</button>
#else
<h3>Βρέθηκαν <span class="badge badge-secondary">{{ $count }}</span> eshops με τον όρο αναζήτησης : <span class="badge badge-secondary">{{ $q }}</span></h3>
#endif
#foreach($eshops as $eshop)
#include('includes.eshop')
<br>
#endforeach
</div>
#endsection
You could use the blade #isset or #empty as well:
#isset($count)
// $count is defined and is not null...
#endisset
#empty($count)
// $count is "empty"...
#endempty
More info can be found here: If Statements
Instead of {{ $count }} try this {{ isset($count) ? $count : ''}}
// Try this method.
{{( !empty($count)) ? $count : 'No Logs Found' }}
You can Try This.
#if(isset($count))
.....
#endif
I think shortest and most elegant would be:
{{ $variable ?? '' }}
or
{{ $variable ?? null }}
or
{{ $variable ?? 'Default value' }}

Laravel Localization add class active if open this Local

I'm trying to do what language is included in it added class"active"
I try this way but it doesn't work for me
<div class="lang">
<ul>
#foreach(LaravelLocalization::getSupportedLocales() as $localeCode => $properties)
<li>
<a
class="{{ Request::path() === LaravelLocalization::getLocalizedURL() ? 'active' : ''}}"
rel="alternate"
hreflang="{{ $localeCode }}"
href="{{ LaravelLocalization::getLocalizedURL($localeCode, null, [], true) }}">
{{ $properties['native'] }}
</a>
</li>
#endforeach
</ul>
</div>
You should do:
{{ $localeCode == LaravelLocalization::getCurrentLocale() ? 'active' : ''}}

Adding active class for nav-link with blank request

I use following code to make the url nav-link active class when route to 'localhost:3000/home' route :
<a class="nav-link {{ (request()->is('home')) ? 'active' : '' }}" href="{{ route('home') }}">Home</a>
But change url to 'localhost' route, the similar code is not working:
<a class="nav-link {{ (request()->is('')) ? 'active' : '' }}" href="{{ route('home') }}">Home</a>
The localhost:3000/ route means / in Laravel. So you use / instead of ''
<a class="nav-link {{ (request()->is('/')) ? 'active' : '' }}" href="{{ route('home') }}">Home</a>

Adding active class in laravel links

If I want to add active class to routes I'll use:
class="{{ Route::currentRouteNamed('products.index') ? 'active' : '' }}"
If I want use it in static links I'll use:
class="{{ Request::is('/blog') ? 'active' : ''}}"
But what If I want to use it on dynamic url's? like adding custom link to my menu then I have something like:
#foreach($menus as $menu)
<li class="">
{{$menu->title}}
</li>
#endforeach
now what should i use as my li class in order to add active class?
If $menu->link looks like home for example, do the same:
<a href="{{ $menu->link }}" {{ request()->is($menu->link) ? 'class="active"' : '' }}>{{ $menu->title }}</a>
Try using the below code :
#foreach($menus as $menu)
<li class="{{Request::is($menu->link) ? 'active': ''}}">
{{$menu->title}}
</li>
#endforeach

If else in blade templates depends on the role_id

Hi experts I'm trying to display here a content depending on logged in user. If their role id = 2, the link will be diplayed in the sidebar. But then it has an error. Thanks
#if(({{ Auth::user()->role_id }})=="2")
<li class="{{ Request::is('activity*') ? 'active open' : '' }}">
<i class="fa fa-list-alt"></i> {{ Auth::user()->role_id }} User Log
</li>
#endif
#if((Auth::user()->role_id)=="2")
<li class="{{ Request::is('activity*') ? 'active open' : '' }}">
<i class="fa fa-list-alt"></i> {{ Auth::user()->role_id }} User Log
</li>
#endif
No need for the {{ }} as # already means you are using php

Resources