通过PHP和Laravel if语句进行黑暗模式

时间:2018-10-17 01:58:16

标签: php laravel

想知道是否有可能。我的尝试是在PHP控制器中设置暗模式检查器,并将其作为if语句发送回正文,以检查布尔值是否为真。

这是我目前的工作:

发件人网址

<a href="/nightmode"> Switch modes</a>

控制器

public function switchModes()
    {
        //doesnt work since $isDark's value is not initialized
        $isDark = !$isDark;
        dd($isDark);
        return $isDark;
    }

目标结果:

<body background="@if($isDark) #505050 @else #ffffff @endif">

1 个答案:

答案 0 :(得分:1)

简短的回答是。但您确实应该设法使您的问题更清楚。

如果要用户单击按钮或链接以在亮/暗模式之间切换,则应使用Session

在当前的控制器方法中,您评论了$ isDark未初始化。您没有提供在任何地方初始化该值的方法,并且您的控制器无法配置您的工作。

通过使用会话变量,您可以将值保留在页面之间。 在此处了解有关sessions的更多信息:PHP Session Introduction

Session中的

Laravel稍有不同,但是想法是相同的。您想在控制器方法中获取一个会话变量,并检查该值以确定用户是处于亮还是暗模式,然后通过将会话变量设置为其他值来切换其模式。在您看来,您可以检查相关的会话变量来确定模式。

在您的控制器中,您可能想要执行以下操作:

  public function switchModes()
  {
      if (session()->has('isDark')) {
          session()->put('isDark', !session('isDark'));
      }
      else {
          //provide an initial value of isDark
          session()->put('isDark', true);
      }
      return redirect()->route('your-route-name');
  }

在您看来,您可以像这样检查会话变量:

<body class="@if (session('isDark')) dark-mode @else light-mode">