2014-06-17 13 views
8

AsseticBundle'a proje varlıklarını nereye dökeceğinin söylenmesi için bir Gaufrette Akışı Sarıcısı kullanmaya çalışıyorum ancak bunları tanıyamıyorum.Gaufrette Akışı Sarmalayıcılarını AsseticBundle ile Kullanma

Bu gibi benim config_dev.yml ait knp_gaufrette bölümü nasıl göründüğünü: Ben düzgün kayıtlı olduğundan emin olmak için basit bir eylem kullanarak sarıcı test

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

    filesystems: 
     dev_adapter: 
      adapter: dev_adapter 

    stream_wrapper: ~ 

, ve iyi çalışıyor:

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')); 
} 

Sonra (çok config_dev.yml olarak) böyle assetic paket yapılandırmasını kurmak:

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

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] 

fazla bilgi:

symfony/symfony: 2.5.0
symfony/assetic-demeti: 2.3.0 Ben console assetic:dump --env=dev kullanarak öğeleri dökümü çalıştığınızda

Ancak, bu hatayı alıyorum
knplabs/knp-gaufrette-bundle: 0.1.7

+0

Bu sorunu çözdünüz mü? –

+0

Hayır, hala değil. –

+0

Benim durumumda, assetic: dump komutu bir dizin oluşturamadığı için açılır (php'de mkdir()). Dizinleri desteklemeyen bir nesne deposuna (OpenStack swift) dosya yüklemek için sarıcı kullanıyorum. Şu anda bu sorunu nasıl çözüleceğini bilmiyorum :( –

cevap

0

Aynı sorunun Amazon S3 yayın sarmalayıcıyı takarken de yaşıyordum.

Son çözümüm, aramayı mkdir() numaralı aramaya ve bunun geri dönüş değeri Assetic's DumpCommand'a işaret etmekti. Eğer bir bağımlılık yöneticisi kullanıyorsanız

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

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

    // ... 
} 

, yeni bir komut sınıfa komutu kopyalayıp gerekli satırları.

Yolda bulunmayan dizinlerin/kaynakların otomatik olarak oluşturulduğunu düşünüyorum.

Örnek: Dizin boş olan bir assets klasörüne sahiptir. s3://bucket-name/assets/css/style.css'a itme, css klasörü ve style.css dosyasını oluşturur.