2013-11-26 2 views
1

벤, 셰인Payne 시스템에서는 사용자가 정상적으로 모든 사용자에게 기능을 수행하며 동일한 메뉴 시스템을 사용합니다. 그러나 코어에서 하나의 메뉴 항목을 추가하고 Ben 만 볼 수 있도록해야합니다.PHP 로직을 jQuery로 구현

그래서, 벤 아이 같이 메뉴 항목 사탕,하지만 지금은 변화

if('Ben' === $user->name) { 
    // Show the Candy Menu 
} 

하지만 내가 원하는 사탕 메뉴를 말하는 PHP의 핵심이 보여줄 수없는 추가 벤에게만 다른 사람에게서 숨길 수 있습니다.

어떻게해야합니까? jQuery?

내가 엉망 같은 PHP 코드를 찾고 있지 않다 : 내가 대신 로직을 구현, PHP 코드를 엉망하지 않는,

<?php if('Ben' === $user->name):?> 
    <script ></script> 
<?php endif; ?> 

내가 jQuery를 함께 구현되는 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

appendTo()를 사용할 수 있습니까? – AdRock

+0

javascript에 사용자 변수에 대한 액세스 권한을 부여해야합니다. html에 이미 출력되어 있다면 거기에서 가져올 수 있습니다. 그렇지 않으면 백 엔드 (PHP) 변경을해야합니다. – Steve

답변

1

PHP를 변경해야합니다. 그렇지 않으면 JS가 현재 사용자를 알 수 없습니다.

당신은 당신이 당신의 자바 스크립트 코드의 중간에 PHP를 혼합하지 않으 의미하는 경우, 당신이 어떤 전역 설정 문서의 상단에 약간의 일회성 PHP 수 :

<script> 
var myAppGlobals = {}; 

myAppGlobals.showCandyMenu = <?php echo ($user->name === 'Ben' ? 'true': 'false'); ?>; 
// or 
myAppGlobals.userName = '<?php echo addslashes($user->name); ?>'; 
</script> 

다음 나중에 Javascript의

if (myAppGlobals.showCandyMenu) 
    $("#CandyMenu").show(); 

// or 

if (myAppGlobals.userName === 'Ben') 
    $("#CandyMenu").show(); 

을 사용하십시오. 여전히 PHP와 JS를 혼합하고 있지만 적어도 모든 곳에서 섞여있는 대신에 모든 것을 위로하고 있습니다.

물론 클라이언트 측에서 메뉴의 가시성을 설정하는 데 사용하는 방법은 남용에 취약합니다. JS 지식을 가진 사람은 누구나 해당 메뉴 옵션을 찾아보고 표시 할 수 있습니다. 그게 문제인지 아닌지는 당신에게 달렸습니다.

4

당신은 자바 스크립트 변수에 값을 저장할 수는 : 요소가 숨겨져있는 경우

var user = '<?php echo $user->name; ?>'; 

$('#CandyMenu').toggle(user === 'Ben'); 

그러나,이 서버 측에서 수행해야

,이 페이지에 아직. jQuery (JavaScript)를 사용하는 것은 민감한 데이터를 반향 출력하는 경우에는이 작업을 수행하는 적절한 방법이 아닙니다.