i (am) Blogger and U?

from X-periment to X-perience

One-Page Portofolio / Gallery 2

One-Page Portofolio / Gallery 2 memiliki fitur-fitur yang sama persis dengan One-Page Portofolio / Gallery 1 tapi dengan theme/template yang berbeda (theme yang dipakai pada versi ini a [...]

Aplikasi Web: Forum Mirip Twitter

Aplikasi ini merupakan aplikasi layaknya forum pada umumnya. Hal spesial dari aplikasi ini adalah adanya tambahan yang mirip dengan Twitter. Fitur-fitur yang dimiliki antara lain: foll [...]

Anime/Movie Community Sharing (FullCustom)

Produk ini adalah aplikasi web full-custom yang diperuntukkan bagi Anda yang ingin membuat situs/web yang dapat menampilkan anime/movie dan dapat ditonton oleh para pengunjung. Video an [...]

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

Profile / Portofolio Pro 1

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

Aplikasi Web: Online Shop PRO 2

Toko Online Pro 2 memiliki fitur-fitur yang sama persis dengan Toko Online Pro 1 tapi dengan theme/template yang berbeda.

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