Heim >PHP-Framework >YII >Wozu dient der Yii-Framework-Controller?
Der Controller ist Teil des MVC-Musters. Es handelt sich um ein Objekt, das die Klasse yiibaseController erbt und für die Verarbeitung von Anfragen und die Generierung von Antworten verantwortlich ist.
Konkret analysiert der Controller nach der Übernahme der Kontrolle von der Anwendungsstelle die Anforderungsdaten und übermittelt sie an das Modell, übermittelt die Modellergebnisse an die Ansicht und generiert schließlich eine Ausgabeantwort Information.
Aktion Ein Controller kann eine oder mehrere Operationen haben.
Das folgende Beispiel zeigt einen Controller-Beitrag, der zwei Aktionen zum Anzeigen und Erstellen enthält:
namespace app\controllers; use Yii; use app\models\Post; use yii\web\Controller; use yii\web\NotFoundHttpException; class PostController extends Controller { public function actionView($id) { $model = Post::findOne($id); if ($model === null) { throw new NotFoundHttpException; } return $this->render('view', [ 'model' => $model, ]); } public function actionCreate() { $model = new Post; if ($model->load(Yii::$app->request->post()) && $model->save()) { return $this->redirect(['view', 'id' => $model->id]); } else { return $this->render('create', [ 'model' => $model, ]); } } }In der Operationsansicht (definiert als actionView()-Methode) ist der Code Fordern Sie zuerst die Modell-ID an, um das Modell zu laden. Wenn der Ladevorgang erfolgreich ist, wird die Ansicht mit dem Namen „view“ gerendert und angezeigt. Andernfalls wird eine Ausnahme ausgelöst. In der Operation create (definiert als actionCreate()-Methode) ist der Code ähnlich. Geben Sie zuerst die Anforderungsdaten in das Modell ein und speichern Sie dann das Modell Neu erstelltes Modell mit der ID-Ansichtsoperation, andernfalls wird die Erstellungsansicht angezeigt, die Benutzereingaben bereitstellt.
Das obige ist der detaillierte Inhalt vonWozu dient der Yii-Framework-Controller?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!