menu

Phalcon - Restruktur volt


Tutorial kemarin kita sudah mempelajari rules atau cara kerja route-controller-view pada phalcon, sekarang kita akan mempelajari struktur volt sehingga lebih struktural, oke langsung saja kita mulai experimentnya,

Pertama, buka halaman users yang sudah kita buat sebelumnya pada browser sehingga akan tampak gambar seperti ini,


Pada gambar diatas dapat dilihat ada margin kiri pada text "Hello codedoct!!!" sedangkan pada halaman read.volt kita hanya menambahkan code ini,


Adanya margin tersebut dikarenakan pada phalcon secara default setiap akan request halaman, halaman akan memanggil halaman /app/views/index.volt sebagai deafultnya, untuk memudahkan development dengan multi layouts kita akan ubah code index.volt pada path /app/views/ menjadi seperti ini,
{{ content() }}

Kemudian, pada path /app/views/layouts/ tambahkan file default1.volt dan isikan code berikut,
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <!-- The above 3 meta tags *must* come first in the head; any other head content must come *after* these tags -->
        <title>{{ title ? title|e|striptags : 'Untitled' }}</title>
        <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
    </head>
    <body>
        <div class="container">
            {% block content %}
            {% endblock %}
        </div>
        <!-- jQuery (necessary for Bootstrap's JavaScript plugins) -->
        <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
        <!-- Latest compiled and minified JavaScript -->
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    </body>
</html>
Pada code diatas kita sudah menambahkan condition untuk menampilkan title maka pada UserController.volt pada path /app/controllers/ kita ubah codenya menjadi seperti ini,
<?php

class UserController extends ControllerBase
{
    public function readAction()
    {
     $this->view->title = "Phalcon - User";
    }
}

Terakhir ubah code file read.volt pada path /app/views/user/ menjadi seperti ini,
{% extends 'layouts/default1.volt' %}

{% block content %}
 <br/>
 Hello codedoct!!!
{% endblock %}

Dapat dilihat pada code diatas, kita meng-extends halaman read.volt pada halaman default1.volt sehingga akan tampak seperti pada gambar dibawah,


===DONE!===
   

Laravel - RESTful project (API store data)


Pada tutorial sebelumnya kita sudah membuat API untuk method get yang digunakan untuk menampilkan list user yang ada, tutorial kali ini kita akan bereksperiment membuat API untuk method post yang digunakan untuk menambah data list user.

Oke langsung saja kita mulai experimentnya.
Pertama buat terlebih dahulu routes untuk method store-user, dengan menambahkan code pada path /protected/app/routes/api.php sehingga code-nya akan tampak seperti ini,
<?php 

//////////
// CRUD //
//////////
//pahamilah group route dibawah
Route::group(array('prefix' => 'crud'), function(){
 Route::get('users', 'Controller\Api\UserController@getUsers');
 Route::post('store-user', 'Controller\Api\UserController@storeUser');
});

Selanjutnya, tambahkan function method baru storeUser pada controller UserController pada path /protected/app/controllers/api/ sehingga code-nya akan tampak seperti ini,
<?php namespace Controller\Api;

use Model\User;
use \Response;
use \Validator;
use \Input;


class UserController extends \BaseController 
{
 public function getUsers()
 {
  $users = User::get();

  $response['status'] = 'OK';
  $response['result'] = $users;

  return Response::json($response);
 }

 public function storeUser()
 {
  $validator = Validator::make(
   Input::all(),
   array(
    "name"     => "required",
    "username"    => "required|unique:users,username",
    "email"     => "required|email|unique:users,email",
       "password"              => "required|min:6",
   )
  );
  // dd($_POST);
  if ($validator->passes()) {
     $user = User::storeOrUpdateUser(Input::all());
     // dd($_POST);
     $response['status'] = 'OK';
     $response['result'] = $user;
     return Response::json($response);
    }
    else {
     $response['status'] = 'ERROR';
     $response['message'] = $validator->messages();
     return Response::json($response);
    }
  }
}

Setelah itu edit model User.php pada path protected/app/models/ 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 Illuminate\Database\Eloquent\Model;
use \Eloquent;
use \Hash;

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');

 // Relation
    public function addresses()
    {
        return $this->hasMany('Model\Address');
    }

    public function role()
    {
        return $this->belongsTo('Model\Role');
    }

    public function company()
    {
        return $this->hasOne('Model\Company');
    }

    public static function storeOrUpdateUser(array $input, $user)
    {
     if (!$user) {
      $user = new User;     
     }
       
     $user->name     = $input['name'];
     $user->username = $input['username'];
     $user->email    = $input['email'];
     $user->password = Hash::make($input['password']);
     $user->save(); 

     return $user;
    }
}

