Assetic не создает никаких файлов - PullRequest
0 голосов
/ 12 февраля 2012

Я использую Assetic с Twig, но не с фреймворком symfony2.

Вот как настроен проект

/site
   /template
      /css

/public_html
  /css

Необработанный CSS хранится в /site/template/css, и я хочу сборкучтобы минимизировать CSS и вывести его на /public_html/css.

Вот как сборка устанавливается как расширение ветки

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

Затем в моем шаблоне:

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

Я вижу, что сборка сгенерировала уникальный URL в окончательном выводе:

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

Однако, если я посмотрю в /public_html/css, файлы никогда не будут созданы!

Я используюна сервере Windows 7 с apache и PHP нет проблем с записью файлов.

Что может быть причиной этого?

1 Ответ

3 голосов
/ 12 февраля 2012

Что вы сделали здесь, так это попросили сборщика сгенерировать URL для ресурсов (используя ветку).

Но URL-адреса ресурсов еще не указывают ни на один файл. Вам все еще нужно их сгенерировать, используя скрипт dump :

<?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.

...