Smarty模板无法正常使用Internet Explorer

时间:2014-08-29 04:25:59

标签: php codeigniter smarty smarty3

我使用了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读取它。我没有安装其他浏览器,或者我也会检查它们。

1 个答案:

答案 0 :(得分:0)

Smarty与在不同浏览器中显示数据的差异没有任何共同之处。它与PHP(Smarty是PHP库)相同,所以它绝对不是Smarty错误。

但您的代码的某些部分很可能依赖于用户代理或浏览器设置。

您应该先在此行后添加:

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

以下一行:

{{$Menu|@var_dump}}

确保两个浏览器中都有相同的数据。可能情况并非如此,您应该调查生成$Menu内容的代码,并确保它不依赖于浏览器。