2012-02-12 2 views
0

저는 Assetic with Twig를 사용하지만 symfony2 프레임 워크는 사용하지 않습니다.Assetic 어떤 파일도 생성하지 않습니다.

여기에 프로젝트가

/site 
    /template 
     /css 

/public_html 
    /css 

원시 CSS가 /site/template/css에 저장됩니다를 설정하고 내가 /public_html/css에 CSS와 출력을 작게를 할 assetic 원하는 방법입니다. 내가 그 assetic이 최종 출력에 고유 URL을 생성 한 볼 수 있습니다

{% stylesheets 'css/screen.css' output='css/*' %} 
    <link href="{{ asset_url }}" type="text/css" rel="stylesheet" /> 
{% endstylesheets %} 

: 여기

는 assetic이 내 템플릿에

$factory = new AssetFactory(//absolute path to `/site/template/`); 
$factory->setDefaultOutput(//absolute path to `/public_html/`); 
$factory->setDebug(false); 
$twig->addExtension(new AsseticExtension($factory)); 

그리고 나뭇 가지 확장으로 설정하는 방법은

<link href="css/00da241.css" type="text/css" rel="stylesheet" /> 

그러나 /public_html/css을 보면 파일이 생성되지 않습니다.

아파치가 포함 된 Windows 7 서버를 사용하고 있으며 PHP는 어디서나 파일을 쓰는 데 문제가 없습니다.

이 문제의 원인은 무엇일까요?

답변

3

당신이 여기에서 한 것은 자애로운 URL을 애셋으로 생성하는 것입니다 (나뭇 가지 사용).

하지만 자산 URL은 아직 파일을 가리키고 있지 않습니다.

<?php 

use Assetic\AssetWriter; 
use Assetic\Extension\Twig\TwigFormulaLoader; 
use Assetic\Extension\Twig\TwigResource; 
use Assetic\Factory\LazyAssetManager; 

$am = new LazyAssetManager($factory); 

// enable loading assets from twig templates 
$am->setLoader('twig', new TwigFormulaLoader($twig)); 

// loop through all your templates 
foreach ($templates as $template) { 
    $resource = new TwigResource($twigLoader, $template); 
    $am->addResource($resource, 'twig'); 
} 

$writer = new AssetWriter('/path/to/web'); 
$writer->writeManagerAssets($am); 

이 스크립트는 덤프 파일을 정의하는 나뭇 가지 템플릿을 사용 : 당신은 여전히 ​​덤프 스크립트를 사용하여, 그것들을 생성해야합니다. $templates 변수와 $twig 변수를 정의해야합니다.

+0

감사합니다. florian :) 개발 중에 덤프 스크립트를 실행하는 대신에 대안이 있습니까? 자산을 변경하고 브라우저에서 테스트 할 때마다 스크립트를 실행해야하는 것은 그리 효율적이지 않습니다. – F21

+0

Assetic은 매우 유연하며 동시에 복잡하기 때문에 말하기 어렵습니다. :)하지만이 문서는 도움이 될 것입니다. https://github.com/kriswallsmith/assetic/blob/master/docs/en/build.md – Florian

+0

내가 나뭇 가지를 사용하고있을 때, 나는 내 자신의 출력 스크립트를 작성하는 것을 멀리하고 싶다. :) 나는 symfony를 사용하지 않기 때문에 폴더를 감시하고 변경 사항을 컴파일하는 symfony 콘솔 스크립트를 보았다. 지금 질문. 그러나 나는 해결책을 찾을 수 있는지 알아보기 위해 사냥을 할 것입니다. 심포니 번들에는 캐시 버스트 팅과 basePath 같은 것들이 있습니다. 그래서 아마도 직접 구현할 것입니다. 나는 이것이 파일이 생성되지 않는 이유에 대한 나의 문제를 해결했을 때 이것을 정확하게 표시 할 것이다. – F21

관련 문제