Symfony - คอนโทรลเลอร์

ผู้ควบคุมรับผิดชอบในการจัดการคำขอแต่ละรายการที่เข้ามาในแอปพลิเคชัน Symfony ผู้ควบคุมอ่านข้อมูลจากคำขอ จากนั้นสร้างและส่งคืนวัตถุตอบกลับไปยังไคลเอนต์

อ้างอิงจาก Symfony DefaultController ชั้นเรียนตั้งอยู่ที่ “src/AppBundle/Controller”. มีกำหนดดังนี้

DefaultController.php

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

class DefaultController extends Controller {  
}

ที่นี่ HttpFoundation คอมโพเนนต์กำหนดเลเยอร์เชิงวัตถุสำหรับข้อกำหนด HTTP และ FrameworkBundle มีฟังก์ชันการทำงานของเฟรมเวิร์ก "ฐาน" เป็นส่วนใหญ่

ขอวัตถุ

คลาสคำขอเป็นการแสดงข้อความคำร้อง HTTP ในเชิงวัตถุ

การสร้างวัตถุคำขอ

สามารถสร้างคำขอโดยใช้ createFromGlobals() วิธี.

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

คุณสามารถจำลองคำขอโดยใช้ Globals แทนที่จะสร้างคำขอตาม PHP globals คุณยังสามารถจำลองคำขอได้อีกด้วย

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

ที่นี่ create() เมธอดสร้างคำขอตาม URI วิธีการและพารามิเตอร์บางตัว

การลบล้างวัตถุคำขอ

คุณสามารถแทนที่ตัวแปรส่วนกลางของ PHP ได้โดยใช้ไฟล์ overrideGlobals()วิธี. มีกำหนดดังนี้

$request->overrideGlobals();

การเข้าถึงวัตถุคำขอ

คำขอของหน้าเว็บสามารถเข้าถึงได้ในคอนโทรลเลอร์ (วิธีการดำเนินการ) โดยใช้ getRequest() วิธีการของตัวควบคุมฐาน

$request = $this->getRequest();

การระบุวัตถุคำขอ

หากคุณต้องการระบุคำขอในใบสมัครของคุณ “PathInfo"วิธีการจะส่งคืนข้อมูลประจำตัวที่ไม่ซ้ำกันของ url คำขอ มีกำหนดดังนี้

$request->getPathInfo();

วัตถุตอบสนอง

ข้อกำหนดเดียวสำหรับคอนโทรลเลอร์คือการส่งคืนอ็อบเจ็กต์การตอบสนอง อ็อบเจ็กต์การตอบกลับเก็บข้อมูลทั้งหมดจากคำร้องขอที่กำหนดและส่งกลับไปยังไคลเอนต์

ต่อไปนี้เป็นตัวอย่างง่ายๆ

ตัวอย่าง

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

คุณสามารถกำหนดอ็อบเจกต์การตอบสนองใน JSON ได้ดังนี้

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

ตัวสร้างการตอบสนอง

ตัวสร้างมีสามอาร์กิวเมนต์ -

  • เนื้อหาตอบกลับ
  • รหัสสถานะ
  • อาร์เรย์ของส่วนหัว HTTP

ต่อไปนี้เป็นไวยากรณ์พื้นฐาน

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

ตัวอย่างเช่นคุณสามารถส่งผ่านอาร์กิวเมนต์เนื้อหาเป็น

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

ในทำนองเดียวกันคุณสามารถส่งผ่านข้อโต้แย้งอื่น ๆ ได้เช่นกัน

การส่งการตอบกลับ

คุณสามารถส่งการตอบกลับไปยังไคลเอนต์โดยใช้ไฟล์ send()วิธี. มีกำหนดดังนี้

$response->send();

ในการเปลี่ยนเส้นทางไคลเอ็นต์ไปยัง URL อื่นคุณสามารถใช้ไฟล์ RedirectResponse ชั้นเรียน

มีกำหนดดังนี้

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

FrontController

ไฟล์ PHP เดียวที่จัดการทุกคำขอที่เข้ามาในแอปพลิเคชันของคุณ FrontController ดำเนินการกำหนดเส้นทางของ URL ที่แตกต่างกันไปยังส่วนต่างๆภายในของแอปพลิเคชัน

ต่อไปนี้เป็นไวยากรณ์พื้นฐานสำหรับ 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();

ที่นี่ in_array() ฟังก์ชันค้นหาอาร์เรย์สำหรับค่าเฉพาะ