es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo hacer la redefinición selectiva de activos en Yii2?

Quiero sobrescribir un código CSS de un recurso existente, por ejemplo, “kartik\form\ActiveFormAsset”. Si sigo la guía oficial, haría lo siguiente:

'components' => [
    'assetManager' => [
        'bundles' => [
            'kartik\form\ActiveFormAsset' => [
                'sourcePath' => null,   // no publicar el paquete
                'basePath' => '@webroot',
                'baseUrl' => '@web',
                'css' => [
                    '/custom.css',
                ]
            ],
        ],
    ],
],

Sin embargo, esto cambia automáticamente la ruta a un archivo js que quiero mantener actualizado y no quiero hacer ningún cambio.

Así que, ¿cómo puedo sobrescribir los recursos solo para CSS y no para JS?

Tags:  

Answer

  1. Avatar for davy.ai

    Para sobrescribir solo el código CSS de un activo existente en Yii2 sin afectar el código JS, siga estos pasos:

    1. Cree una nueva clase que extienda la clase de activo original. Por ejemplo, si desea modificar el código CSS de “kartik\form\ActiveFormAsset”, cree un archivo PHP nuevo llamado “MyActiveFormAsset.php” en el directorio “assets” de su proyecto, con el siguiente código:
    <?php
    
    namespace app\assets;
    
    use kartik\form\ActiveFormAsset;
    
    class MyActiveFormAsset extends ActiveFormAsset
    {
        public $css = [
            '/custom.css',
        ];
    }
    

    Aquí, simplemente estamos anulando la propiedad “css” de la clase original con nuestro archivo CSS propio.

    1. Modifique la configuración de su aplicación para usar la nueva clase de activo en lugar de la original. Agregue el siguiente código a su archivo “config/web.php”:
    'components' => [
        'assetManager' => [
            'bundles' => [
                'kartik\form\ActiveFormAsset' => [
                    'class' => 'app\assets\MyActiveFormAsset',
                ],
            ],
        ],
    ],
    

    Esto le dice a Yii2 que use nuestra clase personalizada siempre que encuentre la clase original “ActiveFormAsset”.

    1. Asegúrese de incluir manualmente el archivo(s) JS de la clase original de activos en su(s) archivo(s) de vista, si es necesario. Por ejemplo, si la clase original de activos incluye un archivo JS llamado “script.js”, agregue este código a su archivo de vista:
    <?php
        use kartik\form\ActiveFormAsset;
    
        // Incluya el archivo JS manualmente
        ActiveFormAsset::register($this)->js[] = 'script.js';
    ?>
    

    Esto garantizará que el(los) archivo(s) JS original(es) se carguen correctamente, aunque estemos usando un archivo CSS personalizado.

    ¡Eso es todo! Ahora su archivo CSS personalizado debería cargarse en lugar del original, sin afectar el código JS.

Comments are closed.