[Solved] Theme dauerhaft beibehalten?

Hallo Yii Community,

ich bin ganz neu dabei und hab auch schon meine erste Frage.

Ich habe vor eine Webseite zu erstellen, die in zwei Versionen existieren soll: Classic für Desktops/PCs und Mobile für Smartphone und andere Mobile Geräte.

Zu diesem Zweck habe ich mir zwei Themes angelegt und die main.php Config angepasst


'theme'=>'classic',

Als nächstes habe ich in meinem Sitecontroller eine neue action angelegt:


	

public function actionSwitchTheme()

{

	if(Yii::app()->theme->getName() == 'classic') {

		Yii::app()->theme = 'mobile';

	} else {

		Yii::app()->theme = 'classic';

	}

		$this->render('index');

}

Rufe ich diesen Controller nun auf funktioniert er auch bedingt. Das Theme wird für die aktuelle Seite geändert, klicke ich irgendein anderen Link der Seite an springt das Theme allerdings wieder auf classic.

Gibt es eine Möglichkeit das sich Yii merkt welches Theme aktiviert ist? Kann ich das vielleicht irgendwie in der Session des Users oder über Cookies speichern?

Ich bedanke mich jetzt schonmal für die Hilfe und hoffe ich hab mein Problem deutlich machen können.

LG,

Stefan

schau dir mal den lifecycle an http://www.yiiframework.com/doc/guide/1.1/en/basics.application#application-life-cycle

ich würde in deinem Switcher vielleicht Yii::app()->user->setState() sagen und in Controller::beforeAction() auswerten und behandeln.

Ok, wenn ich das richtig verstanden habe muss ich also bei jedem User Request das Theme setzen.

Die Methode die du vorgeschlagen hast funktioniert dann aber auch nur solange wie ich nur einen Controller habe richtig?

jeder Request lädt die config und dort setzt du das theme auf classic

im Ordner components ist per yiic webapp ein Controller, von dem alle weiteren abgeleitet werden können, den kannst du nehmen für die beforeAction()

Ahhh alles klar, der Groschen ist gefallen :) Vielen Dank für die rasche Hilfe.