ฉันเจอปัญหาเดียวกันมาก
ในระยะสั้น:
- ยินดีที่จะมี CSS ดั้งเดิมใน dir "ภายใน" (ทรัพยากร / สินทรัพย์ / css / a.css)
 
- ยินดีที่จะมีภาพใน dir "สาธารณะ" (แหล่งข้อมูล / public / images / devil.png)
 
- ด้วยความเต็มใจที่จะรับ CSS นั้นมาคอมไพล์ใหม่ในเว็บ / css / a.css และทำให้มันชี้ภาพใน /web/bundles/mynicebundle/images/devil.png
 
ฉันได้ทำการทดสอบด้วยชุดค่าผสมที่เป็นไปได้ทั้งหมดดังต่อไปนี้:
- @ หมายเหตุสัญกรณ์สัมพัทธ์
 
- แยกวิเคราะห์ด้วย cssrewrite โดยไม่มีมัน
 
- พื้นหลังภาพ CSS เทียบกับแท็ก <img> โดยตรง src = เป็นภาพเดียวกันกับ CSS
 
- CSS แยกวิเคราะห์ด้วย assetic และยังไม่มีการแยกวิเคราะห์ด้วยเอาต์พุตโดยตรง assetic
 
- และทั้งหมดนี้คูณด้วยการลองใช้ "public dir" (as 
Resources/public/css) กับ CSS และไดเรกทอรี "private" (as Resources/assets/css) 
สิ่งนี้ทำให้ฉันมีชุดค่าผสมทั้งหมด 14 ชุดบนกิ่งไม้เดียวกันและเส้นทางนี้เปิดตัวจาก
- "/app_dev.php/"
 
- "/app.php/"
 
- และ "/"
 
