在 Laravel Blade 中检查变量是否具有来自外部 js 文件的特定值

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

嗨,我是 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
文件中使用的步骤,要么我错误地调用了变量?

任何帮助将不胜感激,谢谢

php laravel variables laravel-blade
1个回答
0
投票

你的

    @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>
© www.soinside.com 2019 - 2024. All rights reserved.