在我有3个用户的系统中, Ben,Shane 和 Payne ,该网站通常适用于所有用户,并且具有相同的菜单系统。但是我的任务是从核心添加一个菜单项,仅对Ben可见。
所以,我在菜单项中添加了 Candy ,因为Ben很小,但现在我 无法 更改 PHP中的核心说
if('Ben' === $user->name) {
// Show the Candy Menu
}
但是我希望Candy菜单只显示Ben并将其隐藏起来。
如何使用 jQuery ?
执行此操作我不打算像以下那样弄乱PHP代码:
<?php if('Ben' === $user->name):?>
<script ></script>
<?php endif; ?>
我希望用jQuery实现PHP的一些逻辑,因此,我不会乱用PHP代码,而是在jQuery中实现逻辑。类似的东西:
//I am mixing PHP and jQuery here, I know it doesn't work but this is what I am looking for.
if('user' === 'Ben') {
$('#CandyMenu').show();
}
我该怎么做?
答案 0 :(得分:4)
您可以将值存储在JavaScript变量中:
var user = '<?php echo $user->name; ?>';
$('#CandyMenu').toggle(user === 'Ben');
但是,这应该在服务器端完成,当一个元素被隐藏时,它仍然在页面上。使用jQuery(JavaScript)并不是正确的方法,特别是如果你回应敏感数据。
答案 1 :(得分:1)
您必须进行某种PHP更改,否则您的JS无法知道当前用户是谁。
如果你的意思是你不想在你的Javascript代码中间混合使用PHP,你可以在文档顶部设置一些一次性PHP来设置任何全局变量:
<script>
var myAppGlobals = {};
myAppGlobals.showCandyMenu = <?php echo ($user->name === 'Ben' ? 'true': 'false'); ?>;
// or
myAppGlobals.userName = '<?php echo addslashes($user->name); ?>';
</script>
然后使用
if (myAppGlobals.showCandyMenu)
$("#CandyMenu").show();
// or
if (myAppGlobals.userName === 'Ben')
$("#CandyMenu").show();
稍后从您的Javascript开始。你还在混合使用PHP和JS,但至少你是把它全部放在顶层而不是混合在一起。
当然,请记住,您从客户端设置菜单可见性的任何方法都是滥用的 - 任何具有JS知识的人都可以深入研究并显示该菜单选项。这是否是一个问题取决于你。