Làm cách nào để sửa lỗi “Thêm myBundle vào cấu hình asseticBundle” trong ngoại lệ symfony2?


84

Khi tôi đang cố gắng sử dụng {% javascript %}thẻ TWIG để liên kết đến .jstệp của mình, nó sẽ trả lại cho tôi ngoại lệ sau:

An exception has been thrown during the compilation of a template ("You must add CompetitiongameBundle to the assetic.bundle config to use the {% javascripts %} tag in CompetitiongameBundle:game:index.html.twig.") in "CompetitiongameBundle:game:index.html.twig".

Của tôi index.html.twigtrông giống như:

{% javascripts 'CompetitiongameBundle/Resources/views/public/js/*'%}
    <script type="text/javascript" src="{{ asset_url }}" ></script>
{% endjavascripts %}
Hello {{ name }}!

<a href='{{ nexturl }}' >Login</a>

Gói của tôi đã có trong tệp cấu hình khi tôi thực hiện:

php app/console config:dump-reference assetic

Làm thế nào tôi có thể sửa lỗi này ?


Kiểm tra câu hỏi này và hai giải pháp được đề xuất: stackoverflow.com/questions/10376946/…
Carlos Granados,

Nó sẽ là id goo mà bạn thực sự chọn một câu trả lời cho câu hỏi này.
tftd

Câu trả lời:


176

Có, tôi đã thử và nó giải quyết được vấn đề cho tôi. Đối với một người (như tôi), những người ban đầu không biết cách thêm thì chỉ cần:

  1. biên tập app/config/config.yml
  2. sau đó đi đến assetic:
  3. under assetic: đi đến bundles: []
  4. và trong bundles: []// nhập tên gói của bạn

ví dụ: nếu gói của bạn là Acme\DemoBundle, thì hãy làm như sau

assetic:
   bundles: [ AcmeDemoBundle ]

Không có báo giá xung quanh AcmeDemoBundle. Đó là nó. (Symfony2)


14
Nếu cần, các gói bổ sung phải được phân tách bằng dấu phẩy.
Zoot

1
Tôi đang sử dụng symfony2.3, tôi đã thêm gói của mình vào mảng nhưng vẫn có ngoại lệ tương tự. Ngay cả khi tôi nhận xét các nhóm, tôi nhận được cùng một thông báo ngoại lệ. Tôi nên làm gì?
Dev DOS

Nếu bạn đang di chuyển sang sản phẩm và gặp sự cố này, đừng quên xóa bộ nhớ cache và kết xuất nội dung giả định của bạn: "php app / console cache: clear --env = prod --no-debug" và "php app / console assetic: dump --env = prod --no-debug "
Bertrand

@Dev DOS bạn có tìm thấy giải pháp không ..?
Euphor08,

24

Nếu bạn muốn assetic bao gồm các gói của mình theo mặc định, bạn có thể nhận xét (với #) dòng bundles: []

Ví dụ:

assetic:
    debug:          "%kernel.debug%"
    use_controller: false
    #bundles:        [ ]
    #java: /usr/bin/java

có bất kỳ tác dụng phụ cho các bó bình luận?
Permana

Không có gì mà tôi có thể nghĩ ra. Nó chỉ làm cho assetic bao gồm tất cả các gói trong dự án của bạn. Có thể nó có thể làm chậm ứng dụng của bạn, nhưng cá nhân tôi chưa bao giờ nhận thấy bất kỳ sự khác biệt nào về tốc độ.
Tivie

10

Đôi khi bạn cần đưa ra quyết định nhanh chóng, thì bạn có thể sử dụng DependencyInjection .

Ví dụ để tải và quản lý cấu hình :

<?php

namespace You\ExampeBundle\DependencyInjection;

use Symfony\Component\DependencyInjection\ContainerBuilder;

/* ... */

class YouExampeExtension extends Extension
{

    /* ... */

    public function load(array $configs, ContainerBuilder $container)
    {
        /* ... */

        $aAsseticBundle = $container->getParameter('assetic.bundles');
        $aAsseticBundle[] = 'YouExampeBundle';
        $aAsseticBundle[] = 'AnotheBundle';
        $container->setParameter('assetic.bundles', $aAsseticBundle);

        /* ... */
    }
}

Bạn có thể sử dụng logic phức tạp hơn để thao tác cấu hình (trong giới hạn hợp lý)


1
Điều này đặc biệt hữu ích nếu bạn mở rộng một Gói khác bằng cách sử dụng kế thừa Gói.
cúm

3

Bạn cần thêm gói của mình vào gói: [] row of assetic: section trong tệp app / config / config.yml (symfony 2.1)

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.