uso script referenciar qué llamar invoca incluir formas externos externo documentos cómo como cargar archivos archivo agregar javascript php css yii

referenciar - Incluir CSS, archivo javascript en Yii Framework



qué es un script de javascript externo (17)

¿Cómo incluir un archivo Javascript o CSS en Yii Framework?

Quiero crear una página en mi sitio que tenga una pequeña aplicación Javascript ejecutándose, así que quiero incluir archivos .js y .css en una vista específica.


Agregue el CSS y JS en la carpeta de diseño. Acceda a cualquier parte del proyecto

<!--// Stylesheets //--> <?php $themepath=Yii::app()->theme->baseUrl; Yii::app()->clientScript->registerCoreScript("jquery"); ?> <link href="<?php echo $themepath."/css/custom.css"; ?>" rel="stylesheet" media="all" /> <!--// Javascript //--> <?php Yii::app()->clientScript->registerCoreScript("jquery"); ?> </script> --> <script type="text/javascript" src="<?php echo $themepath; ?>/js/video.min.js"></script>


Además, si desea agregar activos de módulo tanto CSS como JS, puede usar la siguiente lógica. Vea cómo necesita indicar la ruta correcta para obtener getPathOfAlias :

public static function register($file) { $url = Yii::app()->getAssetManager()->publish( Yii::getPathOfAlias(''application.modules.shop.assets.css'')); $path = $url . ''/'' . $file; if(strpos($file, ''js'') !== false) return Yii::app()->clientScript->registerScriptFile($path); else if(strpos($file, ''css'') !== false) return Yii::app()->clientScript->registerCssFile($path); return $path; }

El código anterior se ha tomado de la aplicación Webshop basada en GPLed Yii.


Algo como esto:

<?php $baseUrl = Yii::app()->baseUrl; $cs = Yii::app()->getClientScript(); $cs->registerScriptFile($baseUrl.''/js/yourscript.js''); $cs->registerCssFile($baseUrl.''/css/yourcss.css''); ?>


En el marco Yii, puede incluir js y css utilizando el método siguiente.

Incluyendo CSS:

{Yii::app()->request->baseUrl}/css/styles.css

Incluyendo JS:

{Yii::app()->request->baseUrl}/js/script.js

Incluyendo imagen:

{Yii::app()->request->baseUrl}/images/logo.jpg

Nota: Al usar el concepto de disposición en yii, puede agregar css y js en lugar de especificar en la plantilla de vista.


En la vista, agregue lo siguiente:

<?php $cs = Yii::app()->getClientScript(); $cs->registerScriptFile(''/js/yourscript.js'', CClientScript::POS_END); $cs->registerCssFile(''/css/yourcss.css''); ?>

Tenga en cuenta el segundo parámetro cuando registra el archivo js, ​​es la posición de su secuencia de comandos, cuando lo establece CClientScript :: POS_END, permite que el HTML rinda antes de que se cargue javascript.


Esta fue también una manera fácil de agregar script y css en main.php

<script src="<?=Yii::app()->theme->baseUrl; ?>/js/bootstrap.min.js"></script> <link href="<?=Yii::app()->theme->baseUrl; ?>/css/bootstrap.css" rel="stylesheet" type="text/css">


Fácil en tu conf / main.php. Este es mi ejemplo con bootstrap. Puedes ver eso here

''components''=>array( ''clientScript'' => array( ''scriptMap'' => array( ''jquery.js''=>false, //disable default implementation of jquery ''jquery.min.js''=>false, //desable any others default implementation ''core.css''=>false, //disable ''styles.css''=>false, //disable ''pager.css''=>false, //disable ''default.css''=>false, //disable ), ''packages''=>array( ''jquery''=>array( // set the new jquery ''baseUrl''=>''bootstrap/'', ''js''=>array(''js/jquery-1.7.2.min.js''), ), ''bootstrap''=>array( //set others js libraries ''baseUrl''=>''bootstrap/'', ''js''=>array(''js/bootstrap.min.js''), ''css''=>array( // and css ''css/bootstrap.min.css'', ''css/custom.css'', ''css/bootstrap-responsive.min.css'', ), ''depends''=>array(''jquery''), // cause load jquery before load this. ), ), ), ),


Haga algo como esto agregando estas líneas a sus archivos de vista;

Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.''/path/to/your/javascript/file''); Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.''/path/to/css/file'');


Hay muchos métodos que podemos incluir javascript, css en su aplicación Yii . Hoy demostraré tres métodos simples y de ayuda.

Una forma sencilla de agregar js, css editando config / main.php

// application components ''components''=>array( // ... ''clientScript''=>array( ''packages''=>array( ''jquery''=>array( ''baseUrl''=>''//ajax.googleapis.com/ajax/libs/jquery/1/'', ''js''=>array(''jquery.min.js''), ) ), ), // ... ),

Usando getClientScript

Por lo general, agregamos en el bloque de código en el controlador o el diseño de su tema

$baseUrl = Yii::app()->baseUrl; $cs = Yii::app()->getClientScript(); $cs->registerScriptFile($baseUrl.''/js/yourscript.js''); $cs->registerCssFile($baseUrl.''/css/yourcss.css'');

O más corto:

Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.''/path/to/your/javascript/file'',CClientScript::POS_END); Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.''/path/to/css/file'');

