Laravel 5.2 CRUD Sederhana : Bagian 2






















Dibagian kedua postingan ini kita akan mengerjakan routing dan bagaimana memasukan data kedalam database.

Postingan sebelumnya kita sudah merubah file welcome.blade.php. Sekarang kalian rename file tersebut menjadi home.blade.php, sebenarnya kalaupun tidak dirubah juga tidak akan berpengaruh dengan file lainnya, ini hanya masalah selera penamaan saja, asalkan kalian sesuaikan dengan yang ada di router.

Sekarang kalian sudah rename filenya, berikutnya kalian harus merubah routingnya.
Route::get('/', [
    'uses'  =>  'HomeController@index',
    'as'    =>  'home'
]);
Reload halaman website kalian, apakah kalian menemukan error seperti yang ada digambar dibawah ini?





















Jika kalian mendapatkan halaman error seperti yang ada pada gambar diatas, maka kalian sudah melakukanya dengan benar. Tapi jika kalian mendapatkan halaman dengan pesan error yang berbeda atau malah tidak terjadi ada pesan error, itu berarti kalian melakukan sesuatu yang keliru. Kenapa? karena kita belum membuat controller HomeController.php.

Yups, mari kita buat HomeController. Kita bisa membuatnya dengan cara manual atau dengan cara php artisan command. Kita akan membuatnya dengan cara yang kedua, biar keren gitu...
php artisan make:controller HomeController --resource
Silakan kalian ketik command diatas di CLI atau command line. Setelah selesai silakan buka file HomeController.php dan sesuaikan isinya dengan yang dibawah ini.
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

use App\Http\Requests;
use App\Http\Controllers\Controller;

class HomeController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {
        return view('home');
    }
}

Sip, kita sudah berhasil menghubungkan controller dengan routing dan view. Dibawah ini adalah routing untuk proses tambah data.
Route::get('student/add', [
    'as' => 'student.add', 'uses' => 'StudentController@create'
]);

Route::post('student/add', [
    'as' => 'student.post', 'uses' => 'StudentController@store'
]);

Sekarang kita membuat view untuk tambah data. 
@extends('templates.default')
@section('content')
    <div class="row">
        <div class="col-md-12">
            <div class="panel panel-default">
                <div class="panel-heading">Form Tambah Data Siswa</div>
                <div class="panel-body">
                    <form action=" {{ route('student.post') }} " method="POST" class="form-horizontal">
                        <div class="form-group">
                            <label for="" class="control-label col-md-3">Nama Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="name" class="form-control">
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="form-group">
                            <label for="" class="control-label col-md-3">Alamat Siswa</label>
                            <div class="col-md-6">
                                <input type="text" name="address" class="form-control">
                            </div>
                            <div class="col-md-3"></div>
                        </div>
                        <div class="col-md-3"></div>
                        <div class="col-md-6">
                            <button type="submit" class="btn btn-primary">Simpan</button>
                            <a href=" {{ route('student') }} " class="btn btn-warning">Batal</a>
                        </div>
                        <input type="hidden" name="_token" value="{{ Session::token() }}">
                    </form>
                </div>
            </div>
        </div>
    </div>
