首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >为什么slim需要完整的目录路径来加载外部资源(js/css)文件

为什么slim需要完整的目录路径来加载外部资源(js/css)文件
EN

Stack Overflow用户
提问于 2018-07-28 14:23:32
回答 1查看 1.4K关注 0票数 1
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <script  type="text/javascript" src="/slim/app/views/animations/jquery.min.js"></script>
    <script type="text/javascript" src="/slim/app/views/animations/bootstrap.min.js"></script>
    <link rel="stylesheet" href="/slim/app/views/animations/bootstrap.min.css">


</head>
<body>
    <div class="container">
    hello
    </div>
</body>
</html>

我必须指定完整的目录路径来加载js和css文件(jquery.min.js和bootstrp.min.js以及bootstrap.min.css)动画(/.Here/app/views/.Here/)作为包含所有文件的目录。如果我当前在views目录中,我应该使用(动画/任何文件名),但它不是以这些方式工作的。但是,如果我使用完整的目录路径,一切都会正常工作。为什么会发生这样的事情,任何人都可以解释。

( slim )是我安装slim的根目录

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-28 15:31:01

使用相对路径不是您通常使用Slim的方式。您的资源(JavaScript/CSS/图像等)应该从视图中绝对引用:

src="/assets/js/myapp.js"

路由的URL不会直接映射到基于文件系统的资源,因为模板不应由URL公开访问-它们只由控制器提供服务。

常见的超薄file structure如下所示:

app/
public/index.php
templates/
  view.html
assets/
  images/
  js/
  css/

Some将assets子文件夹直接添加到公用文件夹中。Others将这些文件夹放在根目录下。

但是,一般而言,公共资产(例如CSS、JS、图像)应该位于公共文档根目录下(公众可以访问)。

如果你不喜欢这个行为,有一件事可能会很有帮助,那就是使用Slim的basePath变量。

您应该能够在index.phpslim.before回调中将基URL设置为视图变量,以便它可用于所有路由,如下所示:

$app->hook('slim.before', function () use ($app) {
    $app->view()->appendData(array('baseUrl' => '/base/url/here'));
});

$app->hook('slim.before', function () use ($app) {
    $posIndex = strpos( $_SERVER['PHP_SELF'], '/index.php');
    $baseUrl = substr( $_SERVER['PHP_SELF'], 0, $posIndex);
    $app->view()->appendData(array('baseUrl' => $baseUrl ));
});

然后将其应用于基本模板文件的HTML标记中的引用,仅此而已。

<link rel="stylesheet" type="text/css" href="{{ base_url() }}/css/style.css" />

或者使用Uri::getBaseUrl(),例如

$basePath = $request->getUri()->getBasePath();
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51568681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档