Laravel blade - 如果满足条件则添加一个类

问题描述 投票:0回答:7

这很简单,但我似乎无法用 blade 做到这一点,为此我通常会回到 php,但是,因为我无法用 blade 声明一个新的 php 变量(不打印它,就是这样)如何如果满足特定条件,我应该更改一个简单的类名吗?以这个链接为例,如果 $hostess->active=1

,我只想添加类“active”
 {{ HTML::linkRoute('hostesses.index', 'Archived', $params, array('class' => 'btn btn-default')) }}

我知道如何用 php 做到这一点,但如何用 blade 做到这一点?

php laravel laravel-4 laravel-blade
7个回答
41
投票

你可以这样做:

// App/Http/routes.php
Route::get('foo/bar', 'FooController@bar);
// Your blade file
<li class="{{ Request::path() ==  'foo/bar' ? 'active' : ''  }}">
    <a href="{{ url('foo/bar') }}"></i> Bar</a>
</li>

10
投票

像这样吗?

{{ HTML::linkRoute('hostesses.index', 'Archived', $params, array('class' => $hostess->active ? 'btn btn-info' : 'btn btn-default')) }}

10
投票

还有一个选择:

<li class="@if(Request::is('/')) is-active @endif">
    <a href="{{ route('index') }}">Home</a>
</li>

10
投票

现在我们可以像这样使用带有

@class
指令的条件类

@php
    $isActive = false;
    $hasError = true;
@endphp

<span @class([
    'p-4',
    'font-bold' => $isActive,
    'text-gray-500' => ! $isActive,
    'bg-red' => $hasError,
])></span>

https://laravel.com/docs/8.x/blade#conditional-classes


3
投票

这里有一个更清晰的方法来做到这一点。哪个应该与路线名称匹配。

request()->routeIs('admin.cities')

0
投票

如果您的查询中有参数,那么您可以这样做:

Your URL: https://www.yourdomain.com/a=dark 

// Your blade file
<li class="{{ Request::get('a') ==  'dark' ? 'active' : ''  }}">
    <a href="{{ url('foo/bar') }}"></i> Bar</a>
</li>

0
投票

这是您可以尝试的另一种方式!

<li class="{{ Route::has('login') ? 'bg-dark' : ''  }}"></li>
© www.soinside.com 2019 - 2024. All rights reserved.