i (am) Blogger and U?

from X-periment to X-perience

Toko Online Barang Digital 1

Toko Online Barang Digital 1 adalah paket full-features aplikasi toko online khusus untuk benda/barang digital seperti aplikasi/software atau ebook pdf, doc dkk yang dapat digunakan unt [...]

Aplikasi Web: Pre-Order Online Shop

Pre-Order Online Shop adalah paket full-features aplikasi toko online yang dapat digunakan untuk menjalankan bisnis Anda secara online. Fasilitas unggulan yang terdapat pada aplikasi in [...]

Starter: Anime/Movie Sharing

Produk yang satu ini adalah aplikasi web yang dikhususkan bagi Anda yang ingin memiliki situs/web yang dengan fasilitas untuk menampilkan anime/movie dan dapat ditonton oleh para pengun [...]

Profile / Portofolio Pro 2

Aplikasi Profil / Portofolio Pro 2, software berbasis web untuk pengelolaan portofolio atau untuk menampilkan profil baik perusahaan maupun perseorangan. Selain itu software ini dapat p [...]

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 [...]

Badge/Watermark Image Generator

Badge/Watermark Image Generator adalah aplikasi web yang digunakan untuk membuat badge/watermark atau penanda pada foto/gambar yang biasanya digunakan misalnya pada penanda foto produk [...]

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. <<