2014-06-17 16 views
8

Próbuję użyć programu Gaufrette Stream Wrapper, aby poinformować AsseticBundle, gdzie należy zrzucić zasoby projektu, ale nie mogę ich rozpoznać.Używanie Owijarki strumieniowej Gaufrette z pakietem AsseticBundle

ten sposób odcinek knp_gaufrette mojego config_dev.yml wygląda następująco:

knp_gaufrette: 
    adapters: 
     dev_adapter: 
      local: 
       directory: /vagrant/test 
       create: true 

    filesystems: 
     dev_adapter: 
      adapter: dev_adapter 

    stream_wrapper: ~ 

Testowałem owijki za pomocą prostego działania, aby upewnić się, że jest prawidłowo zarejestrowany i działa prawidłowo:

public function thanksAction() 
{ 
    file_put_contents('gaufrette://dev_adapter/test.txt', "ABC\n", FILE_APPEND); 

    return new Response(file_get_contents('gaufrette://dev_adapter/test.txt')); 
} 

Potem skonfigurować assetic konfigurację wiązki tak (w config_dev.yml zbyt):

assetic: 
    read_from: gaufrette://dev_adapter 
    write_to: gaufrette://dev_adapter 

Jednak gdy próbuję zrzucić aktywa stosując console assetic:dump --env=dev otrzymuję ten błąd:

Dumping all dev assets. 
Debug mode is on. 

10:53:28 [dir+] gaufrette://dev_adapter/css 



    [RuntimeException]          
    Unable to create directory gaufrette://dev_adapter/css 



assetic:dump [--watch] [--force] [--period="..."] [write_to] 

Dalsze informacje:

symfony/symfony: 2.5.0
symfony/assetic-bundle: 2.3.0
knplabs/knp-gaufrette-bundle: 0.1.7

+0

Czy rozwiązałeś ten problem? –

+0

Nie, nadal nie. –

+0

W moim przypadku wyskakuje, ponieważ polecenie assetic: dump nie może utworzyć katalogu (mkdir() w php). Używam opakowania do przesyłania plików do magazynu obiektów (OpenStack swift), który nie obsługuje katalogów. Nie wiem, jak rozwiązać ten problem w tej chwili :( –

Odpowiedz

0

Miałem ten sam problem z podłączaniem streamera Amazon S3.

Ostatecznym rozwiązaniem było skomentowanie połączenia pod numerem mkdir() i sprawdzenie jego wartości zwracanej Asumpcja DumpCommand.

private function doDump(AssetInterface $asset, OutputInterface $stdout) 
{ 
    // ... 

    //if (false === @mkdir($dir, 0777, true)) { 
    // throw new \RuntimeException('Unable to create directory '.$dir); 
    //} 

    // ... 
} 

Jeśli używasz menedżera zależności, skopiuj polecenie do nowej klasy komendy, skomentuj niezbędne wiersze.

Myślę, że wszelkie katalogi/zasoby, które nie istnieją w ścieżce, są tworzone automatycznie.

Przykład: Katalog ma katalog assets, który jest pusty. Przesyłanie do s3://bucket-name/assets/css/style.css spowoduje utworzenie folderu css i pliku style.css.