php - 在 Symfony 2.8 中使用 app_dev.php 时无法访问真实文件

标签 php css symfony assets

我正在使用 Symfony 2.8 并遇到问题,使用开发 Controller 时无法找到 web/ 目录中的真实文件(HTTP 错误 400)app_dev.php:

web/
    css/
        base.css
        base_base_1.css
    images/
        someFile.png

我使用的是非常简单的 CSS 结构。资源/图像仅存储在 web/images 中,不会被 Assetic 或其他内容复制/链接。因此, Assets 图像只是使用“直接”相对 URL 与 CSS 文件链接:

// AppBundle/Resources/styles/base.scss
.someClass {
    background: url("../images/someFile.png") no-repeat 0 0;
}

// Page Template
{% stylesheets 
    '@AppBundle/Resources/styles/base.scss'
    filter="scssphp" 
    output="css/base.css" %}
    <link rel="stylesheet" href="{{ asset_url }}" type="text/css" />
{% endstylesheets %}  

根据是否使用 app_dev.php,这会导致使用 base.cssbase_base_1.css:

// app_dev.php NOT uses
<link rel="stylesheet" href="/css/base.css" type="text/css" />

// app_dev.php used
<link rel="stylesheet" href="app_dev.php/css/base_base_1.css" type="text/css" />

无论是否使用app_dev.php,在两个.css文件中,图像的路径都是相同的:url("../images/someFile.png ”)

但是,当调用 example.com/somepage 时,一切正常,而在调用 example.com/app_dev.php/somepage 时,我收到 Error 404:

URL: /app_dev.php/images/someFile.png
Uncaught PHP Exception Symfony\Component\HttpKernel\Exception\NotFoundHttpException 

当我手动测试时,结果是相同的:example.com/app_dev.php/images/someFile.png 导致错误,而 example.com/images/someFile .png 加载没有任何问题。

我做错了什么?

我创建了一个测试文件web/test.php,它显示了相同的行为:在正常模式下调用没有问题,在app_dev.php中调用会产生404。这是开发模式的正常行为吗?

但是为什么无论是否使用开发模式,我都可以访问现有文件 base.cssbase_base_1.css

我该怎么做才能在开发模式下访问资源?

最佳答案

您需要在 YourBundle/Resources/public/中创建 css、js 和图像

然后,在 2.8 版本中,您需要使用以下命令创建指向 web 目录的链接。

app/console assets:install web --symlink

并在模板中使用:

asset('bundles/yourbundlename/css|js|images...')

检查http://symfony.com/doc/2.8/templating.html

关于php - 在 Symfony 2.8 中使用 app_dev.php 时无法访问真实文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40040565/

相关文章:

php - 在 1and1 托管中发送邮件时遇到问题

php - MySQL可以同时选择和设置吗?

javascript - 将 AJAX 与 PHP 循环创建的表单结合使用

css - 使滚动在弹出窗口高度之后进行,而不是主要内容高度

css - angularjs 将括号添加到数组值输出

mysql - 我想通过DQL获取与文本相关的记录

php - 修补匠在Laravel 5.8中给出了异常(exception)

php - 编译后未创建 libphp5.so 且未创建前缀目录

jquery - 在页面加载时为每个 Div 运行 jQuery 脚本

PHP: Controller 中的 Symfony2 MySQL SELECT 查询