0

我在 W3 验证中收到错误“文档类型不允许此处的元素“链接””。我在 index.ctp 文件中指定 CSS 文件。我指定的方式是:

<link rel="stylesheet" type="text/css" href="./css/homes.css" />
4

2 回答 2

1

当 W3C 抱怨“文档类型不允许在此处“链接”元素”时,这意味着您可能没有将<link>元素<head>正确放置在标签内。

在 CakePHP 中,我们通过这样做来正确地HtmlHelper发出这些link标签:

  1. 内联样式:

    //this will echo out the link tag at this exact point
    echo $this->Html->css('your-css-script.css');
    
  2. 标题中的 CSS。假设您echo $this->Html->fetch('css')在 mainlayout.ctp中,这就是所有非内联 css 链接将被发出的地方。

    //this will be placed on top of your layout
    $this->Html->css('your-css-script.css', null, array('inline' => false));
    
  3. 多个 CSS 脚本:

    $this->Html->css(array('css1.css', 'css2.css',..));
    

另请注意,扩展名.css不是必需的,尽管在那里看起来更好。尝试上面的一些组合并确保您的<link>标签在您的<head>.

编辑

为了进一步消除对非内联 css 的疑问,当您进行此类设置时:

/View/Layouts/default.ctp

<!DOCTYPE html>
<html lang="en">
<head>
    <title><?php echo $title_for_layout ?></title>
    <?php
        echo $this->Html->meta('icon');
        echo $this->fetch('css');
        echo $this->fetch('script');
    ?>
</head>
<body></body></html>

而你的观点 /Layouts/View/Users/index.ctp::

<?php $this->Html->css('homes', null, array('inline' => false)); ?>
Hello world!

homes.css应该自动进入布局中的代码$this->fetch('css');块。当您希望布局精简并在头部包含 css 而不是将其分散在渲染的 html 中时,这尤其有用。

于 2013-09-17T08:12:52.367 回答
0

在您的布局文件之一View/Layouts/default.ctp

对于一个(css/screen.css)

<?php echo $this->Html->css('screen');?>

不止一个

<?php echo $this->Html->css(array('bootstrap','screen'));?>
于 2013-09-17T08:09:16.807 回答