$ this-> headLink()包含重复的脚本

时间:2009-12-02 22:28:16

标签: css zend-framework

就像我之前做的那样,我将以下代码用于我的新项目。

<?=$this->headLink()->appendStylesheet('/Layouts/admin/css/button.css');?>
<?=$this->headLink()->appendStylesheet('/Layouts/admin/css/inputText.css');?>
<?=$this->headLink()->appendStylesheet('/Layouts/admin/css/fancyTable.class.css');?>

当我打开网站并查看源代码时,会有重复的css链接标记。

<link href="/Layouts/admin/css/button.css" media="screen" rel="stylesheet" type="text/css" ><link href="/Layouts/admin/css/button.css" media="screen" rel="stylesheet" type="text/css" >
<link href="/Layouts/admin/css/inputText.css" media="screen" rel="stylesheet" type="text/css" ><link href="/Layouts/admin/css/button.css" media="screen" rel="stylesheet" type="text/css" >
<link href="/Layouts/admin/css/inputText.css" media="screen" rel="stylesheet" type="text/css" >
<link href="/Layouts/admin/css/fancyTable.class.css" media="screen" rel="stylesheet" type="text/css" >

<link href="/Layouts/admin/css/button.css" media="screen" rel="stylesheet" type="text/css" >
<link href="/Layouts/admin/css/inputText.css" media="screen" rel="stylesheet" type="text/css" >
<link href="/Layouts/admin/css/fancyTable.class.css" media="screen" rel="stylesheet" type="text/css" >
<link href="/Layouts/admin/css/divine.css" media="screen" rel="stylesheet" type="text/css" >

我的代码发生了什么?

1 个答案:

答案 0 :(得分:11)

你不应该单独回应它们。

应该有一个地方打印HeadLink助手,而所有其他调用只将样式表添加到要打印的助手。例如。视图脚本中的任何位置都有以下规则:

<?php $this->headLink()->appendStylesheet('/Layouts/admin/css/button.css'); ?>
<?php $this->headLink()->appendStylesheet('/Layouts/admin/css/inputText.css'); ?>
<?php $this->headLink()->appendStylesheet('/Layouts/admin/css/fancyTable.class.css'); ?>

然后在你的<head>

<?= $this->headLink() ?>

或者,如果它们都在同一个地方,你可以将它们连在一起

<?= $this->headLink()
    ->appendStylesheet('/Layouts/admin/css/button.css')
    ->appendStylesheet('/Layouts/admin/css/inputText.css')
    ->appendStylesheet('/Layouts/admin/css/fancyTable.class.css'); ?>

将使用附加的3个样式表打印HeadLink助手的内容。

另见HeadLink helper Zend documentation;特别是这个例子。