จึงให้การทดสอบ 14 x 3 = 42
นอกจากนี้ทั้งหมดนี้ได้รับการทดสอบการทำงานในไดเร็กทอรีย่อยดังนั้นจึงไม่มีทางที่จะหลอกโดยการให้ URL ที่สมบูรณ์เพราะจะไม่ได้ผล
การทดสอบเป็นภาพที่ไม่มีชื่อสองภาพจากนั้นจึงตั้งชื่อ div จาก 'a' ถึง 'f' สำหรับ CSS ที่สร้างจากโฟลเดอร์สาธารณะและตั้งชื่อว่า 'g ถึง' l สำหรับภาพที่สร้างจากเส้นทางภายใน
ฉันสังเกตสิ่งต่อไปนี้:
มีการทดสอบเพียง 3 รายการจากทั้งหมด 14 รายการเท่านั้นที่แสดงอย่างเพียงพอใน URL ทั้งสามรายการ และไม่มีมาจากโฟลเดอร์ "ภายใน" (ทรัพยากร / สินทรัพย์) เป็นข้อกำหนดเบื้องต้นที่จะต้องมี CSS PUBLIC สำรองจากนั้นสร้างด้วย assetic จากที่นั่น
นี่คือผลลัพธ์:
เปิดผลลัพธ์ด้วย /app_dev.php/

 
เปิดผลลัพธ์ด้วย /app.php/

 
เปิดผลลัพธ์ด้วย /

 
ดังนั้น ... เท่านั้น - ภาพที่สอง - Div B - Div C เป็นไวยากรณ์ที่อนุญาต
นี่คือรหัส TWIG:
<html>
    <head>
            {% stylesheets 'bundles/commondirty/css_original/container.css' filter="cssrewrite" %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
    {# First Row: ABCDEF #}
            <link href="{{ '../bundles/commondirty/css_original/a.css' }}" rel="stylesheet" type="text/css" />
            <link href="{{ asset( 'bundles/commondirty/css_original/b.css' ) }}" rel="stylesheet" type="text/css" />
            {% stylesheets 'bundles/commondirty/css_original/c.css' filter="cssrewrite" %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
            {% stylesheets 'bundles/commondirty/css_original/d.css' %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
            {% stylesheets '@CommonDirtyBundle/Resources/public/css_original/e.css' filter="cssrewrite" %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
            {% stylesheets '@CommonDirtyBundle/Resources/public/css_original/f.css' %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
    {# First Row: GHIJKL #}
            <link href="{{ '../../src/Common/DirtyBundle/Resources/assets/css/g.css' }}" rel="stylesheet" type="text/css" />
            <link href="{{ asset( '../src/Common/DirtyBundle/Resources/assets/css/h.css' ) }}" rel="stylesheet" type="text/css" />
            {% stylesheets '../src/Common/DirtyBundle/Resources/assets/css/i.css' filter="cssrewrite" %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
            {% stylesheets '../src/Common/DirtyBundle/Resources/assets/css/j.css' %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
            {% stylesheets '@CommonDirtyBundle/Resources/assets/css/k.css' filter="cssrewrite" %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
            {% stylesheets '@CommonDirtyBundle/Resources/assets/css/l.css' %}
                <link href="{{ asset_url }}" rel="stylesheet" type="text/css" />
            {% endstylesheets %}
    </head>
    <body>
        <div class="container">
            <p>
                <img alt="Devil" src="../bundles/commondirty/images/devil.png">
                <img alt="Devil" src="{{ asset('bundles/commondirty/images/devil.png') }}">
            </p>
            <p>
                <div class="a">
                    A
                </div>
                <div class="b">
                    B
                </div>
                <div class="c">
                    C
                </div>
                <div class="d">
                    D
                </div>
                <div class="e">
                    E
                </div>
                <div class="f">
                    F
                </div>
            </p>
            <p>
                <div class="g">
                    G
                </div>
                <div class="h">
                    H
                </div>
                <div class="i">
                    I
                </div>
                <div class="j">
                    J
                </div>
                <div class="k">
                    K
                </div>
                <div class="l">
                    L
                </div>
            </p>
        </div>
    </body>
</html>
container.css:
div.container
{
    border: 1px solid red;
    padding: 0px;
}
div.container img, div.container div 
{
    border: 1px solid green;
    padding: 5px;
    margin: 5px;
    width: 64px;
    height: 64px;
    display: inline-block;
    vertical-align: top;
}
และ a.css, b.css, c.css ฯลฯ : เหมือนกันทั้งหมดเพียงแค่เปลี่ยนสีและตัวเลือก CSS
.a
{
    background: red url('../images/devil.png');
}
โครงสร้าง "ไดเรกทอรี" คือ:
ไดเรกทอรี

ทั้งหมดนี้เกิดขึ้นเพราะฉันไม่ต้องการให้ไฟล์ต้นฉบับแต่ละไฟล์เปิดเผยต่อสาธารณะโดยเฉพาะหากฉันต้องการเล่นกับฟิลเตอร์ "น้อย" หรือ "sass" หรือที่คล้ายกัน ... ฉันไม่ต้องการให้ "ต้นฉบับ" ของฉันเผยแพร่เฉพาะ รวบรวมหนึ่ง
แต่มีข่าวดี . หากคุณไม่ต้องการมี "CSS สำรอง" ในไดเรกทอรีสาธารณะ ... อย่าติดตั้งด้วย--symlinkแต่ทำสำเนาจริงๆ เมื่อ "assetic" สร้าง CSS แบบผสมและคุณสามารถลบ CSS ดั้งเดิมออกจากระบบไฟล์และออกจากภาพ:
กระบวนการรวบรวม

หมายเหตุฉันทำสิ่งนี้เพื่อ--env=prodสิ่งแวดล้อม
ความคิดสุดท้ายเพียงไม่กี่:
พฤติกรรมที่ต้องการนี้สามารถทำได้โดยการมีรูปภาพในไดเรกทอรี "สาธารณะ" ในGitหรือMercurialและ "css" ในไดเร็กทอรี "assets" นั่นคือแทนที่จะให้พวกเขาอยู่ใน "สาธารณะ" ตามที่แสดงในไดเร็กทอรีให้ลองนึกภาพ a, b, c ... อาศัยอยู่ใน "assets" แทนที่จะเป็น "public" แทนที่จะมีโปรแกรมติดตั้ง / ตัวปรับใช้ของคุณ (อาจเป็นBash script) เพื่อวาง CSS ไว้ใน dir "สาธารณะ" ชั่วคราวก่อนที่assets:installจะดำเนินการจากassets:installนั้นassetic:dumpจากนั้นจึงดำเนินการลบ CSS ออกจากไดเรกทอรีสาธารณะโดยอัตโนมัติหลังจากที่assetic:dumpดำเนินการแล้ว สิ่งนี้จะบรรลุพฤติกรรมที่ต้องการในคำถามอย่างแน่นอน
 
อีกวิธีหนึ่ง (ไม่ทราบว่าเป็นไปได้) คือการสำรวจว่า "สินทรัพย์: ติดตั้ง" สามารถใช้ "สาธารณะ" เป็นแหล่งที่มาเท่านั้นหรืออาจใช้ "เนื้อหา" เป็นแหล่งที่มาเพื่อเผยแพร่ ซึ่งจะช่วยได้เมื่อติดตั้ง--symlinkตัวเลือกเมื่อพัฒนา
 
นอกจากนี้หากเราจะเขียนสคริปต์การลบออกจากผบ. "สาธารณะ" ความจำเป็นในการจัดเก็บไว้ในไดเรกทอรีแยกต่างหาก ("ทรัพย์สิน") จะหายไป พวกเขาสามารถอยู่ภายใน "สาธารณะ" ในระบบควบคุมเวอร์ชันของเราได้เนื่องจากจะถูกทิ้งเมื่อนำไปใช้งานต่อสาธารณะ นี้ยังช่วยให้การ--symlinkใช้งาน
 
แต่อย่างไรก็ตามข้อควรระวังในตอนนี้:เนื่องจากตอนนี้ต้นฉบับไม่ได้อยู่ที่นั่นอีกต่อไป (rm -Rf ) มีเพียงสองวิธีไม่ใช่สามวิธี div ที่ทำงาน "B" ไม่ทำงานอีกต่อไปเนื่องจากเป็นการเรียกเนื้อหา () โดยสมมติว่ามีเนื้อหาดั้งเดิม เฉพาะ "C" (อันที่คอมไพล์) เท่านั้นที่จะใช้งานได้
ดังนั้น ... มีเพียงผู้ชนะรอบสุดท้ายเท่านั้น: Div "C" อนุญาตให้ตอบคำถามในหัวข้อนี้ได้อย่างถูกต้อง: ในการรวบรวมโปรดเคารพเส้นทางไปยังรูปภาพและอย่าเปิดเผยแหล่งที่มาต้นฉบับต่อสาธารณะ
ผู้ชนะคือ C
