2014-08-29 3 views
0

J'ai utilisé des Smarty Templates avec Codeigniter. Tout fonctionne bien avec quelques problèmes, mais ceux-ci sont très différents ..Les Smarty Templates ne fonctionnent pas correctement avec Internet Explorer

Le point est le site fonctionne bien si elle est ouverte dans Firefox et Google Chrome.

Mais le problème est que si j'ouvre le site dans Internet Explorer, la plupart des choses du site Web ne fonctionnent pas.

Comme les menus dans mon site Web lorsqu'il est ouvert dans firefox génère cette sortie.

<ul class="collapse" id="menu"> 
<li class="nav-header">Menu</li> 
    <li class="nav-divider"></li> 
       <li> 
          <a href="http://localhost/projects/HouseRentSystem/admin/dashboard/System"> 
        <i class="fa fa-dashboard"></i> Dashboard</a> 
           </li> 
       <li> 
         <a href="javascript:;"> 
       <i class="fa fa-dashboard"></i> 
       <span class="link-title">Residentials</span> 
       <span class="fa arrow"></span> 
      </a> 
            <ul class="collapse"> 
                     <li> 
         <a href="http://localhost/projects/HouseRentSystem/admin/residentials/Houses"> 
          <i class="fa fa-angle-right"></i> Houses 
         </a> 
        </li> 
                  <li> 
         <a href="http://localhost/projects/HouseRentSystem/admin/residentials/Flats"> 
          <i class="fa fa-angle-right"></i> Flats 
         </a> 
        </li> 
           </ul> 
        </li> 
       <li class="active"> 
         <a href="javascript:;"> 
       <i class="fa fa-dashboard"></i> 
       <span class="link-title">Configuration</span> 
       <span class="fa arrow"></span> 
      </a> 
            <ul class="collapse in"> 
                     <li class="active"> 
         <a href="http://localhost/projects/HouseRentSystem/admin/configurations/SitePreferences"> 
          <i class="fa fa-angle-right"></i> Site Settings 
         </a> 
        </li> 
                  <li> 
         <a href="http://localhost/projects/HouseRentSystem/admin/configurations/ManageTabs"> 
          <i class="fa fa-angle-right"></i> Manage Tabs 
         </a> 
        </li> 
                  <li> 
         <a href="http://localhost/projects/HouseRentSystem/admin/configurations/ManageForms"> 
          <i class="fa fa-angle-right"></i> Manage Forms 
         </a> 
        </li> 
           </ul> 
        </li> 
    </ul> 

mais quand j'ouvre dans IE. il ne génère pas le code que j'ai codé dans smarty et je reçois cette sortie HTML.

<ul class="collapse" id="menu"> 
<li class="nav-header">Menu</li> 
    <li class="nav-divider"></li> 
    </ul> 

quoi que ce soit codé à l'intérieur comme foreach, son comme jamais exécuté. Comment est-ce possible. Je pensais que la programmation est un langage côté serveur. comment un navigateur affecte-t-il le langage de programmation?

Voici le code si quelqu'un peut signaler où je me suis trompé qu'il devrait fonctionner dans firefox et chrome mais pas l'IE.

{{$var = ksort($Menu)}} 
<ul id="menu" class="collapse"> 
<li class="nav-header">Menu</li> 
    <li class="nav-divider"></li> 
    {{foreach $Menu as $MainMenu}} 
    {{$FormCIPath = explode("/", $MainMenu['FormCIPath'])}} 
     <li {{checkActiveClassMainMenu($FormCIPath[1])}}> 
      {{if isset($MainMenu['SubMenu'])}} 
      <a href="javascript:;"> 
       <i class="fa fa-dashboard"></i> 
       <span class="link-title">{{$MainMenu['Name']}}</span> 
       <span class="fa arrow"></span> 
      </a> 
      {{else}} 
       <a href="{{url}}{{$MainMenu['FormCIPath']}}"> 
        <i class="fa fa-dashboard"></i> {{$MainMenu['Name']}}</a> 
      {{/if}} 
      {{if isset($MainMenu['SubMenu'])}} 
      <ul> 
       {{$var = ksort($MainMenu['SubMenu'])}} 
       {{foreach $MainMenu['SubMenu'] as $SubMenu}} 
        {{$FormCIPath = explode("/", $SubMenu['SubFormCIPath'])}} 
        <li {{checkActiveClassSubMenu($FormCIPath[2])}}> 
         <a href="{{url}}{{$SubMenu['SubFormCIPath']}}"> 
          <i class="fa fa-angle-right"></i> {{$SubMenu['SubName']}} 
         </a> 
        </li> 
        {{/foreach}} 
      </ul> 
      {{/if}} 
     </li> 
    {{/foreach}} 
</ul><!-- /#menu --> 

Mise à jour: Merci à Marcin Nabiałek réponse, je me suis dit où est le problème, mais je ne sais pas pourquoi il donne le problème? J'ai fait var_dump à l'intérieur de la boucle foreach interne, semble que IE ne veut pas aller à l'intérieur de la boucle foreach, parce que IE ne retourne rien. IE DonT même voir la boucle foreach, peu importe ce que j'écris à l'intérieur, HTML PHP, il ne sera jamais rendre les données >>

i ajouté cette ligne

<pre>Test - {{$menus|@var_dump}}</pre> 

dans la boucle foreach imbriquée. les boucles foreach principales exécutent des amendes mais le foreach intérieur, semble comme IE ne veux pas le lire.

Seul Firefox et Chrome le lisent. Je n'ai pas d'autres navigateurs installés ou j'aurais vérifié sur eux aussi.

+0

qu'est-ce que javascript :; – davidcondrey

+0

@dcc Il n'y a pas de javascript sauf le js de bootstrap. –

+0

"c'est-à-dire ne pas vouloir aller à l'intérieur du foreach"? IE est un navigateur. Smarty est en cours d'exécution sur le serveur. Le navigateur n'a rien à voir avec un foreach ne pas être exécuté, sauf si vous avez écrit 'if (browser == ie) {ne faites pas ceci}' –

Répondre

0

Smarty n'a rien à voir avec les différences d'affichage des données dans différents navigateurs. C'est la même chose que PHP (Smarty est une bibliothèque PHP) donc ce n'est certainement pas une erreur Smarty.

Mais il est tout à fait possible qu'une partie de votre code dépende par exemple de User Agent ou des paramètres de votre navigateur.

Vous devez d'abord ajouter après cette ligne:

{{$var = ksort($Menu)}} 

la ligne suivante:

{{$Menu|@var_dump}} 

pour vous assurer que les mêmes données sont dans les deux navigateurs. Probablement ce n'est pas ainsi, vous devriez examiner le code qui génère $Menu contenu et assurez-vous que ce n'est pas dépendant du navigateur.

+0

IE Affiche 'NULL', où, comme si elle était ouverte dans Firefox ou Internet Explorer, elle affiche un' Array'. –

+0

Merci à ur var_dump, je pense que le problème est ici dans la deuxième boucle foreach '{{foreach $ menus comme $ key => $ subrow}}' .cuz après cette ligne de boucle foreach j'ai utilisé cette ligne '{{$ subrow | @var_dump}} 'et il n'a retourné aucune valeur dans IE même pas la valeur NULL, juste Nothing Blank. –

+0

@SizzlingCode Comme vous le voyez, le résultat de 'var_dump' est différent dans les deux navigateurs, ce qui signifie qu'il a été créé en utilisant une configuration spécifique au navigateur.Vous devez rechercher comment' $ Menu' est créé car il ne ressemble plus à Smarty . C'est plutôt comment il est créé en PHP –

Questions connexes