2013-02-12 4 views
0

Alexandre Salomé's [nonetheless excellent] "Sass, Compass, and Assetic in 10 minutes"을 사용하여 많은 번거 로움을 겪은 끝에 마침내 내 SCSS 파일을 내 프로젝트의/web 디렉토리에있는 CSS 파일로 변환하는 Compass Assetic 필터를 얻었습니다. 나는 심지어 그들이 있어야하는 곳에 이미지를 참조하기 위해 나침반 image-url() 함수가 있다고 생각한다.어떻게 Assetic이 내 번들의 CSS 배경 이미지를 웹 디렉토리로 자동 이동시킬 수 있습니까?

불행히도, 내 번들 안에 이미지를 유지하는 방법을 알고 Assetic이 필요할 때/Web 디렉토리에 적절하게 복사하거나 다시 작성하는 방법을 모르겠습니다. 그들은 단지 거기에 가지 않습니다. 당분간 (... 그리고 이것은 의도 된 기능이 어느 정도있을 수 있습니다.) 나는 단지/web/images 디렉토리에 복사하고 있습니다. 그건 옳지 않아. ...권리?

답변

4

이것은 부끄럽고 할 수있는 것이 아니지만 Symfony가 할 수있는 것입니다.

우선, 자산을 번들 구조의 올바른 위치에 배치해야합니다. 이것들은 Resources/public 디렉토리에 위치해야합니다. 이것은 스타일 시트, 스크립트, 이미지 및 기타 모든 공개 된 것들이 사는 곳입니다. 번들 구조에 대한 자세한 내용은 다음 설명서를 참조하십시오. "How to use Best Practices for Structuring Bundles"

FrameworkBundle은 assets:install이라는 유용한 명령과 함께 모든 번들의 모든 자산을 web/bundles/<bundle_name> 디렉토리에 설치합니다. 이 명령은 composer update 또는 composer install 명령을 사용할 때마다 실행됩니다. 당신이 당신의 번들에 일부 자산을 업데이트 할 때, 당신은 웹 디렉토리에 모든 것을 복사하려면이 명령을 실행할 수 있습니다

$ php app/console assets:install 

때때로, 당신은이 명령 당신이가 someting를 업데이트 할 때마다 실행하고 싶지 않아요. 예를 들어, 페이지 스타일을 시작하면 매분마다 해당 명령을 실행해야합니다. 서버에서 심볼릭 링크 사용을 지원하는 경우 --symlink 옵션을 사용할 수 있습니다. 이렇게하면 매번 그 명령을 실행할 필요가 없습니다.

+0

Wouter - 다시 해 보았습니다! 이것은 완벽하게 작동합니다. 정말 고맙습니다. 불행하게도이 위치에서 올바르게 컴퍼스 설정을 구성하는 것에 대해 잘못된 것처럼 보입니다./bundles//... 형식으로 배경 이미지를 제대로 다시 작성하는 데 어려움을 겪고 있습니다. 그러나 나는 그것이 또 다른 질문이 될 것이라고 생각한다! – Offlein

+0

@Offlein은 일반적인 문제입니다. 이미지 경로가있을 때'@ bundle' 표기법을 사용하면 안된다. 자세한 내용은 [이 문제는 문서] (https://github.com/symfony/symfony-docs/issues/1099) 및 [assetic의 작성자에 의한이 반응] (https://github.com/kriswallsmith)을 참조하십시오./assetic/issues/53 # issuecomment-1548080) –

+0

아! 미친 것 같은! 나는 거기에 당신의 의견을 참조하십시오. 정말 고맙습니다. 그게 내가 사용하려고했던 것조차 아니었지만'@ MyBundle'이 그것을하는 "길"이라고 봅니다. 나는/bundle이되도록 Compass http_path 변수를 하드 코드하고 Scss 파일의 하드 코드 /[[mybundlename]]/images/whatever.png를 시도했습니다. 하지만 출력물에 이미지를 앞에 놓는 번들을 얻지도 않았을 것입니다. 어쨌든, 나는'@ MyBundle' 표기법이 작동 할 때까지 기다리지 않을 것이라고 생각한다. – Offlein