在我有三个用户的系统中,Ben、Shane和Payne,该网站对所有用户都正常运行,并且具有相同的菜单系统。然而,我的任务是从核心添加一个菜单项,并且只有本才能看到。
因此,我在菜单项中添加了Candy,因为Ben还是个孩子,但现在我不能更改PHP中的核心说
if('Ben' === $user->name) {
// Show the Candy Menu
}
但我希望糖果菜单只为本显示,并对其他人隐藏它。
如何使用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();
}
我该怎么做?
您可以将值存储在JavaScript变量中:
var user = '<?php echo $user->name; ?>';
$('#CandyMenu').toggle(user === 'Ben');
然而,这应该在服务器端完成,当元素被隐藏时,它仍然在页面上。使用jQuery(JavaScript)不是实现这一点的正确方法,特别是当您正在回显敏感数据时。
您将不得不对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();
你仍然在混合PHP和JS,但至少你是在顶部完成的,而不是到处混合。
当然,请记住,您用于从客户端设置菜单可见性的任何方法都可能被滥用——任何具有JS知识的人都可以深入研究并显示该菜单选项。这是否是个问题取决于你。