Incluye archivos core js

Yii::app()->clientScript->registerCoreScript(''jquery''); Yii::app()->clientScript->registerCoreScript(''jquery.ui'');

Documento API más rápido de Yii: http://yii.codexamples.com/


Me gustó responder esta pregunta.

Hay muchos lugares donde tenemos archivos css y javascript, como en la carpeta css que está fuera de la carpeta protegida, archivos css & js de extensión y widgets que necesitamos incluir externamente en algún momento cuando usamos ajax mucho, archivos js y css de core marco que también debemos incluir externamente en algún momento. Entonces, hay algunas maneras de hacer esto.

Incluya archivos core js de framework como jquery.js, jquery.ui.js

<?php Yii::app()->clientScript->registerCoreScript(''jquery''); Yii::app()->clientScript->registerCoreScript(''jquery.ui''); ?>

Incluya archivos de la carpeta css fuera de la carpeta protegida.

<?php Yii::app()->clientScript->registerCssFile(Yii::app()->baseUrl.''/css/example.css''); Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.''/css/example.js''); ?>

Incluya archivos css y js desde la extensión o widgets.

Aquí fancybox es una extensión que se coloca debajo de la carpeta protegida. Los archivos que incluimos tienen ruta: / protected / extensions / fancybox / assets /

<?php // Fancybox stuff. $assetUrl = Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias(''ext.fancybox.assets'')); Yii::app()->clientScript->registerScriptFile($assetUrl.''/jquery.fancybox-1.3.4.pack.js''); Yii::app()->clientScript->registerScriptFile($assetUrl.''/jquery.mousewheel-3.0.4.pack.js''); ?>

También podemos incluir archivos core framework: Ejemplo: incluyo el archivo CListView js.

<?php $baseScriptUrl=Yii::app()->getAssetManager()->publish(Yii::getPathOfAlias(''zii.widgets.assets'')); Yii::app()->clientScript->registerScriptFile($baseScriptUrl.''/listview/jquery.yiilistview.js'',CClientScript::POS_END); ?>

  • Necesitamos incluir archivos js de zii widgets o extensión externamente a veces cuando los usemos en la vista renderizada que se reciben de una llamada ajax, ya que cargar cada vez que un nuevo archivo ajax crea conflicto al llamar a funciones js.

Para más detalles, mira el artículo de mi blog


Para incluir archivos JS y CSS en una vista específica, puede hacerlo a través del controlador pasando los parámetros false, true , que incluirán el CSS y JS, por ejemplo:

$this->renderPartial( ''yourviewname'', array( ''model'' => $model, false, true ) );


Puedes hacerlo agregando

Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl.''/path/to/your/script'');


También puede agregar scripts desde la acción del controlador. Simplemente agregue esta línea en un método de acción, luego esa secuencia de comandos aparecerá solo en esa vista:

Yii::app()->clientScript->registerScriptFile(Yii::app()->request->baseUrl . ''/js/custom.js'', CClientScript::POS_HEAD);

donde POS_HEAD dice a framework que ponga script en la sección principal


aquí hay una buena solución para usar CDN y scripts fuera de línea

Uso este código en cada aplicación que construyo, para que pueda usarlo en cualquier aplicación.

Scripts incluidos:

  • main.css
  • main.js
  • jQuery
  • jQuery / CD
  • Bootstrap 3.1
  • Bootstrap 3.1 / CDN
  • Fancybox 2
  • Fancybox 2 / CDN
  • FontAwesome 4
  • FontAwesome 4 / CDN
  • Script de Google Analytics

PASO 1:

poner este código en config / main.php

