2017-05-27 9 views
2

私はthis jQuery context-menuを持っており、PHP $_SESSIONという変数に応じて特定のメニュー項目を生成する必要があります。たとえば、私が普通のユーザーの場合、「new」と「edit」というオプションが表示されます。しかし、私が管理者ユーザーの場合は、「ユーザーの削除」オプションも表示されます。このようなphpセッション変数に応じてjqueryコンテキストメニューの項目を生成しますか?

何か:それを行う方法についての

$(function() { 
    $.contextMenu({ 
    selector: '.context-menu-one', 
    autoHide: true, 
    callback: function(key, options) { 
     if(key=="Edit") myFunction1(this); 
     if(key=="New") myFunction2(this); 
     if(key=="Del") myFunction3(this); 
    }, 
    items: { 
     "New": {name: "New", icon: "fa-plus-circle"}, 
     "Edit": {name: "Edit",icon: "fa-pencil-square-o"}, 
     var grade = <?php echo $_SESSION["grade"];?>;  //this doesn't work 
     if(grade == "admin"){        //but this is what I 
     "Del": {name: "Delete user", icon: "fa-trash"}, //want 
     } 
     "sep1": "---------", 
     "quit": {name: "Close", icon: function(){ 
      return 'context-menu-icon context-menu-icon-quit'; 
     } 
     } 
    }, 
    });  
}); 

任意のアイデア?

編集:

PHP $_SESSION["grade"]はokです、それは値を返すので、私はそれで問題はありません。

+0

jQueryで使用する前に '$ _SESSION [" grade "]'をエコーし​​ていますか? 'var grade = '<?php echo" $ my_admin_grade ";?>';'(DOC: 'のように、文字列は二重引用符または一重引用符の中に書かれています。 ')を実行し、コンソールで 'grade'が設定されているかどうかを確認します。もっと良い? – OldPadawan

+0

はい、値を返します。これは問題ではない@OldPadawan、問題は、コメント行が私が望むことをする正しい方法ではないということです。だから私はそれをやる方法を尋ねている。 –

答えて

1

ディクショナリの途中で文を使用することはできません(特に変数の代入文とif文)。これと同様に展開する必要があります

$(function() { 
    var options = { 
    selector: '.context-menu-one', 
    autoHide: true, 
    callback: function(key, options) { 
     if(key=="Edit") myFunction1(this); 
     if(key=="New") myFunction2(this); 
     if(key=="Del") myFunction3(this); 
    }, 
    items: { 
     "New": {name: "New", icon: "fa-plus-circle"}, 
     "Edit": {name: "Edit",icon: "fa-pencil-square-o"}, 
     "sep1": "---------", 
     "quit": {name: "Close", icon: function(){ 
      return 'context-menu-icon context-menu-icon-quit'; 
     } 
     } 
    }, 
    } 
    var grade = <?php echo $_SESSION["grade"];?>;  
    if(grade == "admin"){        
    options.items["Del"] = {name: "Delete user", icon: "fa-trash"}, 
    } 
    $.contextMenu(options);  
});) 
+0

作品!ありがとうございました。 –

関連する問題