ฉันจะแก้ไข“ เพิ่ม myBundle ไปยังข้อยกเว้น symfony2 ของ asseticBundle config” ได้อย่างไร


84

เมื่อฉันพยายามใช้{% javascript %}แท็กTWIG เพื่อเชื่อมโยงไปยัง.jsไฟล์ของฉันมันจะส่งคืนฉันด้วยข้อยกเว้นต่อไปนี้:

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

index.html.twigลักษณะของฉัน:

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

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

Bundle ของฉันมีอยู่แล้วในไฟล์ config เมื่อฉันทำ:

php app/console config:dump-reference assetic

ฉันจะแก้ไขปัญหานี้ได้อย่างไร?


ตรวจสอบคำถามนี้และแนวทางแก้ไขที่เสนอ 2 ข้อ: stackoverflow.com/questions/10376946/…
Carlos Granados

มันน่าจะเป็น goo id ที่คุณเลือกคำตอบสำหรับคำถามนี้
tftd

คำตอบ:


176

ใช่ฉันลองแล้วและมันช่วยแก้ปัญหาให้ฉันได้ สำหรับใครบางคน (เช่นฉัน) ที่ไม่รู้ว่าจะเพิ่มอย่างไรในตอนแรกเพียงแค่:

  1. แก้ไข app/config/config.yml
  2. จากนั้นไปที่ assetic:
  3. ภายใต้การรับรอง: ไปที่ bundles: []
  4. และในbundles: []// พิมพ์ชื่อบันเดิลของคุณ

ตัวอย่างเช่นหากบันเดิลของคุณเป็นAcme\DemoBundleให้ทำดังต่อไปนี้

assetic:
   bundles: [ AcmeDemoBundle ]

AcmeDemoBundleไม่มีคำพูดรอบ แค่นั้นแหละ. (Symfony2)


14
หากจำเป็นกลุ่มเพิ่มเติมควรคั่นด้วยลูกน้ำ
Zoot

1
ฉันใช้ symfony2.3 ฉันเพิ่มบันเดิลไปยังอาร์เรย์ แต่ฉันยังคงมีข้อยกเว้นเหมือนเดิม แม้ว่าฉันจะแสดงความคิดเห็นเกี่ยวกับบันเดิลฉันก็ยังได้รับข้อความยกเว้นเหมือนกัน ฉันควรทำอย่างไรดี?
Dev DOS

หากคุณกำลังย้ายข้อมูลไปยัง prod และมีปัญหานี้อย่าลืมล้างแคชและถ่ายโอนเนื้อหาที่ได้รับการรับรอง: "php app / console cache: clear --env = prod --no-debug" และ "php app / console assetic: dump --env = prod --no-debug "
Bertrand

@ Dev DOS คุณพบวิธีแก้ปัญหาไหม .. ?
Euphor08

24

หากคุณต้องการให้การรวมกลุ่มเป็นค่าเริ่มต้นคุณสามารถแสดงความคิดเห็น (พร้อม #) บรรทัด bundles: []

เช่น:

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

มีผลข้างเคียงสำหรับการแสดงความคิดเห็นหรือไม่?
Permana

ไม่มีที่ฉันสามารถคิดได้ มันทำให้การประเมินรวมกลุ่มทั้งหมดในโครงการของคุณ บางทีมันอาจทำให้แอปของคุณช้าลง แต่โดยส่วนตัวแล้วฉันไม่เคยสังเกตเห็นความแตกต่างของความเร็วเลย
Tivie

10

บางครั้งคุณต้องการในการตัดสินใจเกี่ยวกับการบินแล้วคุณสามารถใช้การใช้DependencyInjection

ตัวอย่างการโหลดและจัดการการกำหนดค่า :

<?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);

        /* ... */
    }
}

คุณสามารถใช้ตรรกะที่ซับซ้อนมากขึ้นเพื่อจัดการการกำหนดค่า (ในขีด จำกัด ที่สมเหตุสมผล)


1
สิ่งนี้มีประโยชน์อย่างยิ่งหากคุณขยาย Bundle อื่นโดยใช้ Bundle inheritance
ไข้หวัดใหญ่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.