Mit dem vorliegenden Modell können wir mit dem Schreiben der Logik für den Betrieb dieses Modells beginnen. Wir setzen diese Logik in eine Controller-Aktion ein. Für das Anmeldeformular-Beispiel lautet der entsprechende Code:
public function actionLogin() { $model=new LoginForm; if(isset($_POST['LoginForm'])) { // 收集用户输入的数据 $model->attributes=$_POST['LoginForm']; // 验证用户输入,并在判断输入正确后重定向到前一页 if($model->validate()) $this->redirect(Yii::app()->user->returnUrl); } // 显示登录表单 $this->render('login',array('model'=>$model)); }
Wie oben gezeigt, haben wir zunächst ein LoginForm
-Modellbeispiel erstellt Bei der Anfrage handelt es sich um eine POST-Anfrage (d. h. das Anmeldeformular wurde gesendet). Wir füllen $_POST['LoginForm']
mit den übermittelten Daten aus, validieren dann diese Eingabe und leiten den Browser des Benutzers zu den vorherigen Seiten um, die eine Authentifizierung erfordern. Wenn die Überprüfung fehlschlägt oder auf diese Aktion zum ersten Mal zugegriffen wird, rendern wir die Ansicht $model
. Den Inhalt dieser Ansicht erläutern wir im nächsten Abschnitt. login
Lassen Sie uns besonderes Augenmerk auf die folgende PHP-Anweisung legen, die in der AktionTipp: In der Aktion verwenden wir
login
, um die Seiten-URLYii::app()->user->returnUrl
abzurufen, für die zuvor eine Authentifizierung erforderlich war. Komponente ist ein CWebUser (oder seine Unterklasse), der Benutzersitzungsinformationen (z. B. Benutzername, Status) darstellt. Weitere Einzelheiten finden Sie unter Authentifizierung und Autorisierung.Yii::app()->user
erscheint: login
$model->attributes=$_POST['LoginForm'];
Eigenschaften werden von CModel definiert, das ein Array von Name-Wert-Paaren akzeptiert und jeden Wert dem entsprechenden Modellmerkmal zuweist. Wenn uns also attributes
ein solches Array liefert, entspricht der obige Code dem folgenden langen Absatz (vorausgesetzt, alle erforderlichen Funktionen sind im Array vorhanden): $_POST['LoginForm']
$model->username=$_POST['LoginForm']['username']; $model->password=$_POST['LoginForm']['password']; $model->rememberMe=$_POST['LoginForm']['rememberMe'];
-Ansicht erstellen, die ein HTML-Formular mit den erforderlichen Eingaben enthalten sollte.Hinweis: Damit uns ein Array anstelle einer Zeichenfolge übergeben kann, müssen wir bei der Benennung von Formularen eine Konvention befolgen Felder. Konkret benennen wir das Formularfeld, das dem Feature
Jetzt müssen Sie nur noch die$_POST['LoginForm']
in der Modellklasse entsprichtC
. Beispielsweise können wira
verwenden, um das Formularfeld zu benennen, das demC[a]
-Attribut entspricht.LoginForm[username]
username
login
Das Obige ist der offizielle Leitfaden zum Yii-Framework, Serie 18 – Verwenden von Formularen: Erstellen von Aktionen. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!