yiiapi/docs/guide/de/form.action.txt
(开头部分) 3KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
Erstellen der Action
====================
Steht das Model bereit, kann man daran gehen, die Programmlogik zum Verändern des
Models umzusetzen. Der dazu benötigte Code wird in einer Controlleraction untergebracht.
Für unsere Anmeldeseite kann der Code so aussehen:
~~~
[php]
public function actionLogin()
{
$model=new LoginForm;
if(isset($_POST['LoginForm']))
{
// Erfasst die gesendeten Formulardaten
$model->attributes=$_POST['LoginForm'];
// Validiert die Daten und kehrt zur vorherigen Seite zurück,
// wenn die Prüfung erfolgreich war.
if($model->validate())
$this->redirect(Yii::app()->user->returnUrl);
}
// Zeigt das Anmeldeformular
$this->render('login',array('model'=>$model));
}
~~~
Zunächst wird eine Instanz des `LoginForms` erstellt. Liegen Formulardaten im
POST-Request vor (was heißt, dass das Formular abgeschickt wurde), wird
`$model` mit den Daten aus `$_POST['LoginForm']` befüllt. Ist die folgende
Validierung des Models erfolgreich, wird der Browser auf die Seite umgeleitet,
die der Besucher ohne die dafür nötige Anmeldung aufrufen wollte. Ergab die Prüfung
Fehler oder wird die Action zum ersten mal ausgeführt, wird der View `login`
gerendert. Darauf werden wir im nächsten Abschnitt näher eingehen.
> Tip|Tipp: Die `login`-Action benutzt `Yii::app()->user->returnUrl` um die URL
der Seite zu ermitteln, für die der Benutzer zunächst authentifiziert werden
musste. Die Komponente `Yii::app()->user` ist vom Typ [CWebUser] (oder einer
Kindklasse) und steht für Informationen der aktuellen Benutzersitzung
(z.B. Benutzername, Status). Weitere Einzelheiten dazu finden Sie unter
[Authentifizierung und Autorisierung](/doc/guide/topics.auth).
Sehen wir uns die folgende Anweisung aus obigem Code genauer an:
~~~
[php]
$model->attributes=$_POST['LoginForm'];
~~~
Wie im Abschnitt [Sichere Attributzuweisungen](/doc/guide/form.model#securing-attribute-assignments)
beschrieben, befüllt diese Codezeile das Model mit den gesendeten
Formulardaten. Die `attributes`-Eigenschaft ist in [CModel] definiert. Sie erwartet
ein Array aus Name-Wert-Paaren und weist jedem Modelattribut den entsprechenden Wert zu.
Geht man davon aus, dass in `$_POST['LoginForm']` ein Array in eben dieser
Form übergeben wird, könnte man statt dieser einen Zeile auch folgenden, etwas
länglichen Code verwenden (vorausgesetzt, dass jedes erforderliche Attribut im Array
vorhanden ist):
~~~
[php]
后面还有 15 行代码,购买后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明
AI 解读
登录后可用,每次 10 积分,解读结果公开显示在下面。
还没有人解读过这个文件。