@stop
Kita sudah membuat form view untuk tambah data, sekarang kita akan membuat migrasi untuk databasenya. Sebelumnya kalian harus buat database dulu, setelah itu kalian buka file .env dan isikan data-data seperti contoh dibawah ini tentunya sesuaikan juga dengan kebutuhan sistem kalian masing-masing. Contoh dibawah nama databasenya adalah schools dengan username dan password phpmyadmin adalah root.
DB_HOST=127.0.0.1
DB_DATABASE=schools
DB_USERNAME=root
DB_PASSWORD=root
Sekarang kita buat migrasi untuk membuat tabelnya. Kita buat dengan cara perintah php artisan. Kalian hanya ketikan atau copy perintah dibawah ini ke command-line, kemudian tekan enter dan file migrasi sudah selesai dibuat. File dapat dilihat di database/migrations.
php artisan make:migration create_students_table --create=students
Setalah kalian buat migrationnya, kita tambahkan isi file tersebut dengan data dibawah ini.
Schema::create('students', function (Blueprint $table) {
    $table->increments('id');
    $table->string('name');
    $table->string('address');
    $table->timestamps();
});
Kita proses file migrasi yang sudah kita buat dengan perintah berikut.
php artisan migrate
Setelah berhasil dimigrate, kita lanjutkan dengan membuat model untuk databasenya. Seperti biasa kita dimudahkan dengan fasilitas php artisan command milik laravel, untuk membuat model kalian bisa lihat perintah dibawah ini.
php artisan make:model Students
Model Students bisa kalian akses di direktori app/Students.php. Sebenarnya kalian bisa membuat folder lagi di directory app seperti app/Model  untuk menampung semua model yang kita miliki agar direktori projek terlihat rapih, karena sekarang kita hanya membutuhkan satu model saja jadi kita tidak perlu membuat folder baru. Sekarang kalian tinggal tambahkan saja beberapa method seperti dibawah ini.
<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Students extends Model
{
    protected $table = 'students';

    protected $fillable = ['name', 'address'];
}
Kemudian import namespace model Students ke StudentController dengan cara kalian membuka file StudentController.php dan tambahkan baris kode seperti dibawah ini.
use App\Students;
Sekarang untuk proses selanjutnya kita buat controller untuk menambahkan data kedalam database.
public function store(Request $request)
    {

        $this->validate($request, [
            'name' => 'required',
            'address' => 'required'
        ]);

        Students::create([
            'name'      => $request->input('name'),
            'address'   => $request->input('address')
        ]);

        return redirect()
            ->route('student')
            ->with('info', 'Data berhasil disimpan');
    }
Sip, menyimpan data kedalam database selesai. Kalian bisa lihat didalam database masing-masing apakah data sudah benar-benar tersimpan atau belum. Sekarang yang terakhir kita butuhkan adalah pesan yang menunjukan kalau data berhasil disimpan.

Didalam folder resources/views/templates/partials kalian buat file baru dengan nama alerts.blade.php. Sesuaikan isi dengan baris kode dibawah ini.
@if (Session::has('info'))
    <div class="col-md-12">
        <div class="alert alert-success">
            <a href="" class="close" data-dismiss="alert" aria-label="close">&times;</a>
            {{ Session::get('info') }}
        </div>
    </div>
@endif
Kemudian kalian include file tersebut ke dalam file default.blade.php.
<body>
    @include('templates.partials.navbar')
    <div class="container">
        @include('templates.partials.alerts')
        @yield('content')
    </div>
</body>
Oh iya di postingan Laravel 5.2 CRUD Sederhana : Bagian 1 saya janji untuk mengubah file navbar.blade.php. Oke, berikut adalah baris kode yang sudah diubah.
<nav class="navbar navbar-default">
    <div class="container-fluid">
        <!-- Brand and toggle get grouped for better mobile display -->
        <div class="navbar-header">
            <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1" aria-expanded="false">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="{{ route('home') }}">Brand</a>
        </div>
        <!-- Collect the nav links, forms, and other content for toggling -->
        <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav">
                <li class="">
                    <a href="{{ route('student') }}">
                        Siswa <span class="sr-only">(current)</span>
                    </a>
                </li>
            </ul>
        </div><!-- /.navbar-collapse -->
    </div><!-- /.container-fluid -->
</nav>
Proses menyimpan data berhasil kita buat, untuk seri berikutnya kita akan mencoba untuk menampilkan data. Terimakasih guys sudah membaca postinganku. Jika ada kritik atau saran silakan kalian sampaikan lewat komentar.

Share this

Related Posts

Previous
Next Post »

5 comments

comments
April 19, 2016 at 8:04 AM delete This comment has been removed by the author.
avatar
April 19, 2016 at 8:04 AM delete This comment has been removed by the author.
avatar
April 19, 2016 at 8:07 AM delete

gan, kalo view tambah data itu di home.blade.php bukan

Reply
avatar
June 30, 2016 at 10:19 AM delete

gan isi dari add.blade.php nya apa ????
mohon pencerahannya

Reply
avatar
February 8, 2018 at 9:33 AM delete

Student controllernya yg mana ya? Trs controller tambah data itu di file apa?

Reply
avatar