Symfony - Controller
Der Controller ist für die Bearbeitung jeder Anforderung verantwortlich, die in die Symfony-Anwendung eingeht. Der Controller liest eine Information aus der Anfrage. Anschließend wird ein Antwortobjekt erstellt und an den Client zurückgegeben.
Laut Symfony DefaultController Klasse befindet sich bei “src/AppBundle/Controller”. Es ist wie folgt definiert.
DefaultController.php
<?php
namespace AppBundle\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
class DefaultController extends Controller {
}
Hier das HttpFoundation Komponente definiert eine objektorientierte Schicht für die HTTP-Spezifikation und die FrameworkBundle enthält den größten Teil der Basis-Framework-Funktionalität.
Objekt anfordern
Die Request-Klasse ist eine objektorientierte Darstellung der HTTP-Anforderungsnachricht.
Anforderungsobjekt erstellen
Anfrage kann mit erstellt werden createFromGlobals() Methode.
use Symfony\Component\HttpFoundation\Request;
$request = Request::createFromGlobals();
Sie können eine Anfrage mit Globals simulieren. Anstatt eine Anfrage basierend auf den PHP-Globals zu erstellen, können Sie auch eine Anfrage simulieren.
$request = Request::create(
'/student',
'GET',
array('name' => 'student1')
);
Hier das create() Methode erstellt eine Anforderung basierend auf einem URI, einer Methode und einigen Parametern.
Überschreiben eines Anforderungsobjekts
Sie können die globalen PHP-Variablen mit der Option überschreiben overrideGlobals()Methode. Es ist wie folgt definiert.
$request->overrideGlobals();
Zugriff auf ein Anforderungsobjekt
Auf die Anforderung einer Webseite kann in einem Controller (Aktionsmethode) mit zugegriffen werden getRequest() Methode des Basiscontrollers.
$request = $this->getRequest();
Identifizieren eines Anforderungsobjekts
Wenn Sie eine Anfrage in Ihrer Anwendung identifizieren möchten, “PathInfo"Die Methode gibt die eindeutige Identität der Anforderungs-URL zurück. Es ist wie folgt definiert.
$request->getPathInfo();
Antwortobjekt
Die einzige Voraussetzung für einen Controller ist die Rückgabe eines Antwortobjekts. Ein Antwortobjekt enthält alle Informationen aus einer bestimmten Anforderung und sendet sie an den Client zurück.
Das Folgende ist ein einfaches Beispiel.
Beispiel
use Symfony\Component\HttpFoundation\Response;
$response = new Response(‘Default'.$name, 10);
Sie können das Response-Objekt in JSON wie folgt definieren.
$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');
Antwortkonstruktor
Der Konstruktor enthält drei Argumente -
- Der Inhalt der Antwort
- Der Statuscode
- Ein Array von HTTP-Headern
Es folgt die grundlegende Syntax.
use Symfony\Component\HttpFoundation\Response;
$response = new Response(
'Content',
Response::HTTP_OK,
array('content-type' => 'text/html')
);
Beispielsweise können Sie das Inhaltsargument wie folgt übergeben:
$response->setContent(’Student details’);
Ebenso können Sie auch andere Argumente übergeben.
Antwort senden
Sie können eine Antwort an den Client senden, indem Sie die send()Methode. Es ist wie folgt definiert.
$response->send();
Um den Client zu einer anderen URL umzuleiten, können Sie die verwenden RedirectResponse Klasse.
Es ist wie folgt definiert.
use Symfony\Component\HttpFoundation\RedirectResponse;
$response = new RedirectResponse('http://tutorialspoint.com/');
FrontController
Eine einzelne PHP-Datei, die jede Anforderung verarbeitet, die in Ihre Anwendung eingeht. FrontController führt das Routing verschiedener URLs zu intern verschiedenen Teilen der Anwendung aus.
Im Folgenden finden Sie die grundlegende Syntax für FrontController.
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
$request = Request::createFromGlobals();
$path = $request->getPathInfo(); // the URI path being requested
if (in_array($path, array('', '/'))) {
$response = new Response(’Student home page.');
} elseif (‘/about’ === $path) {
$response = new Response(’Student details page’);
} else {
$response = new Response('Page not found.', Response::HTTP_NOT_FOUND);
}
$response->send();
Hier das in_array() Funktion durchsucht ein Array nach einem bestimmten Wert.