嗨,我是 Laravel 和 Blade 的新手(也是 PHP 的初学者),但不是 JS,所以我找到了如何执行
@if
@else
语句,并且我有一个外部 .js
文件,其中包含一个简单的内容现在返回 1 或 2 之间的随机数的脚本。
script.js
function randomNumber(min, max) {
return Math.floor(Math.random() * ((max + 1) - min) + min);
}
const randomHero = randomNumber(1, 2);
console.log(randomHero);
然后在
blade.php
文件中,我尝试使用 if/else 语句检查存储在变量 randomHero
中的随机数是否为 1 或 2:
index.blade.php:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Homepage</title>
<link href="{{asset('css/style.css')}}" rel="stylesheet">
</head>
<body>
<section id="main">
@if(randomHero === 1)
@include('components.Hero1')
@else
@include('components.Hero2')
@endif
</section>
</body>
<script src="{{ asset('js/script.js')}}"></script>
</html>
但是我不断收到
error Undefined variable randomHero
所以我猜我要么错过了将变量从 .js
文件传递到 blade
文件中使用的步骤,要么我错误地调用了变量?
任何帮助将不胜感激,谢谢
你的
@if(randomHero === 1)
@include('components.Hero1')
@else
@include('components.Hero2')
@endif
在生成页面时在服务器上执行,然后将其发送到浏览器,即客户端,您的
const randomHero = randomNumber(1, 2);
被处决的时间要晚得多。您需要使用 PHP 的 rand 函数进行随机化,例如
$randomHero = rand(0, 1);
然后你可以将其传递到你的视图:
public function render()
{
return view('index', ['randomHero' => rand(0, 1)]);
}
并确保在您定义的脚本之前嵌入另一个脚本,例如
<script>
var randomHero = {{ randomHero }};
</script>