DEV Community

Cover image for Simplify your Laravel & Blade ifs: @pro, @free and @guest
farez
farez

Posted on • Edited on

1

Simplify your Laravel & Blade ifs: @pro, @free and @guest

Custom if tags to clean up your Blade templates.

If you're building a SaaS, you'll eventually start accumulating a lot of if statements that display one version of content for pro users (your paying subscribers), your free uses (if you have a free tier), and your guest users (those not logged in).

You can use @if directives in your Blade templates for this, but eventually it starts getting ugly, especially if the conditions are long and complex.

    @if (auth()->user()->isProUser())
        <button>Click here</button>
    @endif

    @if (auth()->user()->isFreeUser())
        <button>Upgrade</button>
    @endif

    @guest
        <button>Sign up</button>
    @endif
Enter fullscreen mode Exit fullscreen mode

It'll be better if it can look like this instead.

    @pro
        <button>Click here</button>
    @endpro

    @free
        <button>Upgrade</button>
    @endfree

    @guest
        <button>Sign up</button>
    @endguest
Enter fullscreen mode Exit fullscreen mode

Well you can do that with Blade's custom if statements.

Just add the following to your AppServiceProvider's boot method:

    public function boot()
    {
        Blade::if('pro', function () {
            if (auth()->guest()) {
                return false;
            }
            return auth()->user()->isPro();
        });

        Blade::if('free', function () {
            if (auth()->guest()) {
                return false;
            }
            return auth()->user()->isOnFreeTier();
        });
    }
Enter fullscreen mode Exit fullscreen mode

More on growing my indie SaaS business at https://farez.substack.com.

Speedy emails, satisfied customers

Postmark Image

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

Top comments (0)

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up