Skapa Action

När en modell finns på plats, vidtar arbetet med att skriva logik som behövs för att manipulera modellen. Vi placerar denna logik i en kontrollers åtgärd (action). I exemplet med login-formuläret erfordras följande kod:



I ovanstående exempel skapas först en instans av LoginForm; om inkommen request är av typen POST (underförstått att det ifyllda login-formuläret skickats), förses $model med inskickad data $_POST['LoginForm']; därefter valideras inmatningen och om denna befinns korrekt styrs användarens webbläsare till sidan som tidigare erfordrade autentisering. Om däremot valideringen misslyckas, eller åtgärden körs initialt, renderas login-vyn, vars innehåll kommer att beskrivas i nästa underavsnitt.

Tips: I login-åtgärden används Yii::app()->user->returnUrl för att få tag på URL:en till sidan som tidigare behövde autentisering. Komponenten Yii::app()->user är av typen CWebUser (eller nedärvd klass) vilken representerar information om användarsessionen (t.ex. användarnamn, status). För fler detaljer, se Autentisering och auktorisation.

Låt oss titta närmare på följande PHP-sats som förekommer i login-åtgärden:



Som beskrivits i Säkra upp attributtilldelningar, tilldelar denna rad modellen de data användaren skickat in. Propertyn attributes definieras av CModel vilken förväntar sig en array av namn-värdepar och tilldelar varje värde till motsvarande attribut i modellen. Så om $_POST['LoginForm'] ger oss en sådan array, är ovanstående kodrad ekvivalent med följande längre kodavsnitt (förutsatt att varje erforderligt attribut finns med i arrayen):



Märk: För att $_POST['LoginForm'] skall ge oss en array i stället för en sträng, håller vi oss till en konvention vid namngivning av vyns inmatningsfält. Mer detaljerat, ett inmatningsfält som motsvarar ett attribut a i modellklassen C, får nammnet C[a]. Till exempel använder vi LoginForm[username] som namn på inmatningsfältet som motsvarar attributet username.

Den återstående uppgiften är nu att skapa login-vyn vilken skall innehålla ett HTML-formulär med de erforderliga inmatningsfälten.

$Id: form.action.txt 1837 2010-02-24 22:49:51Z qiang.xue $