Ich habe ein Widget, das Assets verwendet. Der Asset sieht wie folgt aus:Widget-Assets Pfad zur Laufzeit ändern
class publicHeaderNavbarAsset extends AssetBundle {
public $sourcePath = '@app/components/@device';
public $css = [
'styles.css'
];
public $js = [];
public $depends = [];
}
Ich habe auch eine (Bootstrap) -Komponente, so definiert:
class Aliases extends Component {
public function init() {
Yii::setAlias('@device', Utils::device());
}
}
Utils::device()
ist eine Funktion, die UA des Geräts analysiert und gibt mobile
, tablet
oder desktop
, abhängig vom Gerätetyp.
Das Problem ist, dass Yii2 @device
nicht zu dem Wert konvertiert, den es hat. Ich dachte zuerst, dass es meine Schuld sein könnte, aber dann änderte ich die sourcePath
zu:
public $sourcePath = '@app/components/@app';
nur um zu sehen, ob das einen Fehler mit einem duplizierten Pfad (basepath/componenets/basepath
) auslösen, aber es kam nicht.
Gibt es eine Möglichkeit, die sourcePath
meines Asset zur Laufzeit ändern? Oder vielleicht machen Yii2 alle Aliase in sourcePath
analysieren?