2014-06-17 16 views
8

Tôi đang cố gắng sử dụng một Gaufrette Stream Wrapper để nói với AsseticBundle nơi để đổ tài sản dự án nhưng tôi không thể làm cho nó nhận ra chúng.Sử dụng Gaufrette Stream Wrappers với AsseticBundle

Đây là cách phần knp_gaufrette của config_dev.yml của tôi trông giống như:

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

    filesystems: 
     dev_adapter: 
      adapter: dev_adapter 

    stream_wrapper: ~ 

Tôi đã thử nghiệm wrapper sử dụng một hành động đơn giản để đảm bảo rằng nó được đăng ký đúng cách, và nó hoạt động tốt:

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

Sau đó, tôi thiết lập cấu hình bó assetic như thế này (trong config_dev.yml quá):

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

Tuy nhiên, khi tôi cố gắng để đổ tài sản sử dụng console assetic:dump --env=dev tôi nhận được lỗi này:

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] 

Thông tin thêm:

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

+0

Bạn đã giải quyết được sự cố này chưa? –

+0

Không, vẫn không. –

+0

Trong trường hợp của tôi, nó xuất hiện vì lệnh ass dump: không thể tạo thư mục (mkdir() trong php). Tôi đang sử dụng trình bao bọc để tải tệp lên một cửa hàng đối tượng (OpenStack swift) không hỗ trợ thư mục. Không biết cách giải quyết vấn đề này vào lúc này :( –

Trả lời

0

Tôi đã gặp sự cố tương tự khi kết nối với trình bao bọc luồng Amazon S3.

Giải pháp cuối cùng của tôi là nhận xét cuộc gọi tới mkdir() và kiểm tra giá trị trả lại của nó là DumpCommand của Assetic.

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

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

    // ... 
} 

Nếu bạn đang sử dụng trình quản lý phụ thuộc, hãy sao chép lệnh vào một lớp lệnh mới, hãy nhận xét các dòng cần thiết.

Tôi nghĩ rằng mọi thư mục/tài nguyên không tồn tại trong đường dẫn sẽ được tạo tự động.

Ví dụ: Thư mục có thư mục assets trống. Đẩy tới s3://bucket-name/assets/css/style.css sẽ tạo thư mục cssstyle.css.

Các vấn đề liên quan