Terakhir test menggunakan postman dengan memasukan url http://localhost/tempat-meletakkan-project-anda/api/crud/store-user dengan method POST dan body seperti gambar dibawah ini,


Sehingga saat kita klik Send maka hasilnya akan tampak seperti ini,



===DONE!===

Laravel - RESTful project (API get data)


Pada tutorial kali ini kita akan bereksperimen untuk membuat sebuah project RESTful dari project yang sebelumnya sudah kita buat, yaitu laravel. project RESTful ini akan dibuat dengan menggunakan framework laravel, mungkin jika ada waktu lebih untuk chapter microservice kita akan menggunakan Ruby, GoLang dan Phalcon, hehe..

Tutorial kali ini mengharuskan anda untuk menyelesaikan tutorial-tutorial laravel sebelumnya, agar paham terlebih dahulu sebelum anda masuk ke tutorial ini. Tapi jika anda sudah sangat paham tentang laravel, anda bisa mendownload langsung project laravel yang sudah jadi disini, untuk setupnya bisa lihat disini untuk ubuntu dan disini untuk windows.

Oke, jika anda sudah mendownload dan setup filenya sekarang buka file routes.php pada path protected/app/ edit 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.
|
*/

//--------------------------WEB---------------------------
Route::group(array('prefix' => ''), function() 
{
 require app_path().'/routes/web.php';
});

Route::group(array('prefix' => 'api'), function() 
{
 require app_path().'/routes/api.php';
});

Selanjutnya, pada path protected/app/routes/ edit file api.php menjadi seperti ini,
<?php 

//////////
// CRUD //
//////////
//pahamilah group route dibawah
Route::group(array('prefix' => 'crud'), function(){
 Route::get('users', 'Controller\Api\UserController@getUsers');
});

Kemudian, buat file controller baru dengan nama UserController pada path protected/app/controllers/api/ isikan code berikut,
<?php namespace Controller\Api;

use Model\User;
use \Response;
use \Validator;
use \Input;


class UserController extends \BaseController 
{
 public function getUsers()
 {
  $users = User::get();

  $response['status'] = 'OK';
  $response['result'] = $users;

  return Response::json($response);
 }
}

Untuk mengetesnya dapat dilakukan dengan cara install postman terlebih dahulu, postman sendiri merupakan salah satu plug-in dari chrome sehingga untuk dapat menginstallnya terlebih dahulu anda harus menginstall chrome kemudian cari plug-in postman untuk chrome dan pasang atau install pada chrome.

Cara menggunakan postman sangatlah mudah, buat akun terlebih dahulu kemudian Sign In,



Pada gambar diatas method yang kita gunakan adalah GET dan URL-nya merupakan url dari routes api yang baru saja kita buat. Tekan Send untuk test sehingga tampilannya akan tampak seperti gambar dibawah ini,



===DONE!===

How to - Setup project laravel on ubuntu server


Setiap kali setup project laravel pada server atau komputer baru pasti ada banyak sekali error yang muncul, dan untuk mempercepat proses setup tersebut sekaligus mendokumentasikannya codedoct akan membagikan cara setup semuanya

Pertama, setup dulu lamp servernya bisa lihat disini, selanjutnya clone project laravel caranya,
clone https://github.com/victra/laravel.git //ganti dengan nama project github yang akan di clone
cd nama_project_yang_baru_di_clone //masuk ke folder project
sudo chown -R nama_user_komputer:nama_user_komputer . //ubah user akses
composer install //jika terjadi error masukan syntax composer update --no-scripts

Kemudian migrate dan seed database,
buat database baru pada phpmyadmin caranya bisa lihat disini, cukup sampai create databasenya saja. Jika sudah, masukan nama database tadi pada path /app/config/database.php sehingga terlihat seperti ini,


Dan run code berikut pada terminal,
cd /var/www/html/path/project
php artisan migrate --seed
Sehingga akan tampak seperti ini,


tekan y kemudian [enter]

Setelah itu buat agar semua url project laravel kita bisa dibuka,
sudo vim /etc/apache2/sites-enabled/000-default.conf
//tambahkan code dibawah
<Directory "/var/www/html/path/project/anda">
         Allowoverride All
</Directory>
Sehingga akan tampak seperti ini,


Terakhir enable module rewrite dengan cara,
sudo a2enmod rewrite
sudo service apache2 restart

===DONE!===