我使用了Smarty模板和Codeigniter。一切都工作得很好,但是那些问题非常不同......
如果在firefox和google chrome中打开,网站的工作正常。
但问题是如果我在Internet Explorer中打开网站,大多数网站的东西都不起作用。
在firefox中打开时,像我网站上的菜单一样生成此输出。
<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>
但是当我在IE中打开时。它不生成我在smarty编码的代码,我得到这个HTML输出。
<ul class="collapse" id="menu">
<li class="nav-header">Menu</li>
<li class="nav-divider"></li>
</ul>
在其中编码的任何内容,如foreach
,就像它从未执行过一样。怎么可能。我认为编程是一种服务器端语言。浏览器如何影响编程语言。
这是代码,如果有人可以指出我在哪里出错它应该在firefox和chrome中工作但不是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 -->
更新:感谢MarcinNabiałek答案,我发现问题出在哪里,但我不确定为什么会出现这个问题?
我在内部foreach循环中做了var_dump,好像IE不想进入foreach循环,因为IE不返回任何东西。 IE甚至没有看到foreach循环,无论我在里面写什么,HTML PHP它永远不会渲染数据&gt;&gt;
我添加了这一行
<pre>Test - {{$menus|@var_dump}}</pre>
嵌套的foreach循环内部。主要的foreach循环运行罚款,但内部的foreach,似乎IE不想读它。
只有Firefox和Chrome读取它。我没有安装其他浏览器,或者我也会检查它们。
答案 0 :(得分:0)
Smarty与在不同浏览器中显示数据的差异没有任何共同之处。它与PHP(Smarty是PHP库)相同,所以它绝对不是Smarty错误。
但您的代码的某些部分很可能依赖于用户代理或浏览器设置。
您应该先在此行后添加:
{{$var = ksort($Menu)}}
以下一行:
{{$Menu|@var_dump}}
确保两个浏览器中都有相同的数据。可能情况并非如此,您应该调查生成$Menu
内容的代码,并确保它不依赖于浏览器。