Search code examples
laravelassetslaravel-bladeconditional-operator

Laravel Blade: use $variable or 'xxx' inside asset()


I want to change the logo in my header on certain pages. I'm therefore extending my layout like this:

@extends('templates.main', ['logo' => 'img/logo/logo_red_white_text.png'])

In my layout when no $logo isset it uses the default one:

<img src="{{ asset($logo or 'img/logo/logo_yellow_white_text.png') }}" alt="">

However this doesn't work. It only works when I remove asset() but then the logo will not be shown when using a prefix (for example app.dev/en/mypage), so I need asset.

What can I do?


Solution

  • Here is the solution:

    <img src="{{ asset(isset($logo) ? $logo : 'img/logo/logo_yellow_white_text.png') }}" alt="">
    

    Unfortunetelly you can use or laravel's blade statment only for echoing like this:

    {{$logo or 'img/logo/logo_yellow_white_text.png'}}