想知道是否有可能。我的尝试是在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">
答案 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">