在首页只加一个class到layout.blade.php

Only add a class to layout.blade.php when on the homepage

我是 Laravel 的新用户,来自 craft cms。在我的主页上,我希望导航是透明的,并且在所有其他页面上都有黑色背景。

为此,我在主页 header 中添加了一个名为 header-home 的 class。我将这个 class 添加到我写的布局文件中的主页:

<header {% if craft.request.lastSegment == "" %}class="header-home"   {% endif %}>

我知道我可以为主页创建一个不同的 layout.blade.php 文件,但在其他情况下我想添加 class 或元素,具体取决于哪个页面或 url 用户在线。

提前致谢, 杰米

您可以从控制器发送 class:

public function myAction
{
    ...
    return view('home', ['layoutClass'=>'dark']);
}

<header class="{{ isset($layoutClass) ? $layoutClass:'') }} />

或者你可以在视图中匹配路由:

<header class="{{ (\Request::route()->getName() == 'myRoute') ? 'dark':'') }} />

我发现对我来说最好的方法是在 blade 中使用 if 语句并检查路由,下面是我的做法:

@if (\Request::is('/'))  
    <img class="nav-logo" src="img/logo-light.svg">
@else
    <img class="nav-logo" src="img/logo-dark.svg">
@endif