FastPlaz

FastPlaz

  • Docs
  • MVC
  • ORM
  • FTE
  • Help
  • Release

›Penggunaan

Pengantar

  • Ctrl+Alt+Del
  • Arsitektur (MVC)
  • Instalasi

Konsep & Fitur

  • ORM
  • Template Engine
  • Variabel Global
  • Method
  • Helper
  • Common Function

Penggunaan

  • Create New Project
  • Controller
  • Model
  • Routing

Latihan

  • Default Package
  • Akses Database
  • API (echo)
  • REST API

Showcase

  • Showcase
  • Gallery

Utilitas

  • Database Explorer
  • JSON Validator
  • Regex Tester
  • Reveal in Explorer/Finder

Routing

Routing merupakan suatu metode untuk memetakan URL ke action dari controller. Dengan menentukan route, Anda dapat memisahkan bagaimana aplikasi diimplementasikan dari bagaimana struktur URL-nya (permalink/slug).

Routing sebenarnya bisa dilakukan juga melalui file .htaccess dari Apache, atau sejenisnya dari web server lain. Namun FastPlaz mencoba mengakomodir semuanya, bisa dari .htaccess maupun dengan menggunakan konfigurasi routing.

Format

Format penulisan route di Pascal seperti ini:

Route['/permalink'] := TNamaController;

Penulisan permalink dilakukan dengan regex.

Regular Expression, sering ditulis/disebut juga Regex/Regexp, adalah deretan karakter spesial yang mendefinisikan sebuah pola dalam pencarian teks.

Implementasi

Anggap jika ada url http://domain/customer yang akan diolah oleh controller TCustomerController, maka kode pascal-nya akan seperti ini:

Route['/customer'] := TCustomerController;

Custom Routing

Tentunya kawan-kawan pernah melihat suatu url yang panjang tapi tetap menarik dilihat karena tidak menggunakan variabel di query string, seperti ini:

https://www.fastplaz.com/2014/12/wordpress-loader-contoh-aplikasi-fastplaz/

Biasa terlihat di situs-situs berita online, blog dan sejenisnya. Routing untuk uri tersebut kurang lebih akan sepert ini:

Route['^/([0-9]+)/([0-9]+)/(.*)/$'] := TNewsController; 

Demikian juga jika ingin menampilkan profil dari data kustomer menjadi http://localhost/customer/2/profile/.

// http://localhost/customer/2/profile/
Route['^/([0-9]+)/profile/$'] := TProfileModule; 

// handler uri: "/customer/{id}/"
Route['^/([0-9]+)'] := TCustomersModule; Route['/'] := TCustomersModule;

Membaca Data

Lalu bagaimana cara membaca datanya?

Mudah kok, sama seperti membaca query string seperti biasa, tetap menggunakan _GET, hanya saja kali ini menggunakan index sesuai urutan parameter regex-nya.

Misal untuk

Route['^/([0-9]+)/profile/$'] := TProfileModule; 

Maka untuk membaca nilai id dari kustomer cukup dengan

var
  customerID: string;

.
.  
customerID := _GET['$1'];

Sedangkan untuk routing link berita seperti contoh diatas

Route['^/([0-9]+)/([0-9]+)/(.*)/$'] := TNewsController; 

Maka cara membacanya:

var
  newsYear, newsMonth, newsTitle: string;

.
.  
newsYear := _GET['$1'];
newsMonth := _GET['$2'];
newsTitle := _GET['$3'];

Group Routing

Cara routing dan membaca data seperti di atas adalah cara yang paling sederhana, tapi terkadang menyulitkan dalam pembacaan variabelnya karena harus mengingat urutan indeksnya.

Membaca url seperti ini

https://www.fastplaz.com/2014/12/wordpress-loader-contoh-aplikasi-fastplaz/

tentu akan lebih mudah jika langsung membaca sebagai variabel year, month dan title.

Pola routing di dalam platform FastPlaz memungkinkan hal tersebut dengan memanfaatkan named group regex. Format penulisan regex-nya adalah (?P<name>regex). Maka routing untuk URL di atas akan menjadi:

Route['^/(?P<year>[0-9]+)/(?P<month>[0-9]+)/(?P<title>.*)/$'] := TNewsController; 

Sedangkan kode Pascal untuk membaca variabel tersebut akan menjadi seperti ini:

var
  year, month, title: string;

.
.  
year := _GET['year'];
month := _GET['month'];
title := _GET['title'];

Memang menulis routingnya akan sedikit panjang, tapi akan lebih memudahkan proses development.

FastPlaz, Ringan Tanpa Beban

← ModelDefault Package →
  • Format
  • Implementasi
    • Custom Routing
    • Membaca Data
    • Group Routing
FastPlaz
Docs
Getting StartedFastPlaz Theme EngineContribution
Community
User ShowcasePascal IndonesiaPascal Indonesia on Telegram
More
BlogGitHubStar
FastPlaz Web Framework
Copyright © 2023 FastPlaz - Built with Docusaurus