i (am) Blogger and U?

from X-periment to X-perience

One-Page Portofolio / Gallery 3

One-Page Portofolio / Gallery 3 memiliki fitur-fitur yang sama persis dengan One-Page Portofolio / Gallery 1 tapi dengan theme/template yang berbeda.

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

Belajar Online: E-learning - Kuis & Soal

"Belajar Online: E-learning - Kuis & Soal", Software/aplikasi e-learning berbasis web yang dapat digunakan oleh pengajar/guru/pembimbing atau perorangan untuk membuat soal/kuis atau per [...]

Aplikasi Web: WebReview-Series 1

Web Review-Series 1 adalah paket aplikasi web yang memfasilitasi Anda yang ingin membuat situs yang berisi review dari berbagai hal. Review tentang suatu produk, Review tentang suatu te [...]

Aplikasi Web: URL Shortener Complete 2

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

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

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