Halaman Pertama dengan Symfony

by nur hidayat


Posted on 02, June 2020



Melanjutkan tulisan seri symfony yang lalu tentang instalasi symfony, kali ini saya lanjutkan untuk membuat halaman web dengan symfony. Symfony sangat fleksibel dalam pattern pemrograman. Secara default, symfony menggunakan paradigma MVC / Model View Controller. Namun dalam instalasi basic, kita hanya disediakan komponen dasar yang belum termasuk Model dan View (untuk versi 4 ke atas) yang keduanya bisa kita tambahkan sesuai kebutuhan kita. Adapun langkah-langkah untuk membuat contoller adalah sebagai berikut.

Membuat Controller

<?php // src/Controller/HomepageController.php

namespace App\Controller;

use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

/**
 * @author Nur Hidayatullah <kematjaya0@gmail.com>
 */
class HomepageController extends AbstractController
{
    
    /**
     * @Route("/hello", name="hello", methods={"GET"})
     */
    public function hello():Response
    {
        return new Response('hello ini controller pertama saya', Response::HTTP_OK);
    }
}

pada potongan kode di atas, kita membutuhkan beberapa Class tambahan yaitu Symfony\Component\Routing\Annotation\Route sebagai fungsi routing, Symfony\Component\HttpFoundation\Response untuk mengembalikan response dari controller yang kita buat dan class Symfony\Bundle\FrameworkBundle\Controller\AbstractController untuk fungsi bawaan controller yang disediakan oleh symfony.

pada kode di atas terdapat function hello() yang mempunyai outpur / keluaran berupa object dari class Response (baris 18), dan di dalam function kita buat object dari class Response yang menghasilkan output "hello ini controller pertama saya" dengan status 200 (HTTP OK). Pada baris 16 merupakan bagian untuk mendefinisikan Routing yang di tandai dengan tag @Routename="hello" merupakan nama routing yang akan dibaca oleh symfony. name ini unique, jadi apabila ada name yang sama maka akan di ambil salah satu. methods={"GET"} merupakan method yang diijinkan untuk melakukan request ke routing ini. "/hello" merupakan url yang akan nampak pada browser. Untuk melihat apakah settingan routing ini bekerja, kita bisa cek menggunakan console dengan menjalankan perintah berikut.

php bin/console debug:route

apabila sudah benar, maka akan muncul hasil seperti gambar berikut.

apabila dirasa benar namun belum keluar, maka coba install paket annotations menggunakan composer sepeti berikut.

composer require annotations

seperti pada gambar berikut.

apabila sudah selesai dan routing berhasil muncul di debug, coba buka menggunakan browser dan hasilnya sebagai berikut.

sampai disini kita sudah bisa membuat halaman menggunakan symfony. 

Controller dengan Bermacam Output

sekarang kita lanjut dengan membuat berbagai varian output controller. Masih dengan controller yang sama kita tambahkan beberapa routing. Seperti pada kode berikut.

<?php // src/Controller/HomepageController.php

namespace App\Controller;

use Symfony\Component\Routing\Annotation\Route;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

/**
 * @author Nur Hidayatullah <kematjaya0@gmail.com>
 */
class HomepageController extends AbstractController
{
    
    /**
     * @Route("/hello", name="hello", methods={"GET"})
     */
    public function hello():Response
    {
        return new Response('hello ini controller pertama saya', Response::HTTP_OK);
    }
    
    /**
     * @Route("/hello-json", name="hello_json", methods={"GET"})
     */
    public function helloJson()
    {
        $data = ['hello ini controller pertama saya'];
        return $this->json($data, Response::HTTP_OK);
    }
    
    /**
     * @Route("/hello-html", name="hello_html", methods={"GET"})
     */
    public function helloHtml():Response
    {
        return new Response('<h1>hello ini controller pertama saya</h1>', Response::HTTP_OK);
    }
    
    /**
     * @Route("/hello-param/{name}", name="hello_html", methods={"GET"})
     */
    public function helloParam($name):Response
    {
        return new Response('<h1>hello nama saya : '.$name.'</h1>', Response::HTTP_OK);
    }
}

yang jika i debug akan mengeluarkan output sebagai berikut.


dan berikut output masing-masing routing di web browser

http://localhost:8000/hello-json

http://localhost:8000/hello-html

http://localhost:8000/hello-param/Nur%20Hidayatullah 

sementara cukup sekian tulisan saya kali ini, kita lanjutkan pada tulisan selanjutnya. Semoga bermanfaat.

referensi : https://symfony.com/doc/current/page_creation.html

penulis: https://github.com/kematjaya0


Search
Other Tags

Halaman Pertama dengan Symfony