i (am) Blogger and U?

from X-periment to X-perience

Template Toko Online: Shopper

SHOPPER adalah HTML template (menggunakan Bootstrap 3.3.6) yang ditujukan untuk toko online. Template ini terdiri dari 6 halaman siap pakai yaitu home, product lists, shopping cart, det [...]

Aplikasi Web: Online Shop PRO 1

Toko Online Pro 1 adalah paket full-features aplikasi toko online yang dapat digunakan untuk menjalankan bisnis Anda secara online. Aplikasi ini memiliki fitur-fitur unggulan dan lengk [...]

Aplikasi Web: WebReview-Series 2

Web Review-Series 2 memiliki fitur-fitur yang sama persis dengan Web Review-Series 1 tapi dengan theme/template yang berbeda (theme yang dipakai pada versi ini adalah theme yang respons [...]

Aplikasi Web: URL Shortener Complete 1

URL Shortener Complete 1 adalah aplikasi yang membantu Anda untuk menjalankan situs/web yang memiliki fasilitas URL shortener. Pemendek URL sesuai namanya berfungsi untuk memangkas alam [...]

Web Profil / Portofolio Basic 1

Web Profil/Portofolio Basic 1, aplikasi/software untuk mengelola portofolio (atau bisa juga dijadikan sebagai photo/image gallery) atau untuk menampilkan profil perusahaan maupun perseo [...]

One-Page Portofolio / Gallery 1

One-Page Portofolio/Gallery adalah paket aplikasi web yang memfasilitasi Anda baik perseorangan maupun korporat yang ingin menampilkan/memajang portofolio/hasil karya/gallery kegiatan/p [...]

Tips Mensimulasikan CodeIgniter URL di Laravel (Bagian 3) - Modifikasi dan Penyesuaian

Category: Web DevelopmentDate:
Saturday, 23 Mar 2019


Ada beberapa hal yang dapat dimodifikasi dan disesuaikan dalam route di laravel. Kali ini akan dibahas beberapa di antaranya dan saya masih menggunakan contoh yang ada di tulisan sebelumnya Tips Mensimulasikan CodeIgniter URL di Laravel (Bagian 2)
[php]
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class ShowProfile extends Controller
{
public function __invoke($id,$param='')
{
return $this->{$id}($param='');
}

function profile($param='')
{
return 'profile test '.$param;
}

function akses($param='')
{
return 'akses test';
}

function wow($param='')
{
return 'wow test';
}
}
[/php]


Contohnya, kita bisa membatasi parameter {param} yang diinputkan hanya terbatas pada angka 0-9 dan nama method {id} hanya huruf a-z (lowercase).
[php]
#setting1
Route::get('user/{id}/{param}', 'ShowProfile')->where(['id' => '[a-z]+', 'param' => '[0-9]+']);
[/php]


Buka web browser lalu coba akses dan perhatikan perbedaan hasilnya http://contoh-nama-domain.com/user/profile/123 dan http://contoh-nama-domain.com/user/profile/abc dan http://contoh-nama-domain.com/user/profile

Apabila parameter {param} dan nama method {id} yang diinputkan keduanya hanya dibatasi huruf a-z (lowercase) saja maka setting kita ubah menjadi:
[php]
#setting1a
Route::get('user/{id}/{param}', 'ShowProfile')->where(array('id','param'), '[a-z]+');
[/php]


Pada contoh #setting1 nama method {id} dan parameter {param} harus diisi sehingga bila kita akses http://contoh-nama-domain.com/user akan menghasilkan error. Pada prakteknya nama method {id} memang harus diisi dan parameter {param} bisa saja dikosongkan. Untuk melakukannya kita ubah sedikit setting route dengan menambahkan "?" setelah parameter {param}
[php]
#setting2
Route::get('user/{id}/{param?}', 'ShowProfile')->where(['id' => '[a-z]+', 'param' => '[0-9]+']);
[/php]


Buka web browser lalu coba akses http://contoh-nama-domain.com/user/profile

Terkadang Anda perlu membuat form misalnya untuk halaman login yang datanya dikirimkan via post. Untuk melakukannya kita ganti get() menjadi post()
[php]
#setting3
Route::post('user/{id}/{param?}', 'ShowProfile')->where(['id' => '[a-z]+', 'param' => '[0-9]+']);
[/php]


Atau kalau dibutuhkan keduanya [get() dan post()] bisa kita gunakan match()
[php]
#setting4
Route::match(['get', 'post'], 'user/{id}/{param?}', 'ShowProfile')->where(['id' => '[a-z]+', 'param' => '[0-9]+']);
[/php]


Ketika route di-setting untuk bisa menerima data via post maka controller harus diubah sehingga datanya bisa dibaca.
[php]
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class ShowProfile extends Controller
{
public function __invoke($id, $param='',Request $request)
{
return $this->{$id}($param='',$request);
}

function profile($param='',$request)
{
return 'profile test '.$param;
}

function akses($param='',$request)
{
return 'akses test';
}

function wow($param='',$request)
{
return 'wow test';
}
}
[/php]


Misalkan method profile dikirimi data via post dengan field name "datapost" maka contoh untuk membaca datanya kira-kira seperti ini:
[php]
namespace App\Http\Controllers;

use App\Http\Controllers\Controller;

class ShowProfile extends Controller
{
public function __invoke($id, $param='',Request $request)
{
return $this->{$id}($param='',$request);
}

function profile($param='',$request)
{
$data_request = $request->post('datapost');
return 'profile test post: '.$data_request;
}
}
[/php]


No comments...
>> Comments closed. <<