将 if 语句放入 javascript 标记内的 phtml 文件的有效方法

Valid way to put if statement into the phtml file within a javascript tag

我有以下代码需要检查用户是否登录到系统。它自身的对象属于以下类型:

$signInUser = new Zend\Session\Container("signInUser");
$signInUser = $signInUser->user;

现在我要做的是检查用户是否登录:

 if(<?!empty($signInUser['id'])?>)
            {
                mixpanel.track("landing_page", {
                    "brand":"<?= $this->config()['brandName'] ?>",
                    "journey": j,
                    "mission": m
                });
                console.log('user is logged in');
            }
            else{
                console.log('user is not logged in');
            }

这是混合 JS 和 PHP 代码的有效方法吗??我注意到有些人确实喜欢这样做,但我不太清楚为什么;

<?=!empty(something)?>

我上面的 if 语句可以吗?这是正确的做法吗?

Uncaught SyntaxError: Unexpected token )

为什么??

让我尝试修复代码中的问题:

if (<?php echo !empty($signInUser['id']) ? 'true' : 'false';  ?>)
{
    mixpanel.track("landing_page", {
        "brand":"<?php echo $this->config()['brandName']; ?>",
        "journey": j,
        "mission": m
    });
    console.log('user is logged in');
}
else{
    console.log('user is not logged in');
}

我建议避免使用短标签并写 <?php echo '...'; ?> 而不是 <?= ...?>。关于这一点有 many different opinions 但至少你应该准确地了解你在做什么。

在你的例子中我认为问题出在这里if(<?!empty($signInUser['id'])?>你打算在这里做什么?现在它应该输出 if() 这是损坏的 JS 代码并导致 JS 错误。

而且错误应该像你显示的那样

Uncaught SyntaxError: Unexpected token )