Yii2 วิธีเปิดใช้งานสินทรัพย์เริ่มต้นในบางโมดูลเท่านั้น

ฉันใช้แอป yii2 พื้นฐาน ฉันได้ปิดการใช้งาน boostrap css และ js ในการกำหนดค่า web.php แต่ฉันต้องการเปิดใช้งานภายในโมดูลที่เรียกว่าผู้ดูแลระบบ

ฉันลองเพิ่มแบบนี้สำหรับส่วนส่วนประกอบใน config.php ใต้โฟลเดอร์โมดูลผู้ดูแลระบบ แต่ก็ไม่มีโชค!

'assetManager' => [
       'bundles' => [
           'yii\bootstrap\BootstrapPluginAsset' => [
                'js'=> ['js/boostrap.js']
            ],
           'yii\bootstrap\BootstrapAsset' => [
               'css' => ['css/boostrap.min.css']
           ]
        ],
    ],

ฉันจะบรรลุเป้าหมายนี้ได้อย่างไร?


person xoons    schedule 09.12.2014    source แหล่งที่มา


คำตอบ (2)


ในเมธอด init() ของโมดูลของคุณ คุณสามารถแทนที่กลุ่มเนื้อหาที่มีอยู่ได้ดังนี้:

public function init() {
    \Yii::$app->assetManager->bundles['yii\bootstrap\BootstrapAsset'] = [
        'css' => ['css/bootstrap_NEW.css']
    ];
    parent::init();
}

ในตัวอย่างข้างต้น เราแทนที่ไฟล์ yii\bootstrap\BootstrapAsset CSS ในโมดูลของเรา ดังนั้นในโมดูลนี้ จะใช้ bootstrap_NEW.css แทนค่าเริ่มต้น

โปรดทราบว่าคุณสามารถทำได้ในแอปพลิเคชันทั่วโลก ไม่ใช่เฉพาะในวิธี init() ของโมดูล มันเป็นเพียงข้อเสนอแนะในการแก้ไขกรณีเฉพาะนี้

person Ali MasudianPour    schedule 09.12.2014

คุณควรใช้ชุดเนื้อหาเพื่อจัดการสิ่งนี้ ไม่จำเป็นต้องแก้ไข AssetManager

หากต้องการปิดการใช้งาน Bootstrap เพียงลบออกจาก $depends ใน AppAsset :

public $depends = [
    'yii\web\YiiAsset',
];

สร้างคลาส ModuleAsset ในโมดูลของคุณ:

class ModuleAsset extends \yii\web\AssetBundle
{
    public $depends = [
        'yii\bootstrap\BootstrapAsset',
    ];
}

ตรวจสอบให้แน่ใจว่าได้ลงทะเบียนในมุมมองของโมดูลของคุณ (คุณสามารถใช้เค้าโครงที่กำหนดเองได้):

ModuleAsset::register($this);

อ่านเพิ่มเติม: http://www.yiiframework.com/doc-2.0/guide-structure-assets.html

person soju    schedule 09.12.2014