EDITADO
Esta mañana me ha funcionado, lo único que cambié fue el use, donde cambié "appAsset" por "AppAsset". Recuerdo haberlo probado ayer y tampoco funcionaba, pero ahora va. De todos modos dejo el código corregido y el post original. Gracias.
POST ORIGINAL
Hola chic@s,
Soy nuevo en el foro y estoy intentando comenzar un proyecto básico de Yii2 con twig. Llevo toda la tarde probando e investigando cómo puedo incluir mi assets/AppAsset.php en el views/layouts/main.twig.
Mi appAsset:
<?php
namespace app\assets;
use yii\web\AssetBundle;
class AppAsset extends AssetBundle
{
public $basePath = '@webroot';
public $baseUrl = '@web';
//public $sourcePath = '@app/assets/';
public $js = [
];
public $depends = [
'yii\web\YiiAsset',
'yii\bootstrap\BootstrapAsset',
];
public $css = [
'css/site.css',
'css/bootstrap.min.css',
];
}
Y mi main.twig es:
{{ use('yii/helpers/Html') }}
{{ use('yii/bootstrap') }}
{{ #use('app/assets/appAsset')# }}
{{ use('app/assets/AppAsset') }}
{{ register_app_asset() }}
{{ this.beginPage() | raw}}
<!DOCTYPE html>
<html lang="{{app.language}}">
<head>
<meta charset="UTF-8"/>
<meta name="viewport" content="width=device-width, initial-scale=1">
{{ html.csrfMetaTags() | raw }}
<title>{{ html.encode(this.title) | raw }}</title>
{{ this.head() | raw }}
</head>
<body>
{{ this.beginBody() | raw }}
{% if app.user().isGuest() %}
{% else %}
{{ nav_bar_begin({
'brandLabel': 'Bugitor',
'options' : {
'class': 'navbar-inverse navbar-fixed-top',
}
})}}
{% set logoutTxt = ['Logout (', app.user().identity().username ]|join('') %}
{% set logoutTxt = [logoutTxt, ')']|join('') %}
{% set items = [
{'label': 'Home', 'url': '/site/index'},
{'label': 'About', 'url': '/site/about'},
{'label': 'Contact', 'url': '/site/contact'},
{'label': logoutTxt, 'url': '/site/logout', 'linkOptions': {'data-method': 'post'}}
]
%}
{{ nav_widget({
'options' : {
'class': 'navbar-nav navbar-right',
},
'items': items
}) }}
{{ nav_bar_end() }}
{% endif %}
<div class="wrap">
<div class="container">
{{ content | raw}}
</div>
</div>
<footer class="footer">
<div class="container">
<p class="pull-left">© My Company 2015</p>
<p class="pull-right">{{Yii.powered() | raw}}</p>
` </div>
</footer>
{{this.endBody() | raw}}
</body>
</html>
{{this.endPage() | raw}}
Si incluyo la línea de register_app_asset, me lanza el error: An exception has been thrown during the rendering of a template (“call_user_func_array() expects parameter 1 to be a valid callback, class ‘AppAsset’ not found”). He intentado cambiar el namespace, en el main.twig he probado con varias rutas del “use” y nada. Lo necesito porque, si no registro el appAsset, cuando no estoy logueado (y no llamo al nav_bar) no me aparece ningún css cargado y cuando me logueo, cuando se carga el nav_bar, me aparece con el bootstrap.css por defecto de Yii2. Alguna idea? Muchas gracias.