''params''=>array( ''cdn''=>true, // or false ...

PASO 2:

crea la carpeta resoreses en la carpeta de la aplicación raíz y coloca tu script allí

res/ --js --css --img --lib --style ..

PASO 3:

poner este código en components / controller.php

public function registerDefaults() { $cs = Yii::app()->clientScript; if (Yii::app()->params[''cdn'']){ $cs->scriptMap = array( ''jquery.js'' => ''//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'', ''jquery.min.js'' => ''//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js'', ); $cs->packages = array( ''bootstrap'' => array( ''basePath'' => ''application.res'', ''baseUrl'' => ''//netdna.bootstrapcdn.com/bootstrap/3.1.1/'', ''js'' => array(''js/bootstrap.min.js''), ''css'' => array(''css/bootstrap.min.css''), ''depends'' => array(''jquery'') ), ); } else { $cs->packages = array( ''bootstrap'' => array( ''basePath'' => ''application.res'', ''baseUrl'' => Yii::app()->baseUrl . ''/res/lib/bootstrap/'', ''js'' => array(''js/bootstrap.js''), ''css'' => array(''css/bootstrap.css''), ''depends'' => array(''jquery'') ), ); } $cs->registerPackage(''bootstrap''); $cs->registerCSSFile(Yii::app()->baseUrl . ''/res/style/main.css''); $cs->registerScriptFile(Yii::app()->baseUrl . ''/res/js/main.js''); } public function registerFancybox($buttons = false, $thumbs = false) { $cs = Yii::app()->clientScript; $cs->packages = array( ''fancybox'' => array( ''basePath'' => ''application.res'', ''baseUrl'' => Yii::app()->baseUrl . ''/res/lib/fancybox/'', ''js'' => array(''lib/jquery.mousewheel-3.0.6.pack.js'', ''source/jquery.fancybox.pack.js''), ''css'' => array(''source/jquery.fancybox.css''), ''depends'' => array(''jquery'') ), ''fancybox-buttons'' => array( ''basePath'' => ''application.res'', ''baseUrl'' => Yii::app()->baseUrl . ''/res/lib/fancybox/source/helpers/'', ''js'' => array(''jquery.fancybox-buttons.js''), ''css'' => array(''jquery.fancybox-buttons.css''), ), ''fancybox-thumbs'' => array( ''basePath'' => ''application.res'', ''baseUrl'' => Yii::app()->baseUrl . ''/res/lib/fancybox/source/helpers/'', ''js'' => array(''jquery.fancybox-thumbs.js''), ''css'' => array(''jquery.fancybox-thumbs.css''), ) ); $cs->registerPackage(''fancybox''); if ($buttons) $cs->registerPackage(''fancybox-buttons''); if ($thumbs) $cs->registerPackage(''fancybox-thumbs''); } public function registerFontAwesome(){ $cs = Yii::app()->clientScript; if (Yii::app()->params[''cdn'']): $cs->packages = array( ''fontAwesome'' => array( ''basePath'' => ''application.res'', ''baseUrl'' => ''//netdna.bootstrapcdn.com/font-awesome/4.0.0/'', ''css'' => array(''css/font-awesome.min.css''), ) ); else: $cs->packages = array( ''fontAwesome'' => array( ''basePath'' => ''application.res'', ''baseUrl'' => Yii::app()->baseUrl . ''/res/lib/font-awesome/'', ''css'' => array(''/css/font-awesome.min.css''), ) ); endif; $cs->registerPackage(''fontAwesome''); } public function registerGoogleAnalytics() { if($this->config(''settings_google_analytics_id'')){ Yii::app()->clientScript->registerScript(''GA''," (function(i,s,o,g,r,a,m){i[''GoogleAnalyticsObject'']=r;i[r]=i[r]||function(){ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) })(window,document,''script'',''//www.google-analytics.com/analytics.js'',''ga''); ga(''create'', ''".Yii::app()->params[''cdn'']."'', ''{$_SERVER[''SERVER_NAME'']}''); ga(''send'', ''pageview''); "); } }

ETAPA 4:

llama a las funciones de esta manera en //layouts/main.php

Yii::app()->getController()->registerDefaults(); Yii::app()->getController()->registerFontAwesome(); Yii::app()->getController()->registerGoogleAnalytics();


Si está utilizando Theme, entonces puede hacerlo a continuación.

Yii::app()->theme->baseUrl

incluir archivo CSS:

<link href="<?php echo Yii::app()->theme->baseUrl;?>/css/bootstrap.css" type="text/css" rel="stylesheet" media="all">

Incluir archivo JS

<script src="<?php echo Yii::app()->theme->baseUrl;?>/js/jquery-2.2.3.min.js"></script>

Si no estás usando el tema

Yii::app()->request->baseUrl

Use Like this

<link href="<?php echo Yii::app()->request->baseUrl; ?>/css/bootstrap.css" type="text/css" rel="stylesheet" media="all"> <script src="<?php echo Yii::app()->request->baseUrl; ?>/js/jquery-2.2.3.min.js"></script>


Usando la extensión de arranque

mi archivo css: themes / bootstrap / css / style.css

mi archivo js: root / js / script.js

en el tema / bootstrap / views / layouts / main.php

<link rel="stylesheet" type="text/css" href="<?php echo Yii::app()->theme->baseUrl; ?>/css/styles.css" /> <script type="text/javascript" src="<?php echo Yii::app()->request->baseUrl; ?>/js/script.js"></script>


<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.3/themes/smoothness/jquery-ui.css"> <script src="http://code.jquery.com/jquery-1.9.1.js"></script> <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script> <link rel="stylesheet" href="/resources/demos/style.css"> <script src="/news/js/popup.js"></script>

el enlace debe ingresar sobre la primera etiqueta php en la vista pag