我正在使用 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.css
或 base_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.css
和 base_base_1.css
?
我该怎么做才能在开发模式下访问资源?
最佳答案
您需要在 YourBundle/Resources/public/中创建 css、js 和图像
然后,在 2.8 版本中,您需要使用以下命令创建指向 web 目录的链接。
app/console assets:install web --symlink
并在模板中使用:
asset('bundles/yourbundlename/css|js|images...')
关于php - 在 Symfony 2.8 中使用 app_dev.php 时无法访问真实文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40040565/