urlmanager hiddeninput formularios form example español activedropdownlist php assets yii2

php - hiddeninput - yii2 español



¿Cómo administro los activos en Yii2? (4)

Al principio, debe crear la clase SomeAsset en su aplicación / asset / folder con sus nuevos archivos js y css. Puede extender su AppAsset sobrecargando sus propiedades.

Siguiente uso esto en SomeController

use Yii; use app/assets/SomeAsset;

y en acción, algunos como este:

SomeAsset::register(Yii::$app->view);

Por ejemplo, creé una nueva página y me gustaría usar, por ejemplo, backbone.js, un archivo css personalizado y alguna colección de imágenes. ¿Dónde debería declarar todo esto en Yii2? Encontré el módulo AppAsset.php, pero esto es solo para archivos css / js y no he notado ningún cambio cuando mis archivos css / js y la ruta se declararon allí:

class AppAsset extends AssetBundle { public $basePath = ''@webroot''; public $baseUrl = ''@web''; public $css = [ ''css/site.css'', ''js/jquery.mobile-1.4.2.min.css'', ]; public $js = [ ''js/jsquery-2.1.0.min.js'', ''js/jquery.mobile-1.4.2.min.js'', ''js/script.js'', ]; public $depends = [ ''yii/web/YiiAsset'', ''yii/bootstrap/BootstrapAsset'', ]; }

¿Qué estoy haciendo mal?


Me tomó un tiempo averiguarlo, pero a continuación se muestra la parte relevante del código fuente de Yii2

if ($this->sourcePath !== null && !isset($this->basePath, $this->baseUrl)) { list ($this->basePath, $this->baseUrl) = $am->publish($this->sourcePath, $this->publishOptions); }

Entonces, Yii2 publicará los activos solo si se establece $sourcePath , y $basePath y $baseUrl no están configurados (!). Este último me hizo tropezar, y parece que lo mismo va para ti.

Así que tengo este AppAsset, que publica debidamente.

use yii/web/AssetBundle; class AppAsset extends AssetBundle { public $sourcePath = ''@app/assets/app''; public $css = [ ''css/openbook.css'', ''fontello/css/fontello.css'', ''fontello/css/animation.css'' ]; public $js = [ ''js/plug.openbook.js'', ''js/plug.interpret.js'', ''js/plug.drop.message.js'' ]; public $depends = [ // ''yii/web/YiiAsset'', // ''yii/bootstrap/BootstrapAsset'', ]; }

Por supuesto, tengo en el diseño principal

use frontend/assets/AppAsset; ... AppAsset::register($this);


Por experiencia personal, los activos son una de las partes de Yii que me parecieron extremadamente frustrantes.

Es difícil descubrir de manera confiable dónde estará el archivo y el cambio de ida y vuelta con el modo de depuración activado y desactivado creará más frustración.

Sugiero eliminar el manejo de activos y simplemente guardar todos los archivos JS en una carpeta, luego se puede incluir así:

Yii::app()->clientScript->registerScriptFile(''/js/jquery.jeditable.mini.js'');


para utilizar este AppAsset o cualquier otro, debe registrarlo en la vista

use app/assets/AppAsset; AppAsset::register($this);