我发现在将 CSS 嵌入到 CakePHP 的帮助器中时,CSS 中的相对 URL 会分崩离析。这是由于路由器能够将不同的 url 映射到同一页面,因此相对 url 需要不同。例如,如果您有一个 localhost/myapp/parts/index 或 localhost/myapp/parts/ 或 localhost/myapp/parts 之类的 url,那么 ../img/image.gif 的相对 url 将仅适用于其中一个。
在我的助手中,我发现解决它的唯一方法是让我的 css 像这样
.jquery-dialog-spinner {
display: none;
position: fixed;
z-index: 1010;
top: 0;
left: 0;
height: 100%;
width: 100%;
background: rgba( 0, 0, 0, .1 )
url('__loader_image__')
50% 50%
no-repeat;
}
然后在输出css之前用代码中生成的url替换标签。
$map = array(
'__loader_image__' => $this->Html->assetUrl('ajax-loader.gif', array('pathPrefix' => IMAGES_URL))
);
$formatted_css = strtr($this->css, $map);
$response .= "<style type=\"text/css\">" . $formatted_css . "</style>";
如果有更简单的方法可以做到这一点,我将不胜感激。