Symfony 2资产项目布局和资源管理

问题描述:

我正在尝试一个网站,我正在努力并使其适应于使用symfony框架,但我在web开发方面相当新,并且有一堆问题。Symfony 2资产项目布局和资源管理

  1. 我有一个非常困难的时间让我所有的资源加载正确。我试图使用资产,但无论我尝试什么,当我加载页面时,我都会收到数百个404未找到响应。我现在的目录结构如下:

  • Symfony的
    • SRC
      • CS4750
        • PhotoChallengeBundle
          • 控制器
          • 回复来源
            • 配置
            • 公共
              • CSS
              • IMG
              • JS
                • LibraryX
                  • CSS
                  • IMG
                  • JS
            • 视图

我现在最大的问题是在css文件中的图像。我一直在使用

filters: 
    cssrewrite: ~ 

尝试,但所有的路径都指向的http://localhost/Symfony/web/bundles/cs4750photochallenge/imghttp://localhost/Symfony/web/Resources/public/img/*代替 我第一次尝试没有做资产:安装网络,然后用这样但无论那些似乎有所作为。如果有人帮助我完成这个工作,那真是太棒了。

  1. 我遇到的另一个问题是与一个css文件导入两个额外的css文件。当页面加载额外的CSS文件时也返回404响应。

  2. 是什么资产之间的区别:安装和资产:转储

  3. 我也有我的js的一个文件返回服务器错误500,但我解决它一样的js文件的剩余部分,其似乎工作正常。

任何上述问题的答案将非常感激或链接到相关的网站/职位。我一直在网上挖掘几个小时,并没有真正取得进展。如果您需要我更详细地发布和编写或描述我的项目布局,请告诉我。

更多信息:

Example of css files: 


/* IMPORTS ------------------------------------------------------------*/ 

    @import url('reset.css'); 
    @import url('styled-elements.css'); 
    /* HACKS ------------------------------------------------------------*/ 

    .clear { 
     clear: both; 
     height: 1px; 
    } 
    body { 
     line-height: 1; 
     color: #51565b; 
     background: #f1f1f1 url(../img/bg/patterns/noise.png); 
     font-family: Arial, Helvetica, sans-serif; 
     font-size: 100%; 
} 

Config_dev.yml:

imports: 
    - { resource: config.yml } 

framework: 
    router: { resource: "%kernel.root_dir%/config/routing_dev.yml" } 
    profiler: { only_exceptions: false } 

web_profiler: 
    toolbar: true 
    intercept_redirects: false 

monolog: 
    handlers: 
     main: 
      type: stream 
      path: %kernel.logs_dir%/%kernel.environment%.log 
      level: debug 
     firephp: 
      type: firephp 
      level: info 

assetic: 
    use_controller: true 
    filters: 
     cssrewrite: ~ 

模板:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta charset="utf-8"> 
     <title>Weekly Photo Challenge</title> 
     <!-- CSS --> 
     {% stylesheets 
      '@CS4750PhotoChallengeBundle/Resources/public/css/*' 
      '@CS4750PhotoChallengeBundle/Resources/public/libraries/fancybox/css/*' 

      filter='cssrewrite' 
     %} 
      <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}" /> 
     {% endstylesheets %} 

     <!-- JAVASCRIPT --> 
     {% javascripts 
      '@CS4750PhotoChallengeBundle/Resources/public/js/jquery-1.5.1.min.js' 
      '@CS4750PhotoChallengeBundle/Resources/public/js/*' 
      '@CS4750PhotoChallengeBundle/Resources/public/js/ajax/*' 
      '@CS4750PhotoChallengeBundle/Resources/public/libraries/fancybox/js/*' 

     %} 
      <script type="text/javascript" src="{{ asset_url }}"></script> 
     {% endjavascripts %} 
+0

这工作对我来说:http://stackoverflow.com/a/12066577/1516791 – ChocoDeveloper 2012-08-22 05:21:03

随着你的CSS文件的相对链接和CSS重写过滤器,并转储资产,它应该没有问题的工作。

你应该在你的树枝文件中使用的过滤器:

{% stylesheets '@PhotoChallengeBundle/Resources/public/css/*' filter='cssrewrite' %} 
    <link rel="stylesheet" type="text/css" media="screen" href="{{ asset_url }}" /> 
{% endstylesheets %} 

您可以检查Assetic entry in the cookbook详细insturctions。

+0

当我做资产:只转储js和css文件夹移动到web目录,img目录和js和css文件它们在LibraryX文件夹中没有。我需要手动移动它们吗?如果是这样的话,web文件夹中的目录结构应该如何保存这些其他文件?资产到底是什么:转储如何决定要移动的文件?感谢您的帮助! – Nath5 2012-03-19 00:53:00

+0

您不应该手动移动任何IMO,但现在没有时间去查看。如果没有人在我面前做,我会尽力回答明天。 – 2012-03-19 00:56:57

+0

谢谢!我现在再给它一次,让你知道发生了什么!在我的css文件的url(../ img/bg/patterns/noise.png)会这样工作还是有我应该使用的特殊路径。同样的东西进口@import url('reset.css'); – Nath5 2012-03-19 01:01:41

现在,cssrewrite过滤器与@bundle符号不兼容。 请参阅:Path of assets in CSS files in Symfony 2

我已经创建了一个小捆FkrCssURLRewriteBundle它解决了这个问题。阅读自述文件的工作原理。也许这对你们中的一些人很有意思。