ich habe ein Drop-Down Feld wo der Besucher auswählen kann wonach er suchen will.
Nun muss ich aber seine letzte Auswahl irgendwo abspeichern können, sprich wenn er in der DropDown Liste den zweiten Wert ausgewählt hat, dann soll das über alle Seiten hinweg ausgewählt bleiben.
Ich vermute das ich das im components/Controller.php unterbringen muss, jedoch weiß ich noch nicht wie.
Da gibts so viele Möglichkeiten. Wenn du das über Getter/Setter im Basiscontroller lösen willst, würd ich sowas als Ansatz wählen:
public function getSearchType()
{
return Yii::app()->user->getState('searchtype','defaultwert');
}
public function setSearchType($value)
{
Yii::app()->user->setState('searchtype',$value);
}
Es fehlt: Wert von $value in setSearchType prüfen, bevor man ihn reinschreibt. Ich verwende CWebUser::setState() nur aus Faulheit, weil ich mir da keine Gedanken über das Öffnen der Session machen brauche. Muss nicht optimal sein.
Irgendwie glaub ich übrigens schon deine nächste Frage zu kennen…
Wie du das am besten verknüpfst, hängt ganz davon ab, wo dieses Dropdown sich befindet und wie du die Daten übermitteln willst. Je nachdem, ob du ein eigenes Form Tag da rum setzt und das Formular onChange abschickst, ob das Dropdown Teil eines größeren SearchModels mit weiteren Attributen ist oder einfach nur über AJAX was zurückschicken soll, würd ich das ganz unterschiedlich angehen.
Das ist irgendwie doppelt gemoppelt?! Zunächst schalte ich es aus dann rufe ich die CGoogleApi auf. Würde es nicht mehr Sinn machen schon im scriptMap die Google URL aufzurufen?
Damit verhinderst du, dass jemals wieder eine Datei namens "jquery.js" vom ClientScriptManager mit Hilfe des AssetManagers veröffentlicht wird. Es wird also kein <script…> tag mehr für jquery automatisch in den Quelltext eingebaut.
Dürfte theoretisch für jQuery auch funktionieren, wenn du einfach die Google URLs statt false einsetzt. Probiers einfach mal aus.
CGoogleApi kann halt noch mehr, um die ganze API zu initialisieren (z.B. mit Google-API-Key usw.). Mehr dazu musst du aber selber mal bei Google nachlesen.