Symfony - Pengontrol

Controller bertanggung jawab untuk menangani setiap permintaan yang masuk ke aplikasi Symfony. Pengontrol membaca informasi dari permintaan. Kemudian, membuat dan mengembalikan objek respons ke klien.

Menurut Symfony, DefaultController kelas terletak di “src/AppBundle/Controller”. Ini didefinisikan sebagai berikut.

DefaultController.php

<?php 
namespace AppBundle\Controller; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Response;  

class DefaultController extends Controller {  
}

Di sini HttpFoundation komponen mendefinisikan lapisan berorientasi objek untuk spesifikasi HTTP, dan FrameworkBundle berisi sebagian besar fungsionalitas kerangka "dasar".

Minta Objek

Kelas Request adalah representasi berorientasi objek dari pesan permintaan HTTP.

Membuat Objek Permintaan

Permintaan dapat dibuat menggunakan createFromGlobals() metode.

use Symfony\Component\HttpFoundation\Request; 
$request = Request::createFromGlobals();

Anda dapat mensimulasikan permintaan menggunakan Globals. Daripada membuat permintaan berdasarkan global PHP, Anda juga dapat mensimulasikan permintaan.

$request = Request::create( 
   '/student', 
   'GET', 
   array('name' => 'student1') 
);

Di sini create() metode membuat permintaan berdasarkan URI, metode, dan beberapa parameter.

Mengganti Objek Permintaan

Anda dapat mengganti variabel global PHP menggunakan overrideGlobals()metode. Ini didefinisikan sebagai berikut.

$request->overrideGlobals();

Mengakses Objek Permintaan

Permintaan halaman web dapat diakses di pengontrol (metode tindakan) menggunakan getRequest() metode pengontrol dasar.

$request = $this->getRequest();

Mengidentifikasi Objek Permintaan

Jika Anda ingin mengidentifikasi permintaan dalam aplikasi Anda, “PathInfo"metode akan mengembalikan identitas unik dari url permintaan. Ini didefinisikan sebagai berikut.

$request->getPathInfo();

Objek Respon

Satu-satunya persyaratan untuk pengontrol adalah mengembalikan objek Respon. Objek Respon menyimpan semua informasi dari permintaan yang diberikan dan mengirimkannya kembali ke klien.

Berikut ini adalah contoh sederhana.

Contoh

use Symfony\Component\HttpFoundation\Response; 
$response = new Response(‘Default'.$name, 10);

Anda dapat menentukan objek Respon di JSON sebagai berikut.

$response = new Response(json_encode(array('name' => $name))); 
$response->headers->set('Content-Type', 'application/json');

Pembuat Respon

Konstruktor berisi tiga argumen -

  • Isi tanggapan
  • Kode status
  • Larik header HTTP

Berikut ini adalah sintaks dasarnya.

use Symfony\Component\HttpFoundation\Response;  
$response = new Response( 
   'Content', 
   Response::HTTP_OK, 
   array('content-type' => 'text/html') 
);

Misalnya, Anda bisa meneruskan argumen konten sebagai,

$response->setContent(’Student details’);

Demikian pula, Anda juga bisa menyampaikan argumen lain.

Mengirim Tanggapan

Anda dapat mengirim tanggapan ke klien menggunakan send()metode. Ini didefinisikan sebagai berikut.

$response->send();

Untuk mengarahkan klien ke URL lain, Anda dapat menggunakan RedirectResponse kelas.

Ini didefinisikan sebagai berikut.

use Symfony\Component\HttpFoundation\RedirectResponse;  
$response = new RedirectResponse('http://tutorialspoint.com/');

FrontController

Satu file PHP yang menangani setiap permintaan yang masuk ke aplikasi Anda. FrontController mengeksekusi perutean URL yang berbeda ke bagian aplikasi yang berbeda secara internal.

Berikut ini adalah sintaks dasar untuk 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();

Di sini in_array() fungsi mencari array untuk nilai tertentu.