2017-09-23 3 views
0

Je vais aller droit au but. J'ai besoin de cacher du contenu sur une page en utilisant PHP et Javascript.Masquer div basé sur l'ID utilisateur?

J'utilise Joomla. Voici le tableau:

<table class="orders"> 
<tr> 
<th>Name</th> 
<div class="testclass"><th>Expiry Date</th> 
<th>Batch ID</th></div> 
<th>Local ICOS</th> 
</tr> 
<tr> 
<td>...</td> 
<div class="testclass"><td>...</td> 
<td>...</td></div> 
<td>...</td> 
</tr> 
</table> 

Maintenant, disons que je veux me cacher « date d'expiration » et « ID du lot » pour l'utilisateur dont l'ID utilisateur est de 50. Ceci est le code que je l'ai écrit pour cela:

<?php 
$user = Jfactory::getUser(); 
$userID = $user->get(id); 

if ($userID == "50") { 
echo "<script type='text/javascript>' 
$(document).ready(function(){ 
$('.testclass').show(); 
}) 
</script>"; 
} 

else { 
echo "<script type='text/'javascript>' 
$(document).ready(function(){ 
$('.testclass').hide(); 
}) 
</script>"; 
} 

?> 

Maintenant, ma page se charge donc il n'y a pas d'erreurs. Cependant, il ne masque pas physiquement les div où la classe est "testclass".

Il les affiche simplement normalement. Je sais que le meilleur moyen est d'utiliser des groupes et je vais assigner aux utilisateurs sélectionnés sur notre site les groupes requis. Donc, je pense que d'appeler les groupes pourrait être plus facile au lieu de le faire pour tous les ID d'utilisateur.

C'est la seule chose qui reste pour l'achèvement de ce "default.php" personnalisé d'un composant que j'utilise. Toute aide est grandement appréciée.

+1

vous voulez le cacher, mais dans votre code ID - 50 montre la classe, ne pas le cacher. –

+0

Pourquoi ne pas le faire en utilisant PHP à la place? Signification utiliser PHP pour faire l'instruction if ... –

+0

ET ce n'est pas une bonne façon de le faire. Ne changez pas simplement le style CSS en utilisant JS. Toute personne ayant des connaissances communes peut changer le code CSS. Si vous voulez vraiment le cacher, ne chargez pas le code html si userID est celui que vous ne voulez pas voir! –

Répondre

4

FOA - Votre code est mélangé - lorsque l'ID utilisateur est 50, le code affiche (.show()) les éléments de la classe, sans les masquer.
Deuxième - Ne pas cacher les choses en utilisant Javascript comme n'importe qui ayant accès aux outils de développement (donc n'importe qui) peut changer le CSS et voir le code.
Mieux vaut ne pas rendre le code du tout. Il irait STH comme ceci:

<table class="orders">  
    <tr> 
     <th>Name</th> 
     <?php if ($user->id!="50") { ?> 
     <th>Expiry Date</th> 
     <th>Batch ID</th> 
     </div> 
     <?php } ?> 
     <th>Local ICOS</th> 
    </tr> 
</table> 


Vous pouvez cacher des choses en utilisant JS quand il est pas important et est juste pour la commodité pour l'utilisateur de ne pas les voir. Ne faites pas ça avec des choses importantes.

De plus, votre code JS n'est pas correct dans les deux parties. Il devrait commencer comme:

echo "<script type='text/javascript'> ... " 

Notez les marques de quatation.

+0

Merci pour les conseils et les conseils.Je vois ce que vous voulez dire par je montre littéralement la div si l'ID utilisateur est de 50. Je vais essayer votre version! En fait, j'ai essayé de l'utiliser comme vous l'avez fait et c'était au moins le chargement. – MailBlade

+1

vous devriez certainement le faire avec des outils côté serveur, pas clientide. Si (par exemple) vous affichez une page et que vous cacheriez des informations à des non-administrateurs avec javascript, ce serait vraiment un non-non car tout le monde ayant des connaissances communes pourrait accéder à ces informations. :) –

+0

Ouais et s'ils ont des scripts et ça pourrait mal finir. Merci Mikelis! Je suis à la maison maintenant, je vais travailler demain et je vais tester votre version.Merci encore – MailBlade