menu

Laravel - Composer classmap


Pada artikel kali ini kembali saya akan memberikan tutorial yang akan membuat proect laravel anda semakin elegan.,.,.

Pada sebuah project website dengan framework Laravel kita perlu membuat pengelompokan pada setiap class yang kita buat agar codingan lebih terlihat rapi.

Tutorial kali ini akan menjelaskan cara membuat foldering controller pada Laravel agar codingan terlihat lebih rapi,.,

Untuk bisa melakukan tutorial ini diharuskan anda sudah menerapkan tutorial hingga tahap ini.

Oke langsung saja kita mulai tutorialnya,

Pertama, buat folder bernama "crud" pada controller kemudian masukkan CreateController, DeleteController, ReadController, dan UpdateController kedalam folder tersebut seperti ini.


Jika kita membuka website anda dan mengklik submenu user seperti ini


Maka kita akan mendapatkan error seperti ini


Hal ini disebabkan karena kita belum membuat classmap pada route sehingga controller tidak dapat dikenali.

Selanjutnya buat classmap pada route dengan mengubah code routes.php pada path protected/app/routes.php menjadi seperti ini.
<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the Closure to execute when that URI is requested.
|
*/

Route::get('/', 'HomeController@showWelcome');

Route::get('users', 'Controller\Crud\ReadController@readUsers');

Route::get('create', 'Controller\Crud\CreateController@createUser');
Route::post('create', 'Controller\Crud\CreateController@createpostUser');

Route::get('update/{id}', 'Controller\Crud\UpdateController@updateUser');
Route::post('update/{id}', 'Controller\Crud\UpdateController@updatepostUser');

Route::get('delete/{id}', 'Controller\Crud\DeleteController@deleteUser');

kemudian tambahkan code "namespace Controller\Crud;" pada semua controller(CreateController, DeleteController, ReadController, dan UpdateController) yang ada pada folder crud yang baru saja kita pindahkan tadi menjadi seperti ini.
<?php namespace Controller\Crud;

class ReadController extends \BaseController 
{
 public function readUsers()
 {
  $users = User::all();
  return View::make('web.readUser')->with('data_user', $users);
 }

}


Terakhir jalankan dump autoload pada terminal seperti ini.


Jika terjadi error seperti ini.


Berarti project yang kita buat belum memiliki file composer.phar silahkan download disini, jika sudah download letakkan pada path protected pada project laravel kemudian jalankan dump-autoload lagi, hingga sukses denngan tampilan seperti ini.


===DONE!===

WHY?

1. Untuk error


Ini dikarenakan file model belum di beri class juga sehingga nama model dianggap sama dengan nama file migration cara mengatasinya dengan memberi code "&lt;?php namespace Model;" pada model User.php pada path protected/app/model/User.php seperti ini



2. Untuk error


Ini hanya warning saja bukan error jika ingin menghilangkannya tinggal lakukan saja apa yang diperintahkan yaitu tetap pada path protected kemudian ketik pada terminal "php composer.phar self-update"

3. Untuk error

Tambahkan saja code "use Model\User;" 


Tambahkan saja code "use \View;" 

Pada controller ReadController.php dan misalkan pada controller lain juga muncul error tersebut maka tambahkan juga code tersebut pada controller yang error.
Ingat! setiap controller mungkin membutuhkan Model dan  Library yang berbeda jadi sesuaikan dengan kebutuhan pada saat menggunakan code "use ...........".
Misal jika dibutuhkan Validator maka tinggal tambahkan "use \Validator;"
Sehingga code controller akan menjadi seperti ini.
<?php namespace Controller\Crud;

use Model\User;
use \View;

class ReadController extends \BaseController 
{
 public function readUsers()
 {
  $users = User::all();
  return View::make('web.readUser')->with('data_user', $users);
 }

}


4. Untuk error


Tambahkan saja code "use \Eloquent;" pada model User.php. Sama seperti controller Model juga memiliki kebutuhan Library yang berbeda-beda jadi sesuaikan setiap modelnya, pada contoh diatas model User.php error karena class Model\Eloquent tidak ditemukan jadi kita tambahkan saja code "use \Eloquent;".
Sehingga code model User.php akan menjadi seperti ini.
<?php namespace Model;

use Illuminate\Auth\UserTrait;
use Illuminate\Auth\UserInterface;
use Illuminate\Auth\Reminders\RemindableTrait;
use Illuminate\Auth\Reminders\RemindableInterface;
use \Eloquent;

class User extends Eloquent implements UserInterface, RemindableInterface {

 use UserTrait, RemindableTrait;

 /**
  * The database table used by the model.
  *
  * @var string
  */
 protected $table = 'users';

 /**
  * The attributes excluded from the model's JSON form.
  *
  * @var array
  */
 protected $hidden = array('password', 'remember_token');

}

Selebihnya silahkan pahamilah sendiri,,,
Jika ada yang kurang dimengerti atau ada error lain silahkan email(contact us) atau comment juga boleh.